Problem bei der Lösung von ODE mit DSolve
Sep 02 2020
Ich versuche, eine nichtlineare ODE zweiter Ordnung mit dem angehängten Code zu lösen. Nachdem ich mir die Dokumentation zu DSolve angesehen habe, weiß ich nicht, was ich falsch mache. Wenn ich Shift+ Enterauf oberster Ebene mache, gibt Mathemeatica nur den von mir eingegebenen Code zurück.
DSolve[
-x Derivative[1][y][x] - x Derivative[1][y][x]^3 +
y[x]* (1 + Derivative[1][y][x]^2) +
y[x]^2 y''[x] + (x^2 - R Sqrt[x^2 + y[x]^2]) y''[x] == 0,
y[x], x]
Antworten
2 MichaelE2 Sep 02 2020 at 06:30
Ich weiß nicht, ob dies hilfreich sein wird, aber wenn Sie Variablen in Polarkoordinaten ändern, erhalten wir eine ODE, DSolvedie Folgendes verarbeiten kann:
subs = Simplify@NestList[ (* change of variables *)
D[First@#, x] -> Dt[Last@#]/Dt[r[t] Cos[t]] &,
y[x] -> r[t] Sin[t], 2]~Join~
{x -> r[t] Cos[t]};
(* new ode *)
ode = -x*Derivative[1][y][x] - x*Derivative[1][y][x]^3 +
y[x]*(1 + Derivative[1][y][x]^2) +
y[x]^2*y''[x] + (x^2 - R*Sqrt[x^2 + y[x]^2])*y''[x] /. subs //
Together // Numerator // Simplify[#, r[t] > 0] &;
odes = FactorList[ode][[2 ;;, 1]] == 0 // Thread
(* the process yielded a spurious factor r[t] {r[t] == 0, r[t] (r[t] - R) r''[t] + (2 R - r[t]) r'[t]^2 + R r[t]^2 == 0} *)
dsol = DSolve[Last@odes, r, t]
(* {{r -> Function[{t}, InverseFunction[-I (ArcTanh[(R - #1)/Sqrt[ R^2 - 2 R #1 - C[1] #1^2]] - ArcTan[(-R - C[1] #1)/( Sqrt[C[1]] Sqrt[R^2 - 2 R #1 - C[1] #1^2])]/Sqrt[C[1]]) & ][t + C[2]]]}, {r -> Function[{t}, InverseFunction[ I (ArcTanh[(R - #1)/Sqrt[R^2 - 2 R #1 - C[1] #1^2]] - ArcTan[(-R - C[1] #1)/( Sqrt[C[1]] Sqrt[R^2 - 2 R #1 - C[1] #1^2])]/Sqrt[C[1]]) & ][t + C[2]]]}} *)
(Um mit meinen Symmetriekommentaren in Verbindung zu treten, zeigt die Änderung der Variablen, dass das System unter invariant ist t -> t + t0, was eine Drehung in Polarkoordinaten ist.)