このODEに対するこの2番目の解決策は正しいですか?

Dec 25 2020

Windows10上のMathematicaV12.2。私はMathematicaを使ってこのODEの解決策をチェックしていた。Mathematicaは2つの解決策を提供します。2番目の解決策がどこから来たのか考えていますか?そしてそれは正しいですか?

これが私の解決策であり、Mathematicaの解決策です

ClearAll[y, x];
ode = y'[x] == 2*Sqrt[1 + y[x]]*Cos[x];
sol = DSolve[{ode, {y[Pi] == 0}}, y, x]

 (* {{y->Function[{x},-2 Sin[x]+Sin[x]^2]},{y->Function[{x},2 Sin[x]+Sin[x]^2]}} *)

2番目のソリューションのみが検証します。そしてそれは私も得たものです。問題は、Mathematicaが上記の最初のものをどのようにして入手したのかということです。

Assuming[Element[x, Reals], Simplify@(ode /. sol[[1]])]
  (* Cos[x] Sin[x] == Cos[x] *)

Assuming[Element[x, Reals], Simplify@(ode /. sol[[2]])]
   (* True *)

私の解決策:ODE $$ \frac{ \mathop{\mathrm{d}y}}{\mathop{\mathrm{d}x}} = 2 \sqrt{y +1}\, \cos \left(x \right) $$分離可能です。したがって、
\begin{align*} \left(\frac{1}{2 \sqrt{y +1}}\right)\mathop{\mathrm{d}y}&= \cos \left(x \right)\mathop{\mathrm{d}x}\\ \int \left(\frac{1}{2 \sqrt{y +1}}\right)\mathop{\mathrm{d}y}&= \int \cos \left(x \right)\mathop{\mathrm{d}x}\\ \sqrt{y +1} &= c_{1}+\sin \left(x \right) \end{align*} 初期条件は、を解決するために使用されます $c_{1}$。代用$x=\pi$ そして $y=0$ 上記の解では、積分定数を解くための方程式が得られます。 \begin{align*} \sqrt{1} &= c_{1} \end{align*} だが $\sqrt{1}=1$、主ルートを取ります。したがって、\begin{align*} c_1 &= 1 \end{align*} 代用 $c_{1}$ 上記の一般的な解決策で見つかった $$ \sqrt{y \left(x \right)+1} = \sin \left(x \right)+1 $$ 解決する $y \left(x \right)$ 与える \begin{align*} y(x)+1 &= (1+\sin(x))^2 \\ y(x)+1 &= (1+\sin^2(x)+2 \sin(x)) \\ y(x) &= \sin^{2}x +2 \sin(x) \end{align*}

以上のことから、Mathematicaは次の2つの解を得たに違いないことがわかります。 $c_1$ なので $\pm 1$ 服用するとき $\sqrt 1$

そうして初めて、これら2つのソリューションが得られます。ときのために$c_1 = -1$、それが示す最初の解決策が出てきます。そしていつ$c_1= 1$、2番目の解決策が出てきます。

Mathematicaの最初の解決策は正しいですか?Mathematicaはそれだけを取得すべきだった$c_1 = 1$ ではなく $c_1 = \pm 1$

回答

Vixillator Dec 27 2020 at 09:34
ClearAll[y, x, ode, sol];

(* The given equation ode is a non-linear (quadratic) ODE, which yields two 
   solutions, as expected. Since both solutions satisfy the ODE they are both correct.
   Note that the ODE is equivalent to: y'[x]^2 == 4*(1 + y[x])*Cos[x]^2 *)

ode = y'[x] == 2*Sqrt[1 + y[x]]*Cos[x];
sol = DSolve[{ode, {y[Pi] == 0}}, y[x], x]

(* OUT: {{y[x] -> -2 Sin[x] + Sin[x]^2}, {y[x] -> 2 Sin[x] + Sin[x]^2}} *)

(* In order to obtain a single solution, we need to reduce the ODE to
a quasi-linear ODE, by defining an auxiliary boundary condition, say
at x=0, that will constrain the solution to the one that we seek *)

bcNew = ode /. x -> 0

(* OUT: y'[0] == 2 Sqrt[1 + y[0]] *)

solNew = DSolve[{ode, y[Pi] == 0 && bcNew}, y[x], x]

(* OUT: {{y[x] -> 2 Sin[x] + Sin[x]^2}} *)

(* QED *)