Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: DSolve problems with system of ODEs. Out in pure notation?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg21756] Re: DSolve problems with system of ODEs. Out in pure notation?
  • From: "Allan Hayes" <hay at haystack.demon.co.uk>
  • Date: Thu, 27 Jan 2000 22:56:38 -0500 (EST)
  • References: <200001210900.EAA06601@smc.vnet.net> <200001220753.CAA11688@smc.vnet.net> <86e8o3$fbv@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

I have deleted the graphic display and most of the output.


eqns = {x'[t] == -0.036 x[t] + 0.0124 y[t] + 0.000035 z[t] + 49.3,
      y'[t] == 0.0111 x[t] - 0.0286 y[t],
      z'[t] == 0.0039 x[t] - 0.000035 z[t], x[0] == 0, y[0] == 0, z[0] ==
0};

soln = DSolve[ eqns, {x[t], y[t], z[t]}, t];

I am not sure what caused the error message.
We can get what they indicate by Help Browser > GoTo [RootSum::pfn] with
Other Information chosen from the category buttons. We get
"Generated when the first argument in RootSum is not a Function expression."

However it looks as if it is serious, since the solution is incorrect:

soln /. t -> 0

{{x[0] -> 1.77331, y[0] -> -0.546333, z[0] -> -0.192132}}

But, in reply to your question about the form of the answer:

RootSum[f, form]represents the sum of form[x]for allx that satisfy the
polynomial equationf[x] == 0.
This is very useful notation - for mathematics in general, not just for
Mathematica.
In this case we can convert to standard notation (but it takes a while)

ToRadicals[soln]

And, with another wait, to traditional notation

TraditionalForm[%]

Since your input includes inexact numbers, you might accept the muchs
shorter form.

N[soln]

Or maybe a numerical solution over some range  of t (I have used -1 to 1)

Numsoln = NDSolve[eqns, {x[t], y[t], z[t]}, {t, -1, 1}]

This is OK at t=0:

Numsoln /. t -> 0

{{x[0] -> 0., y[0] -> 0., z[0] -> 0.}}

To check on the values throughout the t-range it is convenient to convert
the solution to one for the functions x,y and z:

FunNumsoln = Nsoln /. f_[t] -> f

and, in eqns  change Equal to Subtract:

diffs = eqns /. Equal -> Subtract

Now plot diffs with the functions substitued for x, y, z  (with a perfect
solution each would give constant zero function)

Plot[Evaluate[diffs /. FunNumsoln], {t, -1, 1}, PlotRange -> All];

The maximum absolute error looks to be  less than  0.000035.
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565

"J.Guillermo Sanchez" <guillerm at gugu.usal.es> wrote in message
news:86e8o3$fbv at smc.vnet.net...
> If I evaluate,
>
> DSolve[{x'[t] == -0.036 x[t] + 0.0124 y[t] + 0.000035 z[t] + 49.3,
>     y'[t] == 0.0111 x[t] - 0.0286 y[t], z'[t] == 0.0039 x[t] - 0.000035
> z[t],
>     x[0] == 0, y[0] == 0, z[0] == 0}, {x[t], y[t], z[t]}, t]
>
> I receive a massage like this
> (RootSum::"pfn" :
>     "(DSolve`DSolveDump`dysfunction$6[273147 + <<1>>...
> is not a pure function.).
> and them a out in pure notation.
>
> But I want to receive the solution in standard notation.
>
> Also the same sentece work fine in Mathematica 2.2.
>
> Can anyone give a hand?
>
>
>
>




  • Prev by Date: Re: Making a function dynamically define another conditional function...
  • Next by Date: Re: Problem with evaluation of delayed rules
  • Previous by thread: Re: DSolve problems with system of ODEs. Out in pure notation?
  • Next by thread: Intersection of 2 subspaces