# Solve a system of differential equations

How to solve this system of equations? • Perhaps carefully read the documentation here: reference.wolfram.com/language/ref/DSolve.html and see if you can recognize the similarities between your notation and the notation used in the examples. Click on some of the orange items to see additional detail.
– Bill
Jul 17 '20 at 3:53
• Direct input will cause a Dsolve error due to the relationship between x and x(t). Jul 17 '20 at 7:59
• I can't quite see your screen from here, so I am guessing your "direct input" had some syntax errors, which hopefully could have been cleared up by carefully reading the documentation. This DSolve[{x''[t]-1000(1-x[t]^2)x'[t]+x[t]==0,x==0,x'==1},x[t],t] is the "direct input" I would use and it produces no such error. Unfortunately after crunching for a little while it returns the input which indicates DSolve can't crack this one. So I then try NDSolve[{x''[t]-1000(1-x[t]^2)x'[t]+x[t]==0,x==0,x'==1},x[t],{t,0,1}] and it happily produces a numeric result.
– Bill
Jul 17 '20 at 8:28

There does not seem to be analytical (closed form) solution to this. ODE's with time varying coefficients or non-linear in the dependent variable (as in your example), are very hard to solve analytically, unless they have special forms which leads to solutions using special functions.

The main analytical tool for these is solving them using power series methods.

In Mathematica this is implemented using AsymptoticDSolveValue but it is important to note that the solution obtained using this, although analytical, is only accurate very close to the expansion point. As more terms are added it gets more accurate, but the radius of convergence needs to be kept in mind.

For your ODE, this compares the numerical solution with the solution obtained using AsymptoticDSolveValue close to $$t=0$$, using 20 terms in the power series. You can see there good agreement with the numerical solution very close to $$t=0$$, but once one get too far away from zero, the approximation is no longer good.

ClearAll[x, t];
ode = x''[t] - 1000 (1 - x[t]^2) x'[t] + x[t] == 0;
ic = {x == 0, x' == 1};
asymSol = AsymptoticDSolveValue[{ode, ic}, x[t], {t, 0, 20}]


You'll get power series in $$t$$. Here is example for 5 terms Verify the solution satisfies the IC

asymSol /. t -> 0
(* 0 *)
(D[asymSol, t]) /. t -> 0
(* 1 *)


Compare to NDSolve

solNumerical = NDSolveValue[{ode, ic}, x, {t, 0, .01}];
Plot[{asymSol, solNumerical[t]}, {t, 0, .01}, AxesOrigin -> {0, 0},
PlotStyle -> {Blue, Red}, PlotLegends -> {"Asympt", "Numerical"}] The derivative of those do not seem to have a slope of 1 at t==0

One needs to really zoom in to see it

Plot[{asymSol, solNumerical[t]}, {t, 0, .001}, AxesOrigin -> {0, 0},
PlotStyle -> {Blue, Red}, PlotLegends -> {"Asympt", "Numerical"}] • The derivative of those do not seem to have a slope of 1 at t==0
– Bill
Jul 17 '20 at 18:59
• @Bill fyi, I added note on this above Jul 17 '20 at 20:57