# DSolve Returns Incorrect Solutions for First-Order ODE

Bug introduced in 10.4 or earlier and persisting through 11.3. Reported to Wolfram Technical Support as CASE:4150361.

Fifty-one DSolve questions on this site are tagged with [bugs]. This may be the fifty-second. Consider (based on question 180227),

eq1 = y'[t] - Sqrt[(1 + y[t])/y[t]^2];
s = DSolve[{eq1 == 0, y == 1}, y, t]
(* {{y -> Function[{t}, (-4 + 4 I Sqrt + 4 (-12 Sqrt t + 9 t^2 +
Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(1/3) -
(-12 Sqrt t + 9 t^2 + Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(2/3) -
I Sqrt (-12 Sqrt t + 9 t^2 + Sqrt[-64 + 288 t^2 - 216 Sqrt
t^3 + 81 t^4])^(2/3))/(4 (-12 Sqrt t + 9 t^2 +
Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(1/3))]}, . . . *)


where the second solution is obtained by the first by t -> -t.

(y /. s[])[t] == ((y /. s[])[t] /. t -> -t)
(* True *)


Plotting the two solutions,

Plot[Evaluate@{ReIm[y[t] /. s[]], ReIm[y[t] /. s[]]}, {t, -3, 3},
PlotRange -> Full, PlotStyle -> {Blue, {Blue, Dashed}, Red, {Red, Dashed}},
ImageSize -> Large, AxesLabel -> {t, y}, LabelStyle -> {Bold, Black, Medium}] immediately suggests that the second solution is incorrect, because its slope is negative at the boundary condition, y == 1, whereas eq1 == 0 indicates that it should be positive. Verifying the two solutions by back-substitution, shows that the second solution is indeed incorrect near t == 0. Applying the boundary condition to an incorrect solution is meaningless, of course, and the entire second solution should be discarded. Moreover, the first solution is valid only to the left of the peak in the first curve in the first plot, i.e., for t <= 2 Sqrt / 3. DSolve should, therefore, have returned the single solution,

y -> ConditionalExpression[Function[{t}, (-4 + 4 I Sqrt + 4 (-12 Sqrt t +
9 t^2 + Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(1/3) -
(-12 Sqrt t + 9 t^2 + Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(2/3) -
I Sqrt (-12 Sqrt t + 9 t^2 + Sqrt[-64 + 288 t^2 - 216 Sqrt
t^3 + 81 t^4])^(2/3))/(4 (-12 Sqrt t + 9 t^2 +
Sqrt[-64 + 288 t^2 - 216 Sqrt t^3 + 81 t^4])^(1/3))],
t <= 2 Sqrt / 3]


So, is my assessment correct that this is a bug? And, is there any work-around apart from the manual effort just described?

Addendum: More Instances

Ulrich Neumann in a comment below provided a simpler example with the same behavior, {y'[t] == Sqrt[y[t]], y == 1}. Still another simple example is {y'[t] == y[t]^(3/2), y == 1}. And, {y'[t] == y[t]^(1/3), y == 1} behaves only a little better, returning just one solution but without the appropriate ConditionalExpression. Such behavior probably occurs for many ODEs in which clearing radicals would result in y'[t] with a power higher than one.

• Mathematica solves, I don't know why, the ode -system y'[t]^2 - (1 + y[t])/y[t]^2. Only one branch of these solutions is what you asked for. – Ulrich Neumann Aug 22 '18 at 7:59
• @UlrichNeumann I believe that Mathematica finds it much easier to solve the equation in your comment but neglects to eliminate the extraneous solutions before returning the correct answer.. In fact, I have solved your equation by hand, so to speak, and can see the point at which extraneous solutions arise. – bbgodfrey Aug 22 '18 at 12:20
• Thanks for your reply. You can see this MMA-behaviour in the easy example y'[x]==Sqrt[y[x]], y==1 – Ulrich Neumann Aug 22 '18 at 12:37
• @UlrichNeumann Great observation. In this case only the second solution is valid. I imagine that this occurs for many ODEs in which clearing radicals would result in y'[t] appearing as a power higher than one. For instance, {y'[t] == y[t]^(3/2), y == 1}. I may add this to my question to illustrate the generality of the issue. Thanks. – bbgodfrey Aug 22 '18 at 13:03
• MMA tries to "transform rational exponents", I think – Ulrich Neumann Aug 22 '18 at 13:05