Thanks Robert,
your answer helps me to understand.
I have just looked into the documentation of plot2d. There is no advice that there might be
differences in calling a function by its name or expression. E.g. I would expect, that
f(x):=1/x$
plot2d( f, [x,-1,1], [y,-1,1] )$
yields a proper plot.
Volker
Am 24 Nov 2007 um 10:49 hat Robert Dodier geschrieben:
> On 11/24/07, van Nek <van.nek at arcor.de> wrote:
>
> > (%i1) f(x):=log(x)+2-x$
> > (%i2) find_root( f(x), x,0,1 );
> > (%o2) find_root(log(x) - x + 2, x, 0.0, 1.0)
> >
> > I was puzzled for some seconds. In any other case I would believe, that
> > find_root is not defined. find_root reacts misleading.
>
> > Then plot2d helps me
> >
> > (%i3) plot2d(f,[x,0,1]);
> > log(0) has been generated.
> > #0: f(x=0.0)
> > -- an error. To debug this try debugmode(true);
>
> It turns out that if you call find_root by naming the function, you
> get the same error.
>
> find_root (f, 0, 1);
> => log(0) has been generated.
>
> And if you call plot2d with f(x), it doesn't complain (but it does make a plot).
>
> The behavior of both plot2d & find_root depends on the Lisp function
> coerce-float-fun. When its argument is a function name, coerce-float-fun
> doesn't wrap the function call in an error catch; this is probably a bug.
>
> Also, find_root returns an unevaluated expression if the function
> doesn't return a number; it doesn't try to look for a subinterval for
> which the function can be evaluated to a number at both endpoints.
> I guess find_root could have a heuristic for that.
>
> HTH
>
> Robert
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima