Re: Why Plot cannot run under package?
- To: mathgroup at smc.vnet.net
- Subject: [mg39636] Re: Why Plot cannot run under package?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 27 Feb 2003 00:27:19 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <b3hshl$ild$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, it fail, because >Plot[CurveEquation[x], RootLocation, MaxBend -> 10, > PlotDivision -> 20] refer to a symbol x in the private context (Enhancements`DiscoverRoots1`Private`x) of the package while the list in the RootLocation argument refer to the global symbol x (Global`x) You may use DiscoverRoots1[CurveEquation_, {x1_,x2_}] := Module[{pp,x}, (pp = Plot[CurveEquation[x], {x,x1,x2}, MaxBend -> 10, PlotDivision -> 20]; )]; and all works fine. Regards Jens liwen liwen wrote: > > I want to use the Plot function in Package,so I try the following package: > > > > BeginPackage["Enhancements`DiscoverRoots1`"] > > DiscoverRoots1::usage = " Try the use of Plot in package " > > Begin["`Private`"] > > DiscoverRoots1[CurveEquation_, RootLocation_] := > Module[{pp}, > (pp = > Plot[CurveEquation[x], RootLocation, MaxBend -> 10, > PlotDivision -> 20]; > )]; > > End[] > EndPackage[ > > I run: > Needs["Enhancements`DiscoverRoots1`"] > > It is OK. > > But I try: > > Curve1[x_] = Sin[x]; > kk = {x, 0, 40}; > DiscoverRoots1[Curve1, kk] > > It alert such message: > > Plot::plnr: Curve1[Enhancements`DiscoverRoots1`Private`x] is not a \ > machine-size real number at x = 1.6666666666666667`*^-6. > > Plot::plnr: Curve1[Enhancements`DiscoverRoots1`Private`x] is not a \ > machine-size real number at x = 1.6226796629166318`. > > Plot::plnr: Curve1[Enhancements`DiscoverRoots1`Private`x] is not a \ > machine-size real number at x = 3.3923519943749474`. > > General::stop: Further output of Plot::plnr will be suppressed during this \ > calculation. > > But if I run the function under *.nb file, it can runs well. > > In[1]:= > DiscoverRoots1[CurveEquation_,RootLocation_]:= > Module[{pp},(pp= > Plot[CurveEquation[x],RootLocation,MaxBend\[Rule]10, > PlotDivision\[Rule]20];)]; > > In[2]:= > Curve1[x_]=Sin[x]; > kk={x,0,40}; > DiscoverRoots1[Curve1,kk] > > I do not know why the program fails when it is in Package format. > Please help. > > Regards, > Liwen