Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have the following code that gives you a phase portrait of a 2d system and I can't understand what means the 3rd and 4th line (sol1 and sol2).

sys = {x'[t] == 3 x[t], y'[t] == -y[t]};

ss = DSolve[sys, {x[t], y[t]}, t];

sol1 = ss[[1, 1, 2]];

sol2 = ss[[1, 2, 2]];

toplot = Flatten[
  Table[{sol1, sol2} /. {C[1] -> i, C[2] -> j}, 
    {i, -0.5, 0.5, 0.25}, {j, -0.5, 0.5, 0.25}], 1]

graphs = ParametricPlot[Evaluate[toplot], {t, -3, 3}]

I searched the documentation but I couldn't figure it out. Thank you.

@J.M. @belisarius I try to extend it in non linear eqiations. I tried another example with a non linear diff eq. What I wanted to find was the phase space. When I put μ>0 then it plots a solution, but it does not show the other fixed point that is non stable. For everything else μ it does not do anything.

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]

I now the dynamics of the above, I do not want you to explain that to me. I want your help because I am trying to learn mathematica.

share|improve this question
It's for extracting the (approximate) solutions, though I think it's a bit cumbersome, and I prefer using {sol1, sol2} = {x, y} /. First[ss]; – J. M. Apr 23 '13 at 18:39
@J.M. {x@t, y@t} /. First[ss] in this case – Dr. belisarius Apr 23 '13 at 18:42
thank you very much! can you explain me or send me any link that explains what x@t means? – 2island Apr 23 '13 at 18:45
@bel, blah, I'm too used to not including the arguments for the functions... 2island, the double bracket syntax is shorthand for Part[]. You will want to look this up in the docs. Additionally, x[t], x @ t, and t // x all mean the same thing; that is, applying the function x to the argument t. – J. M. Apr 23 '13 at 18:45
For future reference on how to figure these things out: search the docs for [[ and it'll take you to Part which explains the syntax used in the line sol1 = .... The meaning of @ is a bit more difficult to discover. Searching for it takes you to Prefix, but here's a more relevant doc page. – Szabolcs Apr 23 '13 at 18:53
up vote 1 down vote accepted
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}]

enter image description here

share|improve this answer
Is it right to use the NDSolve (when u want to treat with a non linear diff eq) and as initial cond put variables as above? 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 seems right but it opens a message that says that initial cond r0 is not a number or rectangular array of numbers. – 2island Apr 24 '13 at 9:49
@2island You must plug in numbers in NDSolve[], not symbolic constants – Dr. belisarius Apr 24 '13 at 11:59

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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