8
$\begingroup$

Consider the solution of $x'=\sqrt{x}$, $x(0)=4$ using DSolve.

DSolve[{x'[t] == Sqrt[x[t]], x[0] == 4}, x[t], t]

(*{{x[t] -> 1/4 (16 - 8 t + t^2)}, {x[t] -> 
   1/4 (16 + 8 t + t^2)}}*)

I don't see how $x(t)=\frac14(16-8t+t^2)$, or equivalently, $x(t)=\frac14(4-t)^2$, can be a solution. Consider the following code and graphical output.

vp = VectorPlot[{1, Sqrt[x]}, {t, -10, 10}, {x, 0, 10},
   VectorStyle -> {GrayLevel[0.8]},
   VectorScale -> {0.045, 0.9, None}];
plt = Plot[1/4 (4 - t)^2, {t, -10, 10}];
Show[vp, plt, GridLines -> Automatic]

enter image description here

Clearly, not a solution. This can also be verified by checking algebraically. If $x(t)=\frac14(4-t)^2$, then $$x'(t)=\frac12(t-4),$$ and $$\begin{align*} \sqrt{x}&=\sqrt{\frac14(4-t)^2}\\ &=\frac{|4-t|}{2}\\ &=\frac12(t-4), \end{align*}$$ only if $$\begin{align*} 4-t&\le 0\\ -t&\le -4\\ t&\ge 4, \end{align*}$$ which agrees with the image above. Hence, even though the initial condition $x(0)=4$ is satisfied, the answer only satisfies the original ODE if $t\ge 4$.

So, why does DSolve produce this answer?

$\endgroup$
5
  • $\begingroup$ Interesting. Note also that the second solution doesn't work for $t \leq -4$, by much the same logic. It appears that Mathematica is integrating through the point $x = 0$ even when it shouldn't. $\endgroup$ May 12, 2015 at 17:22
  • $\begingroup$ @MichaelSeifert. True, but it does satisfy the differential equation for $t\ge -4$ and it satisfies the initial condition $x(0)=4$. So that one works on the interval of existence $(-\infty,-4]$. $\endgroup$
    – David
    May 12, 2015 at 17:52
  • 3
    $\begingroup$ I suspect that DSolve is "rationalizing" the differential equation as an early step, turning it into an equation of first order but second degree. The result of this process would be $(x')^2 = x$, and both of the solutions given above satisfy this equation with the given initial conditions. Usually Mathematica is hyper-sensitive about square roots and absolute values, though, so it's still a little puzzling. $\endgroup$ May 12, 2015 at 18:57
  • $\begingroup$ You are forgetting that there two square roots for a positive number. You must change the sign of the square root when x[t] crosses the branch cut at t = 4. Further you are not drawing the vector field correctly. See my answer for details. $\endgroup$
    – m_goldberg
    May 12, 2015 at 19:59
  • 2
    $\begingroup$ DSolve[{x'[t] == Surd[x[t], 2], x[0] == 4}, x[t], t] $\endgroup$
    – chuy
    May 12, 2015 at 20:09

1 Answer 1

7
$\begingroup$

In a sense, the returned solutions are valid, but only over a restricted domain. We can determine the domain for each solution with something like

Reduce[ode && -Infinity < t < Infinity /. sol, t]

We can join the domain with the corresponding solution via ConditionExpression.

ode = {x'[t] == Sqrt[x[t]], x[0] == 4};
dsol = DSolve[ode, x, t];

In the form of x -> function:

intermediate = {x -> Function @@ {t, 
      ConditionalExpression[x[t] /. #, 
       Reduce[And @@ ode && -Infinity < t < Infinity /. #, t]]}} & /@ dsol
(*
  {{x -> Function[t, ConditionalExpression[1/4 (16 - 8 t + t^2), t >= 4]]},
   {x -> Function[t, ConditionalExpression[1/4 (16 + 8 t + t^2), t >= -4]]}}
*)

Now, these are solutions, but only one is defined at t == 0. We can select the correct one.

newsols = Select[intermediate, (x[0] /. #) =!= Undefined &]
(*
  {{x -> Function[t, ConditionalExpression[1/4 (16 + 8 t + t^2), t >= -4]]}}
*)

Both of the dsol solutions are solutions to the rationalized ODE x'[t]^2 == x[t], and almost certainly that is from whence the extraneous solution arises.

$\endgroup$

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.