Re: Re: Why these graphs differ?
- To: mathgroup at smc.vnet.net
- Subject: [mg33972] Re: [mg33942] Re: Why these graphs differ?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 25 Apr 2002 02:59:42 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <000f01c1eb60$26c6e000$03f5b4d0@HolyCow>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
DrBob wrote:
>
> Jens Wrote:
> >>The Part[expr,1,1,2] is z for expr:> DSolve[{y'[z] == z, y[0] == 1},
> y[z], z]
>
> >>and the Part[expr,1,1,2] is (2+z^2)/2 for expr:> {{y[z] -> (2
> +z^2)/2}}
>
> No, that's not the problem.
That is the problem !
> The two expressions (including Part)
> evaluate to precisely the same thing.
Because the expressions are not evaluated. So you have
in the first case
Part[DSolve[{y'[z] == z, y[0] == 1},y[z],z],1,1,2]
that gives z
and in the second case
Part[{{y[z] -> (2+z^2)/2}},1,1,2]
that gives (2+z^2)/2
> The problem is that the first
> expression isn't an explicit function of z, to match the Plot iterator,
Both expressions match the Plot[] iterator -- otherwise
*nothing* would be drawn as for
Plot[DSolve[{y'[z] == z, y[0] == 1}, y[z], z][[1, 1, 1]], {z, 0, 1}]
> until it's evaluated --- and Plot holds the first argument unevaluated
> until a specific iterator value is assigned.
For a numeric z, DSolve[] can't evaluate it's argument, so
DSolve[] return unevaluated as
DSolve[{y'[0] == 0, y[0] == 1},y[0],0]
and Part[] take the 0 from this expression and draw the
function z.
That shows again how dangerous it is to use Part[] explicit.
Plot[y[z] /. DSolve[{y'[z] == z, y[0] == 1}, y[z], z], {z, 0, 1}]
would create error messages from Plot[] *and* show that there is
something
wrong with the Plot[] argument while
Plot[Part[DSolve[{y'[z] == z, y[0] == 1},y[z],z],1,1,2],{z, 0, 1}]
draw a false result and does not generate error messages from Plot[].
Regards
Jens