Re: Plot and DSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg113851] Re: Plot and DSolve
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 15 Nov 2010 05:52:49 -0500 (EST)
That is because of the HoldAll attribute of Manipulate. You can see the same thing happen if you replace Manipulate by With (which also has the HoldAll attribute), e.g. With[{c == 10, u == 10, L == 2}, Plot[Evaluate[x@t /. z], {t, 0, 10}, PlotRange -> {0, 5 u/L}]] will produce no plot, but if you replace z by its value {{{x -> Function[{s}, (c*L + u*E^(L*s) - u)/(E^(L*s)*L)]}} you will get one. The reason is that With (or Manipulate) does not initially "see" that z involves c,u and L so it does not substitute numerical values for these variables into the expression for z. Thus, what Plot ends up trying to do: Plot[{(E^(-L t) (c L-u+E^(L t) u))/L},{t,0,10},PlotRange->{0,(5 10)/2}] which, of course, produces no graph. Andrzej Kozlowski On 14 Nov 2010, at 12:09, Bruce Colletti wrote: > Re 7.0.1 under WinXP. > > The code below works as expected: > > z == DSolve[{x'[t] ==== -L x[t] + u, x@0 ==== c}, x, t] > > Manipulate[ > Plot[Evaluate[x@t /. %], {t, 0, 10}, PlotRange -> {0, 5 u/L}], > {c, 10, 20}, > {u, 10, 15}, > {L, 2, 4}] > > > > However, when z (DSolve output) replaces % (in Plot), there's no plot. What > causes this? > > Thanks. > > Bruce > > >