Re: problems with DSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg99405] Re: problems with DSolve
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Tue, 5 May 2009 05:40:29 -0400 (EDT)
On 5/4/09 at 6:00 AM, szymon.stoma at gmail.com wrote:
>i am new to mathematica, therefore sorry if my question is trivial.
>I would like to understand why the following line does not work:
>Plot[(x[t] /. DSolve[{x'[t] == y[t], y'[t] == -x[t], x[0] == 1=
, y[0]
>== 2}, {x, y}, t]), {t, 0, 5}]
>whereas after splitting into two lines it works: sol = DSolve[{x'[t]
>== y[t], y'[t] == -x[t], x[0] == 1, y[0] == 2}, {x, y}, t]
>Plot[(x[t] /. sol), {t, 0, 5}]
The problem is due to the way Plot evaluates its arguments. The
first thing that happens is a numerical value is substituted for
the plot variable. Then the argument is evaluated. And of
course, DSolve cannot do its thing with a number in place of t.
The solution is to force evaluation of the arguments to Plot
before a numerical value is substituted for the plot variable.
This can be done using Evaluate. That is
Plot[Evaluate[(x[t] /. DSolve[{x'[t] == y[t], y'[t] == -x[t],
x[0] == 1, y[0]
== 2}, {x, y}, t])], {t, 0, 5}]
will do what you want.