# Plotting the solution of a Chini differential equation

In DIFFERENTIAL EQUATION SOLVING WITH DSOLVE by D. Kapadia, there is a Chini differential equation :

sol = DSolve[x'[t] == 5 x[t]^4 + 3 x[t]^(-4/3), x[t], t]


The answer implies RootSum. The question is how to use and plot the solution. I have tried

Plot[x[t] /. sol /. {C -> 2}, {t, 0, 10}]


which doesn't works and used Evaluate and/or Normal and/or ToRadical@Normal both on x[t] and on sol. But nothing works. Moreover, this case is not documented in the documentation "Plotting the Solution".

Need help; Thanks

• Hold up… if you try N[x /. sol /. {C -> 2}], what do you get? – J. M. is in limbo Jun 26 '16 at 6:31
• If I do that I have that the sol is neither a list of replacement rule... – cyrille.piatecki Jun 26 '16 at 6:42
• …and now you know why it doesn't work within Plot[]. – J. M. is in limbo Jun 26 '16 at 7:09
• Ok but that does not resolve my problem. I allready have found this but I do not know how to proceed. It's strange to find a solution in a manual of how to and not to be able to apply it. – cyrille.piatecki Jun 26 '16 at 7:29
• I don't have Mathematica on hand at the moment. Can you paste in the result sol in InputForm? – J. M. is in limbo Jun 26 '16 at 8:24

An alternative approach is to solve for t[x] instead of x[t].

t[x] /. First@DSolve[t'[x] == 1/(5 x^4 + 3 x^(-4/3)), t[x], x] /. C -> 0;
ParametricPlot[{Chop@%, x}, {x, 0, 3}, AxesLabel -> {t + C, x},
AspectRatio -> GoldenRatio] Because the ODE determines t[x] only up to an arbitrary constant, the curve above can be shifted by an arbitrary amount to the left or right.

• I wonder why Chop@% work and not Chop@t – cyrille.piatecki Jun 29 '16 at 10:21
• @cyrille.piatecki t actually is not defined by my two lines of code. To define it, use t = s[x] /. First@DSolve[s'[x] == 1/(5 x^4 + 3 x^(-4/3)), s[x], x] /. C -> 0; ParametricPlot[{Chop@t, x}, {x, 0, 3}, AxesLabel -> {"t+C", x}, AspectRatio -> GoldenRatio]. Note that I use s[x] as the dummy variable in the first equation here to avoid possible issues. – bbgodfrey Jun 29 '16 at 16:52

Maybe like this:

sol = DSolve[x'[t] == 5 x[t]^4 + 3 x[t]^(-4/3), x[t], t]
eq = sol[[1, 1, 2, 0, 1]][x] == (sol[[1, 1, 2, 1]] /. C -> 2)
ContourPlot[sol[[1, 1, 2, 0, 1]][x] == (sol[[1, 1, 2, 1]] /. C -> 2),
{t, -3, 3}, {x, -3, 3}, Axes -> True, Frame -> False, AxesLabel -> {t, x[t]}]


EDITED:

If You exectue this code:

 InternalInheritedBlock[{Solve}, Unprotect[Solve];
Solve[x___] :=
Block[{$guard = True}, Print["Solve called : ", HoldForm[Solve[x]]]; Solve[x]] /; ! TrueQ[$guard];
DSolve[{x'[t] == 5 x[t]^4 + 3 x[t]^(-4/3)}, x[t], t]]; You can see DSolve cant find solution.Then solution of Solve convert to InverseFuntion. I'm only extract this solution using Part function.

• Thank you Mariusz it works perfectly even if I do not understand the philosophy behind. The mainchange is from x to x[t], in Dsolve and it change all. – cyrille.piatecki Jun 26 '16 at 10:47
• I,m only using Part` function.That all. – Mariusz Iwaniuk Jun 26 '16 at 12:21