Runge-Kutta-Verfahren

Neue Frage »

macianer Auf diesen Beitrag antworten »

Hallo Community,

habe ebenfalls ein Problem mit dem Runge Kutta Verfahren. Ich habe die Aufgabe eine logistische Differentialgleichung mit dem RK-Verfahren zu lösen.
Meine log.Diffgleichung sieht folgendermaßen aus:

f ' (t) = k*f(t)*(s-f(t)) - g(t)

k ist mein Proportionalitätsfaktor, s meine Sättigungsgrenze und g(t) ist eine Störgröße.
Mein Problem ist jetzt das RK-Verfahren selber. Ich habe inzwischen viel im Internet darüber gelesen, allerdings war es mir sehr häufig zu "mathematisch", d.h. ich habe die Erklärungen nicht verstanden weil es einfach nicht leicht genug beschrieben war.
Angenommen ich gehe von einem normalen RK vierter Ordnung aus:

xn+1 = xn + h/6* (k1 + 2k2 + 2k3 + k4)

xn+1 ist ja immer mein "Nachfolgepunkt" von xn, richtig?
Mein Problem ist das ich nicht weiss wie meine logistische Differentialgleichung mit dem RK Verfahren zusammenhängt. Ich bräuchte eine Art Schritt-für-Schritt Anleitung, damit mir das ganze Verfahren mal bewusst wird, aber alles was ich lese setzt ein Mathestudium voraus *grmpf*
Ich hoffe es kann mir vielleicht hier jemand die Vorgehensweise erklären. Ich möchte auch nicht das mir hier jemand eine fertige Lösung hinsetzt, ich möchte nur den Vorgang erklärt haben smile
Danke smile
system-agent Auf diesen Beitrag antworten »

Soweit hast du das richtig erkannt.
Du hast irgendwo noch eine Definition der .
Für dein Programm musst du nun dein Intervall , auf welchem du die Lösung haben willst, in gleichgrosse Stückchen aufteilen [äquidistante Schrittweite, nehme , wieso?].
Dann machst du eine for-Schleife über alle deine Stückchen N und du musst in jedem Schritt deine bis berechnen und dann eben noch das Verfahren, welches du ja bereits hingeschrieben hast.
macianer Auf diesen Beitrag antworten »

Hallo,

erstmal vielen Dank für deine Hilfe. smile
mit meinst du jetzt die einzelnen Steigungen des Runge Kutta Verfahrens richtig? Falls ja, die Rechnung dafür ist mir bekannt.
Das Intervall wird vom Benutzer eingegeben, also Startpunkt und Endpunkt bzw. gesamtes Zeitintervall , richtig?

Seltsamerweise ist mir die Berechnung der Schrittweite bisher noch nirgendwo untergekommen, in keiner Onlineliteratur habe ich davon gelesen.

Ich verstehe allerdings deinen letzten Satz noch nicht. Ich habe bereits das Runge Kutta Verfahren berechnet, allerdings weiss ich nicht ob das bisher stimmt:

double fxy;
double gt = 1.0; // Störgröße, hier mit Wert vorbelegt
double k1,k2,k3,k4;
double k2_fx, k2_fy;
double k3_fx, k3_fy;
double k4_fx, k4_fy;
double yn1;
int fx = 1;
//int s = Integer.valueOf(Fenster.saturation.getText());
//double h = Double.valueOf(Fenster.increment.getText());
//double k = Double.valueOf(Fenster.proport_coefficient.getText());
int s = 5000;
double h = 0.01;
double k = 1;

for (fx = 1; fx<=3; fx++){
//Berechnung k1
System.out.println("Durchlauf Nr: " + fx);
k1 = (k*fx)*(s-fx)-gt;
System.out.println("k1 " + k1);

// Berechnung k2
k2_fx = (fx+(h/2));
k2_fy = (gt+(k1/2));
k2 = k*h*k2_fx*(s-k2_fx)-k2_fy;
System.out.println(k2_fx);
System.out.println(k2_fy);
System.out.println("k2 " + k2);

// Berechnung k3
k3_fx = (fx+(h/2));
k3_fy = (gt+(k2/2));
k3 = k*h*k3_fx*(s-k3_fx)-k3_fy;
System.out.println(k3_fx);
System.out.println(k3_fy);
System.out.println("k3 " + k3);

// Berechnung k4
k4_fx = (fx+h);
k4_fy = (gt+k3);
k4 = k*h*k4_fx*(s-k4_fx)-k4_fy;
System.out.println(k4_fx);
System.out.println(k4_fy);
System.out.println("k4 " + k4 + "\n\n");

// Berechnung yn+1
yn1 = (fx + (h / 6) * (k1 + (2 * k2) + (2 * k3) + k4));

System.out.println("Ergebnis yn1: " + yn1);
}

Angenommen, ich führe das Verfahren für fx = 1 aus, dann hab ich am Ende des runge Kutta Verfahrens ja einen dazugehörigen yn1-Wert. Nur, mein Problem ist, was mache ich dann mit diesen Werten. Mir ist der Zusammenhang zwischen Runge Kutta Verfahren und logistischer Differentialgleichung nicht klar, bzw. ich weiss nicht was ich mit der Berechnung der Runge Kutta Werte anstellen soll.
Leider muss ich mir das alles selbst aneignen, ich habe in diesem Bereich keinerlei Vorkenntnisse. unglücklich

Danke fürs helfen smile
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »