RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Mathematica - Problem beim DSolve
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges
Autor Nachricht
Henri



Anmeldungsdatum: 08.02.2014
Beiträge: 82

Beitrag Henri Verfasst am: 26. Jun 2015 15:22    Titel: Mathematica - Problem beim DSolve Antworten mit Zitat

Hi,

Vielleicht kennt sich ja jemand mit Mathematica aus; ich stehe damit auf Kriegsfuß und wollte Lagrange-Bewegungsgleichungen damit lösen und es gelingt mir nicht. Also ich schreibe L = ... (ellenlange Lagrangefunktion), in der nächsten Zeile dann DSolve[Langrangegleichung, r(tau), tau]. Meine generalisierten Koordinaten wären r, und phi
Ich hab mal einen Screenshot gemacht, falls jemand Lust hat drüberzuschauen würde ich mich freuen...

http://up.picr.de/22358633tq.png

Lg
jh8979
Moderator


Anmeldungsdatum: 10.07.2012
Beiträge: 8584

Beitrag jh8979 Verfasst am: 26. Jun 2015 15:48    Titel: Antworten mit Zitat

Mal abgesehen davon, dass sich die entstehende Lagrangegleichung nicht so einfach lösen lässt, funktioniert das mit dem Ableiten nicht so wie Du das machst: Mathematik weiss nicht z.B. was Funktionen sind und was Konstanten. Die Syntax ist auch nicht immer korrekt:
liefert z.B. immer Null.

Ich würde das ganze so eingeben (quick and dirty):
Code:

L = 1/2 (1 - (2 G M)/(c^2 r)) c^2 tp^2 - rp^2/(
  2 (1 - (2 G M)/(c^2 r))) - 1/2 r^2 phip^2

eqn = (D[D[L, rp] /. {r -> r[\[Tau]], rp -> r'[\[Tau]]}, \[Tau]] - (D[
       L, r] /. {r -> r[\[Tau]], rp -> r'[\[Tau]]}, tp -> t'[\[Tau]],
     phip -> phi'[\[Tau]]) == 0)

DSolve[eqn, r[\[Tau]], \[Tau]]

(copy und paste wäre bei Deinem Beispiel übrigens auch hilfreicher gewesen als ein Screenshot Augenzwinkern ).

Wenn Du das richtig ordentlich machen willst, dann kannst Du auch hier sehen wie man das eleganter machen kann:
http://library.wolfram.com/infocenter/MathSource/496/
Henri



Anmeldungsdatum: 08.02.2014
Beiträge: 82

Beitrag Henri Verfasst am: 26. Jun 2015 20:34    Titel: Antworten mit Zitat

So müsste es doch dann eigentlich auch gehen:
Code:
eqn = Dt[D[L, r'[\[Tau]]], \[Tau]] - D[L, r[\[Tau]]] == 0;
DSolve[eqn, r[\[Tau]], \[Tau]]


Ich bekomme dann allerdings nur "Equation or list of equations expected instead of True in the first argument"

Danke für den Link, da werde ich mich mal einlesen. Mit Mathematica komme ich bisher eher schlecht zurecht Haue / Kloppe / Schläge

Lg
jh8979
Moderator


Anmeldungsdatum: 10.07.2012
Beiträge: 8584

Beitrag jh8979 Verfasst am: 26. Jun 2015 20:41    Titel: Antworten mit Zitat

Henri hat Folgendes geschrieben:

Code:
eqn = Dt[D[L, r'[\[Tau]]], \[Tau]] - D[L, r[\[Tau]]] == 0;
DSolve[eqn, r[\[Tau]], \[Tau]]


Ja, das geht auch, wenn Du L richtig definierst
Code:
L = 1/2 (1 - (2 G M)/(c^2 r[\[Tau]])) c^2 t'[\[Tau]]^2 -
  r'[\[Tau]]^2/(2 (1 - (2 G M)/(c^2 r[\[Tau]]))) -
  1/2 r[\[Tau]]^2 phi[\[Tau]]^2

Ich würde aber vorsichtig sein mit Ableitungen nach komplexen ausdrücken wie r'[t]... sobald da nicht r'[t]^2 steht sondern, r'[s]^2 oder so, kann mathematica das nicht mehr
Henri



Anmeldungsdatum: 08.02.2014
Beiträge: 82

Beitrag Henri Verfasst am: 28. Jun 2015 09:39    Titel: Antworten mit Zitat

Habe es jetzt auf die schöne Variante wie in dem Link hinbekommen, danke Thumbs up!

Jetzt habe ich ein anderes Problem, und zwar möchte ich in L ein paar der Ausdrücke ersetzen, um das schöner aufschreiben zu können. Solche Sachen wie Drehimpuls, die nicht genau in der Form in L stecken, wie ich sie ersetzen will, aber ähnlich. Ich habe es mit Replace, Replace All und Simplify mit TransformationFunction probiert, aber mathematica hat die Größen die ich angegeben habe, nicht eingesetzt. Hat vielleicht jemand eine Idee auf welche Weise das klappen würde? Also beispielsweise möche ich in L die folgende Größe ersetzen:

Code:
L^~ = r^2 \[Phi]'[\[Tau]]


Lg
Neue Frage »
Antworten »
    Foren-Übersicht -> Sonstiges