MathGroup Archive 2003

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

Search the Archive

RE: assigning a set of initial values

  • To: mathgroup at smc.vnet.net
  • Subject: [mg43814] RE: [mg43805] assigning a set of initial values
  • From: "David Park" <djmp at earthlink.net>
  • Date: Tue, 7 Oct 2003 02:40:53 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Young,

deqns[{a0_, b0_, c0_}, t0_] :=
  {a'[t] == a[t]*(3 - a[t] - 2*b[t] - 3*c[t]),
   b'[t] == b[t]*(2 - a[t] - b[t]),
   c'[t] == c[t]*(4 - a[t] - b[t]),
   a[t0] == a0,
   b[t0] == b0,
   c[t0] == c0}


But it is not easy to get a good plot of the three solutions on one graph.
Here I use a LogLog plot to try to show all three functions and since a[t]
soon bumps around zero I chopped it off. NDSolve has problems with some
initial conditions. The following automatically solves and plots.

Needs["Graphics`Graphics`"]

Clear[a, b, c]
dsols = First@NDSolve[deqns[{10000, 100, 100}, 0], {a, b, c}, {t, 0, 10}];
{a[t_], b[t_], c[t_]} = {a[t], b[t], c[t]} /. dsols;
LogLogPlot[{If[a[t] <= 0, 10.*^-5, a[t]], b[t], c[t]}, {t, 0, 10},
    PlotRange -> {{0.000001, 10}, {0.0001, 10000}}];

This could be written into one routine as follows.

solveAndPlot[{a0_, b0_, c0_}, t0_] :=
  Module[{deqns, dsols, a, b, c},
   deqns = {Derivative[1][a][t] ==
       a[t]*(3 - a[t] - 2*b[t] - 3*c[t]),
      Derivative[1][b][t] == b[t]*(2 - a[t] - b[t]),
      Derivative[1][c][t] == c[t]*(4 - a[t] - b[t]),
      a[t0] == a0, b[t0] == b0, c[t0] == c0};
    dsols = First[NDSolve[deqns, {a, b, c},
       {t, 0, 10}]]; {a[t_], b[t_], c[t_]} =
     {a[t], b[t], c[t]} /. dsols;
   LogLogPlot[{If[a[t] <= 0, 0.0001, a[t]], b[t],
      c[t]}, {t, 0, 10}, PlotRange ->
      {{0.000001,10},{0.0001,10000}}]]

solveAndPlot[{10000, 100, 100}, 0]


David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/


From: Young Kim [mailto:kim17 at fas.harvard.edu]
To: mathgroup at smc.vnet.net


Hi,

  Let's say there is a non-linear differential equations like the
following
  sol = NDSolve[ {a'[t] == a[t] ( 3 - a[t] - 2 b[t] - 3 c[t] ),
         b'[t] == b[t] ( 2 - a[t] - b[t] ), c'[t] == c[t] (4 - a[t] -
b[t])}, {a[t], b[t], c[t]}, {t,0,10}]

  Is there a way to systematiiclly specify the initial values to the
above equation (e.g. in the table format)
  so that you can visualize the multiple trajectories on the same plane
or in the same 3D space ?
  Thanks.


  Young


  • Prev by Date: Re: Make Mathematica wait for File
  • Next by Date: Help with Nonlinear Fitting?
  • Previous by thread: assigning a set of initial values
  • Next by thread: Make Mathematica wait for File