Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Joe Riel Newsgroups: comp.soft-sys.math.maple Subject: Re: Plot problem with function Date: Thu, 28 Jul 2011 14:31:02 -0700 Organization: A noiseless patient Spider Lines: 84 Message-ID: <87ipqmf5yh.fsf@san.rr.com> References: <1311880181.170189@athprx04> <87mxfyfc31.fsf@san.rr.com> <1311887488.649668@athprx03> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx04.eternal-september.org; posting-host="7daQ3AF9ALJlnU9jGWSG5Q"; logging-data="30433"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/4b5qNo0D1jHnQkc8AvpZW" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Cancel-Lock: sha1:b781H9kZdvJLGKMPS8O7VV+qBPI= sha1:l9vgDB/HpHl4vtMufB3zzaj6VWA= Xref: x330-a1.tempe.blueboxinc.net comp.soft-sys.math.maple:221 "I.N. Galidakis" writes: > Joe Riel wrote: >> "I.N. Galidakis" writes: >> >>> I am having some problems with Maple 9 when plotting a certain >>> function. The function is: >>> >>>> HW:=proc() >>>> local y,n,c,s,p,sol,i,aprx,dy,dist,r,oldr,newr,fun,dfun,eps; >>>> if nargs<2 then ERROR("At least two arguments required.") fi; >>>> n:= args[-1];y:=args[-2];c:= [args[1..-3]]; >>>> if y=0 then 0 else >>>> dist:=infinity; >>>> eps:=1e-32; >>>> fun:= 1; >>>> for i from 1 to nargs-2 do fun:= exp(c[i]*fun) od; >>>> fun:= z*fun-y; >>>> dfun:=diff(fun,z); >>>> s:=series(fun,z,n); >>>> p:=convert(s,polynom); >>>> sol:={fsolve(p=0,z,complex)}; #complex? >>>> for i from 1 to nops(sol) do >>>> aprx:=evalf(subs(z=op(i,sol),fun)); >>>> dy:=evalf(abs(aprx)); >>>> if dy<=dist then r:=op(i,sol);dist:=dy;fi; >>>> od; >>>> #start Newton with approximate zero found. >>>> oldr:=r; >>>> newr:=r-evalf(subs(z=r,fun)/subs(z=r,dfun)); >>>> for i from 1 to 1000 while (abs((oldr-newr)/oldr)>eps) do >>>> oldr:=newr; >>>> newr:=newr-evalf(subs(z=newr,fun)/subs(z=newr,dfun)); >>>> od; >>>> newr; >>>> fi; >>>> end: >>> >>> When I try to plot it (in this case the arguments make it equivalent >>> to arcsin) I get: >>> >>>> with(plots): >>>> plot(HW(log(sin(z)/z),y,10),y=-1..1); >>> Error, (in fsolve) y is in the equation, and is not solved for >>> >>> while if I do a: >>> >>>> N:=50;x1:=-1;x2:=1; >>>> x:=n->x1+abs(x2-x1)/N*n; >>>> L:=[seq([x(n),HW(log(sin(z)/z),x(n),10)],n=0..N)]: >>>> plot(L,scaling=constrained); >>> >>> It works (shows the graph of arcsin). >>> >>> Individual values seem to be calculated correctly. For example: >>> >>>> HW(log(sin(z)/z),0.245,10); >>> .247519692533815916885429116210 >>> >>> Does anyone know why the plot command doesn't work with this >>> function? >> >> The cause is premature evaluation. The plot procedures (as most Maple >> procedures) first evaluates its arguments. But >> >> HW(log(sin(z)/z),y,10); >> >> raises the error because y is not numeric. An easy solution is >> to delay the evaluation of HW. You can do that via >> >> plot('HW'(log(sin(z)/z),y,10),y=-1..1); > > Thanks. I thought of premature evaluation, but I didn't know what > delimiters to put around HW. On Maple V rel 5, it was `HW`(..) so I > tried that and it didn't work. > > Now it seems to be 'HW'(...). The interpretation of backquotes and forward quotes has not changed. Backquotes create a symbol from non-alphanumeric characters. Forward quotes delay evaluation. -- Joe Riel