1
$\begingroup$

The general solution of ${x^2}y'' + 3xy' + \lambda y = 0$ is (from Example 4 here) $$y(x) = \begin{cases} {c_1}{x^{ - 1}}\cos \left( {\ln \left( x \right)\sqrt {\lambda - 1} } \right) + {c_2}{x^{ - 1}}\sin \left( {\ln \left( x \right)\sqrt {\lambda - 1} } \right) &\mbox{for } \lambda > 1 \\ {c_1}{x^{ - 1}} + {c_2}{x^{ - 1}}\ln \left( x \right) &\mbox{for } \lambda = 1\\ {c_1}{x^{ - 1 - \sqrt {1 - \lambda } }} + {c_2}{x^{ - 1 + \sqrt {1 - \lambda } }} &\mbox{for } \lambda < 1 \end{cases}$$

Why does Mathematica give only the third case instead of the whole solution? Is it a bug?

FullSimplify[DSolve[x^2*y''[x] + 3*x*y'[x] + \[Lambda]*y[x] == 0, y[x], x], Assumptions -> \[Lambda] \[Element] Reals] enter image description here

$\endgroup$

2 Answers 2

3
$\begingroup$

Mathematica gave generic solution to Euler ode.

Using assumptions and little bit of known manipulation, you can obtain the solutions given on that web page

For $\lambda>1$

Clear["Global`*"];
ode = x^2*y''[x] + 3*x*y'[x] + lam*y[x] == 0;
sol = y[x] /. First@DSolve[ode, y[x], x, Assumptions -> lam > 1]

enter image description here

The only trick is to convert the above to trig, using Euler relations. There might be easier way to do this, but I could not find it now. We need to implement the following transformation

\begin{align*} c_1 x^{\alpha + i \beta}+ c_1 x^{\alpha - i \beta}&= x^\alpha (c_1 x^{i \beta}+c_2 x^{ -i \beta})\\ &=x^\alpha(c_1 e^{\ln x^{i \beta}}+c_2 e^{\ln x^{-i \beta}}\\ &=x^\alpha(c_1 e^{i \beta \ln x}+c_2 e^{-i \beta \ln x}\\ &=x^\alpha(c_1 \cos(\beta \ln x)+ c_2 \sin(\beta \ln x)\\ \end{align*}

The last step above is just Euler's relation.

The above is done using:

ClearAll[a, b];
exponent = sol[[1]] /. Times[Power[x, a_], any_] :> Expand[a];
{a, b} = exponent /. a_ - I b_ :> {Simplify@a, Simplify@b};
sol = x^a (C[1]*Cos[b*Log[x]] + C[2] Sin[b*Log[x]])

enter image description here

For the other two cases, no need to help Mathematica, it gives the solutions as is, when using assumptions

$\lambda =1 $

  sol = y[x] /. First@DSolve[ode /. lam -> 1, y[x], x]

enter image description here

$\lambda < 1 $

  sol = y[x] /. First@DSolve[ode, y[x], x, Assumptions -> lam < 1] 

enter image description here

Update to answer comment

What do you mean by "generic solution to Euler ode" in the first line?

I mean the following. This is what Mathematica basically did

$$ x^{2}y^{\prime\prime}+3xy^{\prime}+\lambda y=0 $$

Let $y=Cx^{r}$. Substituting into the ODE this gives \begin{align*} x^{2}Cr\left( r-1\right) x^{r-2}+3xCrx^{r-1}+\lambda Ax^{r} & =0\\ Cr\left( r-1\right) x^{r}+3Crx^{r}+\lambda Cx^{r} & =0 \end{align*}

Simplifying, since $C x^{r}\neq0$ gives

\begin{align*} r\left( r-1\right) +3r+\lambda & =0\\ r^{2}-r+3r+\lambda & =0\\ r^{2}+2r+\lambda & =0 \end{align*}

Using the Quadratic formula, $r=\frac{-b}{2a}\pm\frac{1}{2a}\sqrt{b^{2} -4ac}=\frac{-2}{2}\pm\frac{1}{2}\sqrt{4-4\lambda}=-1\pm\sqrt{1-\lambda}$. Therefore

\begin{align*} r_{1} & =-1+\sqrt{1-\lambda}\\ r_{2} & =-1-\sqrt{1-\lambda} \end{align*}

Hence the general solution is the sum of the two basis solutions given by

\begin{align*} y & =C_{1}x^{r_{1}}+C_{2}x^{r_{2}}\\ & =C_{1}x^{-1+\sqrt{1-\lambda}}+C_{2}x^{-1-\sqrt{1-\lambda}} \end{align*}

It is a generic solution, since it does not know anything about $\lambda$ it could not simplify this any more.

DSolve[x^2*y''[x] + 3*x*y'[x] + \[Lambda]*y[x] == 0, y[x], x] // 
  Simplify // Expand

enter image description here

$\endgroup$
3
  • $\begingroup$ What do you mean by "generic solution to Euler ode" in the first line? Mathematica just assumes that $\lambda < 1$? How can we find out what assumption it made if we didn't have the analytical solution? $\endgroup$
    – Leponzo
    Commented Jul 11, 2020 at 15:10
  • 1
    $\begingroup$ @Leponzo I've tried to answer your comment in the answer above. $\endgroup$
    – Nasser
    Commented Jul 11, 2020 at 15:36
  • $\begingroup$ So the answer given by Mathematica is not a bug. It actually works for all $\lambda \in \mathbb{R}$, not just the third case ($\lambda < 1$). For example, $\lambda = 2$ gives $y(x) = {c_1}{x^{ - 1 - i }} + {c_2}{x^{ - 1 + i }}$, which does satisfy the ODE with $\lambda = 2$. (However, the cases may be needed for other ODEs where the answer returned by Mathematica may not represent the general solution.) $\endgroup$
    – Leponzo
    Commented Jul 11, 2020 at 17:34
2
$\begingroup$

Here's a way to generate any solution, by picking a different basis and taking the limit as the parameter approaches a given value of $\lambda$:

ode = x^2*y''[x] + 3*x*y'[x] + λ*y[x] == 0;
y2 = DSolveValue[{ode, y[1] == 0, y'[1] == 1}, y[x], x];
y1 = DSolveValue[{ode, y[1] == 1, y'[1] == -1}, y[x], x];
ClearAll[solg];
solg[λ0_?NumericQ] := 
 Assuming[x > 0, 
  Limit[C[1] y1 + C[2] y2, λ -> λ0] // Re // 
    ComplexExpand // Simplify]

Examples:

solg[1]
ode /. {λ -> 1, 
   y -> Function[x, Evaluate[solg[1]]]} // Simplify
(*
  (C[1] + C[2] Log[x])/x
  True
*)

solg[2]
ode /. {λ -> 2, 
   y -> Function[x, Evaluate[solg[2]]]} // Simplify
(*
  (C[1] Cos[Log[x]] + C[2] Sin[Log[x]])/x
  True
*)

solg[0]
ode /. {λ -> 0, 
   y -> Function[x, Evaluate[solg[0]]]} // Simplify
(*
  ((1 + x^2) C[1] + (-1 + x^2) C[2])/(2 x^2)
  True
*)
$\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.