Wie Runge-Kutta-Tableau berechnen?
-
Servus,
ich versuche zur Zeit das (allgemeine) Runge-Kutta-Verfahren zu implementieren. Leider scheidere ich zur Zeit am Tableau. Ich finde keinen vernünftigen Artikel mit einer Herleitung
http://de.wikipedia.org/wiki/Runge-Kutta-Verfahren#Runge-Kutta-Tableau
O.K. was weiß ich bis jetzt.
- es handelt sich um eine Dreiecksmatrix, in der die Diagonale und die rechte obere Seite gleich null ist.
- die Zeile des linken Vektors ist gleich die Summe der Zeile in der Matrix
- die Summe der Elemente im unteren Vektor ist gleich eins.Aber wie ist der untere Vektor mit dem Rest verbunden?
Gruß,
Thomas
-
Willst du die Koeffizienten bestimmen? Dann fuehrt ein Ableich mit der Taylorentwicklung zu einem Gleichungssystem, das geloest werden will. Ich habe sowas auch mal implemetiert (heute wuerde ich es aber anders machen): hier
(allgemeine) Runge-Kutta-Verfahren ... es handelt sich um eine Dreiecksmatrix, in der die Diagonale und die rechte obere Seite gleich null ist.
Das ist ein explizites, kein allgemeines Verfahren.
die Summe der Elemente im unteren Vektor ist gleich eins
Das ist immer so, siehe Konsistenzbedingungen.
-
knivil schrieb:
Willst du die Koeffizienten bestimmen? Dann fuehrt ein Ableich mit der Taylorentwicklung zu einem Gleichungssystem, das geloest werden will. Ich habe sowas auch mal implemetiert (heute wuerde ich es aber anders machen):
Danke für den Link und ja, ich hatte vor die Koeffizienten zu berechnen.
Ich dachte da an,
Eingabe:
- Ordnung
- boolean für adaptive Schrittweite ja/nein--> bitte berechnen
Effizient & Co. spielt bei mir keine Rolle
Hierzu müsste ich die Koeffizineten dynamisch Berechnen. Für 2-6 Ordnung oder mehr kann man ja ein Array hinterlegen.
Was hälst du davon? Bzw. wie setze ich hier am besten an? (Berechnung der Koeff.)
Gruß,
ThomasP.S.: Bin gerade in der Uni, daher kein Benutzername
-
Eingabe:
- Ordnung
- boolean für adaptive Schrittweite ja/neinDas funktioniert so nicht, bzw. ist sehr aufwendig in der Implementation. Der Taylorabgleich liefert ein nichtlineares Gleichungssystem, hinzu kommen Konsistenzbedingungen. Gab mal nen gutes Buch in unserer Bibo drueber. Es war glaube: Numerik gewöhnlicher Differentialgleichungen, Strehmel, Karl ; Weiner, Rüdiger, Stuttgart : Teubner, 1995. Genau weiss ich es aber nicht mehr.
-
Schade, das Buch habe ich gefunden und werde es mir morgen mal ausleihen. Danke.
Dann werde ich mich wohl mit einer manuellen Implementation von ein paar Verfahren begnügen müssen :|
-
@knivil
Hast du noch den Quelltext deine C++ Programms und würdest du diesen evtl veröffentlichen?
-
www.phynet.de/private/snOOfy/numerik-dgl-kapitel-1.pdf
Auf Seite 10 wird gezeigt, wie man ein Verfahren der gewünschten Ordnung konstruiert. Falls du ein gutes fertiges Verfahren implementieren willst, schau mal auf Seite 17.
Ich find das ganze Skript ist recht verständlich geschrieben, kann ich nur empfehlen.
-
Siassei schrieb:
@knivil
Hast du noch den Quelltext deine C++ Programms und würdest du diesen evtl veröffentlichen?Einfach ins uebergeordnete Verzeichnis gehen und sich den src-Ordner ansehen. Die Implementation sollte es dem Nutzer gestatten, das Schema selbst einzugeben. Dadurch ist es nicht wirklich performant.
man ein Verfahren der gewünschten Ordnung konstruiert.
Nein, nur bis zur 3ten Ordnung. Bei hoeheren Ordnungen ist das zu loesende Gleichungssystem wesentlich komplizierter und nicht mehr so einfache Loesungen.