Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.maple > #219
| From | Joe Riel <joer@san.rr.com> |
|---|---|
| Newsgroups | comp.soft-sys.math.maple |
| Subject | Re: Plot problem with function |
| Date | 2011-07-28 12:18 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <87mxfyfc31.fsf@san.rr.com> (permalink) |
| References | <1311880181.170189@athprx04> |
"I.N. Galidakis" <morpheus@olympus.mons> 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);
--
Joe Riel
Back to comp.soft-sys.math.maple | Previous | Next — Previous in thread | Next in thread | Find similar
Plot problem with function "I.N. Galidakis" <morpheus@olympus.mons> - 2011-07-28 22:09 +0300
Re: Plot problem with function Joe Riel <joer@san.rr.com> - 2011-07-28 12:18 -0700
Re: Plot problem with function "I.N. Galidakis" <morpheus@olympus.mons> - 2011-07-29 00:11 +0300
Re: Plot problem with function Joe Riel <joer@san.rr.com> - 2011-07-28 14:31 -0700
csiph-web