MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Packages--Problem in evaluating functions from my own package!!!

  • To: mathgroup at smc.vnet.net
  • Subject: [mg67535] Re: Packages--Problem in evaluating functions from my own package!!!
  • From: albert <awnl at arcor.de>
  • Date: Fri, 30 Jun 2006 04:14:02 -0400 (EDT)
  • References: <e7vl0q$sn4$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

hi,

> I create a package for two importantes functions of my thesis. But when I
> load my package, sometimes I can evaluate my functions but all the time
> not.

do I get this right: sometimes it works sometimes not?

> Hereby a piece of my code:
> --------------------------
> 
> BeginPackage["`METHODECN`"];

this is not necessarily wrong, but probably not what what you want: note the
leading ` which makes this create the context Global`METHODECN`, _if_ the
context is Global` when you load the package. If you load the package from
another context it will be anothercontext`METHODECN`. Not sure, but could
be related to your problem. My suggestion is to use
BeginPackage["METHODECN`"] until you are very sure you know that you want
BeginPackage["`METHODECN`"]

> SetDirectory["I:\spaceMaths"];

Why that? It would not be necessary usually and if anything within your
package relies on Directory[] to be set to this path it  is very likely to
cause trouble. It is usually better to construct absolute pathnames for the
files you want to access or even better to take advantage of the search
mechanisms within mathematica to find files in $Path...

> psiplusCN::usage = "psiplusCN[cn] evaluate Psi+";
> psimoinsCN::usage = " psimoinsCN[cn,c]evaluate Psi-";
> 
> Begin["`Private`"]
> 
> Off[General::spell, General::spell1, General::precw];

in the package you won't need to switch off the spell messages, they will
not be issued for definitions in the package anyway. It would also be
cleaner to switch the messages on when you are done...

> WorkingPrecision -> 40;
> 
> (*** ** *** Module Psi + *******)
> psiplusCN[cn_] := Module[{i}, psiplus = Table[If[i == 1, 1, 0], {i, 1,
> cn}];
>     Return[psiplus];];
> 
> (*** ** *** Module ksi *******)
> ksi[x_] := Module[{&#958;, ksinum},
>     ksinum = FindRoot[1.0 - (x* ArcTanh[&#958;])/&#958; == 0.0, { &#958;,
>     0.01}, \
> WorkingPrecision -> 20];
>      &#958; = &#958; /. ksinum;
>     Return[&#958;] ;];
> 
> (*** ** *** Module Psi - *******)
> psimoinsCN[cn_, c_] := Module[{Zplus,
>     Zmoins, DomP, GlnP, GlnP2, Vp, Wn, delta, integpp, ...... M, A, Y,
>     &#958;},
> 
> ....
> 
> Return[LinearSolve[M, Y]]];
> End[];
> EndPackage[];

looks ok...
 
> When I load my package:
> SetDirectory["I:\spaceMaths"];

Have you tried to put your package file into one of Application-Directories,
e.g. ToFileName[{$UserAddOnsDirectory},"Applications"] ?
What you actually need to do so that mathematica finds the package is to put
it in one of the directories that are listed in $Path. Since "." is among
these directories the SetDirectory usually works, but is more like a side
effect of changing the working directory... 

One more thing: what kind of drive is I: ? if it is a network drive it might
be that the drive is not always available. Also you should use a double \\
after I:, otherwise you will have problems with some characters following
it like \n. I would also recommend to use small letters only for your
directories and filenames as long as you see problems with files that are
not found...

> << METHODECN.m;

note that you can (and probably should) use:
<< METHODECN`
or 
Needs["METHODECN`"]

> psiplusCN[1]
> psimoinsCN[1, 0.8]
> 
> I get this error message:
> Get::noopen, Cannot open "METHODECN.m

if you get this, the rest can't work. It is a clear indicator that for
whatever reason mathematica cannot find the file. Check if the directory it
is in is listed in $Path at the moment you are trying to load it. Most
probably it is not and that's the reason why it does not work. If you rely
on changing the directory to find the package you will need to make sure
that at the time the package is loaded, the working directory (that is the
output of Directory[]) is still "I:\\spaceMaths".

hth

albert


  • Prev by Date: Color names and the 10 elementary colors?
  • Next by Date: RE: Packages--Problem in evaluating functions from my own package!!!
  • Previous by thread: RE: Packages--Problem in evaluating functions from my own package!!!
  • Next by thread: RE: Packages--Problem in evaluating functions from my own package!!!