Re: pure functions (or not?)
- To: mathgroup at smc.vnet.net
- Subject: [mg22239] Re: [mg22217] pure functions (or not?)
- From: Hartmut Wolf <hwolf at debis.com>
- Date: Sat, 19 Feb 2000 01:33:38 -0500 (EST)
- Organization: debis Systemhaus
- References: <200002180734.CAA08284@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Dr Sebastien NEUKIRCH schrieb:
>
> Hi there,
>
> I have a problem with functions.
> Why is the following not working :
> In[1]:=
> function[{x_,y_,z_}]:=
> Module[{a,fr},fr=FindRoot[z+x*Sin[a]-y*a,{a,1.1}];fr[[1,2]]]
>
> In[2]:=
> function[{-1,-2,3}]
>
> Out[2]=
> -1.96219
>
> In[3]:=
> ContourPlot[function[{x,y,3}],{x,-2,2},{y,0,2},Contours->{0}]
>
> In[4]:=
> <<Graphics`ContourPlot3D`
> In[5]:=
> ContourPlot3D[function[{x,y,z}],{x,-2,2}, {y,0,2}, {z,-2,2}]
>
> ---------------------------
> The contourplot3d doest NOT work. Even if I add
> COMPLIED->TRUE.
>
Dear Sebastien,
the problem you have has nothing to do with ContourPlot, although that
sharpens it. When I do it -- sauf the error messages -- a plot is
produceed indeed, but obviously there are grid points with extremely low
or high values.
If you make a one-dimensional Plot
Plot[function[{1.5, y, 3}], {y, 0.5, 1}]
you see a terrible numerical instability. Finally if you look at the
equation to be solved for a ...
g = Block[{x = 1.5, y, z = 3, color},
Table[color = 2*(y - -2.)/(2. - -2.);
Plot[z + x*Sin[a] - y*a, {a, -10., 10.},
PlotStyle -> Hue[color], DisplayFunction ->
Identity], {y, -2., 2., 0.08}]]
Show[g, DisplayFunction -> $DisplayFunction]
... you'll see why this is so.
I think your problem is with the computational model (of your research
question). Either that is outwright wrong, or you are going to use it
outside of its region of applicability.
However, in case that your want to force your model, then I propose to
set up a Table of function values, whilst for each point carefully
controlling the convergence of FindRoot; e.g. do similar plots like
above and supply individual starting values for the critical points, and
better give 2 values: the secant method _might_ behave better in this
case.
You finally can ListContourPlot that table.
I hope to have helped somewhat,
kind regards,
Hartmut
- References:
- pure functions (or not?)
- From: Dr Sebastien NEUKIRCH <ucessne@ucl.ac.uk>
- pure functions (or not?)