As a supplementary to my question solution of differential equation I post a new question of how is it possible to make a Table that has elements the solutions of a non linear differential equation, so that to plot them. In a linear system you can do the following:

ss = DSolve[{x'[t] == 3 x[t], y'[t] == -y[t], x[0] == x0, y[0] == y0}, {x, y}, t];
toplot = Table[{x@t, y@t} /. ss, {x0, -0.5, 0.5, 0.25}, {y0, -0.5, 0.5, 0.25}];
ParametricPlot[Evaluate[toplot], {t, -1, 1}]

as @belisarius proposed.

If I have to use NDSolve can I use variables as above in initial conditions? I first tried the following example.

Plot[r (1 - r^2), {r, 0, 1}, AxesLabel -> {r, r'}] 
ssa = NDSolve[{r'[t] == r[t] (1 - r[t]^2), u'[t] == 1, r[0] == r0, 
              u[0] == u0}, {r[t], u[t]}, {t, 0, 100}] 
toplot = Table[{r@t Cos[u@t], r@t Sin[u@t]} /. ssa, {r0, -.5, .5, 0.25}, 
                                                    {u0, -.5, .5, 0.25}]; 
 ParametricPlot[toplot, {t, 0, 100}]  

The solution is what I expected, but it opened a message that said that initial condition r0 is not a number or rectangular array of numbers.

I then tried another example, it opened the same message but the solution was nearly what I wanted for some values of μ. For μ>0 the solution was OK except that it wasn't shown the second fixed point. For μ<=0 I didn't get any solution.

sol = NDSolve[{x'[t] == μ - x[t]^2, y'[t] == -y[t], x[0] == x0, y[0] == y0}, 
             {x[t], y[t]}, {t, 0, 100}]

toplot = Table[{x@t, y@t} /. sol, {x0, -.5, 2, .25}, {y0, -.5, .5, .25}];`

ParametricPlot[Evaluate[toplot], {t, 0, 100}, PlotRange -> All]

if you copy-paste the code remember to manually treat μ

The expected plots are shown bellow:

2d saddle node bifurcation

  • 1
    $\begingroup$ NDSolve cannot numerically integrate the system of equations since at this point r0 and u0 don't have numerical values. You have to wrap Table[..., {r0, ...}, {u0, ...}] around NDSolve instead of the plot curves! $\endgroup$ Apr 25, 2013 at 5:32
  • $\begingroup$ Ok! I suppose that u propose me something like this: a = Table[ sol = NDSolve[{x'[t] == 1 - x[t]^2, y'[t] == -y[t], x[0] == x0, y[0] == y0}, {x[t], y[t]}, {t, 0, 100}], {x0, -.5, 5}, {y0, -.5, .5}]; After that how can I plot this table that has elements the solutions of an equation? Sorry about my question it might be elementary but now I am really confused. $\endgroup$
    – 2island
    Apr 25, 2013 at 9:47
  • $\begingroup$ You might also be interested in the EquationTrekker` package. $\endgroup$ May 4, 2013 at 13:31

1 Answer 1


The problem is, that you call NDSolve while you haven't specified numerical values. Later, in your Table they are put in. In your second example you never say which value $\mu$ should get.

An easy way to fix this, is to make a function call out of your NDSolve. In this way it gets only evaluated when you put values in.

sol = Function[{x0, y0, mu}, 
  NDSolve[{x'[t] == mu - x[t]^2, y'[t] == -y[t], x[0] == x0, 
    y[0] == y0}, {x[t], y[t]}, {t, 0, 100}]]

toplot = Table[{x@t, y@t} /. sol[x0, y0, .5], {x0, -.5, 
    2, .25}, {y0, -.5, .5, .25}];

ParametricPlot[Evaluate[toplot], {t, 0, 100}, PlotRange -> All]

To interpret the output is of course your job.

enter image description here

  • $\begingroup$ As I understand u call the NDSolve with sol[x0,y0,.5] where .5 is the value of mu (or μ). Again it doesn't work for values less than .2, I can't make plots as I posted in my question. I want μ to take values <0, =0 and >0. I know what the output should be like and what does it mean. Is there any way to make the plots as I posted above? I can't find where is the problem, the methodology seems to be right. $\endgroup$
    – 2island
    Apr 25, 2013 at 9:42
  • $\begingroup$ I tried another equation and it work exaclty as I a expected! Thank you very much for your answer! $\endgroup$
    – 2island
    Apr 25, 2013 at 10:01
  • 1
    $\begingroup$ @2island That it doesn't work with mu less than .2 is a problem of the equation and/or the numerical method used by NDSolve. You have to check yourself why it doesn't work. $\endgroup$
    – halirutan
    Apr 25, 2013 at 10:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.