0 Daumen
1,7k Aufrufe

Aufgabe:

$$ y´(t)=-(10+t^{3})y $$

.....in (0,3)

$$ y(0)=1 $$ 



die"(0.3)" gehört zu ersten Gleichung und vor den beiden Gleichungen ist eine große Klammer {

Es handelt sich bei der Aufgabe um ein Anfangswertsproblem.


(1) Wir sollen eine Lösung finden.

(2) Wir sollen RungeKutta(klassisch) und Euler (impliziert) anwenden an vier Stützstellen von t=0 durch (n=3) anwenden.

(sechs Nachkommastellen)

(3)Bonus: beide Verfahren mit der Lösung aus (1) vergleichen und überlegen welches von den Verfahren gut wäre für n=105


Problem/Ansatz:

Ich bräuchte Hilfe zu dieser Aufgabe. Mit den anderen Aufgaben sollte ich dann klarkommen, da sie ähnlich aufgebaut sind.


Danke für jede Antwort

Avatar von

2 Antworten

0 Daumen
 
Beste Antwort

Gibt es einen Grund, warum hier RungaKutta besser wäre?

das Verfahren nach Runge-Kutta ist dem Euler-Verfahren i.A. deutlich überlegen, weil es die gesuchte Kurve mit einer höheren Ordnung annähert. Oberflächlich betrachtet, legt das RK-Verfahren Parabelstücke auf die Funktion, während Euler es mit linearen Funktionen tut.

In der Aufgabenstellung heißt es:

Wir sollen RungeKutta(klassisch) und Euler (impliziert) anwenden an vier Stützstellen von t=0 durch (n=3) anwenden.

Also mit drei Stützstellen über das Intervall von \((0;3)\) - bedeutet \(h=1\)! Wenn man sich die DGL ein wenig anschaut, so könnte man darauf kommen, dass sie monoton fallend ist, aber nie unterhalb von \(y=0\) kommt. Die Steigung am Anfang ist \(y'=-10\). Bei einer Schrittweite von \(h=1\) wäre das selbst bei einer 4'telung des Schrittes ein \(\Delta y \approx -2,5\). Das ist bereits jenseits von jedem realistischen Wert der Funktion.

Das implizite Eulerverfahren ist dahingehend sehr stabil. Es liefert zwar keine gute Näherung bei \(h=1\), aber man erhält eine qualitative Aussage über den Verlauf der Kurve.

(sechs Nachkommastellen)

das ist ein Witz. Bei einem \(h=1\) stimmt noch nicht mal die erste Dezimalstelle!

beide Verfahren mit der Lösung aus (1) vergleichen und überlegen welches von den Verfahren gut wäre für n=10^5

Zwischen \(n=3\) und \(n=10^5\) liegt ein Faktor von \(\gt 10^4\)! Du kannst/darfst nicht von so einer (viel zu großen) Schrittweite auf das Verhalten bei einer um mehr als vier Zehnerpotenzen kleineren schließen. Das Ergebnis wäre, dass nur das implizite Eulerverfahren überhaupt Ergebnisse liefert; das ist aber falsch. Probiere mal ein \(n=300\).

Wenn Du mehr dazu wissen willst, so melde Dich nochmal. Ansonsten empfehle ich Dir, es einfach mal auszuprobieren.

Nachtrag:

Könntest du vlt an einer Stützstelle als Bespiel vormachen?

Folgende Tabelle zeigt die ersten 10 Schritte mit dem klassischen Runge-Kutta-Verfahren (4.Ordnung). Ich habe eine Schrittweite \(h=0,1\) gewählt. Viel größer sollte \(h\) in diesem Fall nicht sein.

$$\begin{array}{cccccccccc}t& u_i (y)& k_1(y')& t+ \frac h2& u_i+ \frac h2 k_1& k_2& u_i+ \frac h2 k_2& k_3& u_i+hk_3& k4\\ \hline 0& 1.000000& -10.000& 0.050& 0.500& -5.000& 0.750& -7.500& 0.250& -2.500\\ 0.1& 0.374993& -3.750& 0.150& 0.187& -1.875& 0.281& -2.813& 0.094& -0.938\\ 0.2& 0.140577& -1.407& 0.250& 0.070& -0.703& 0.105& -1.056& 0.035& -0.351\\ 0.3& 0.052641& -0.528& 0.350& 0.026& -0.264& 0.039& -0.396& 0.013& -0.131\\ 0.4& 0.019664& -0.198& 0.450& 0.010& -0.099& 0.015& -0.149& 0.005& -0.049\\ 0.5& 0.007314& -0.074& 0.550& 0.004& -0.037& 0.005& -0.056& 0.002& -0.018\\ 0.6& 0.002703& -0.028& 0.650& 0.001& -0.014& 0.002& -0.021& 0.001& -0.006\\ 0.7& 0.000989& -0.010& 0.750& 0.000& -0.005& 0.001& -0.008& 0.000& -0.002\\ 0.8& 0.000357& -0.004& 0.850& 0.000& -0.002& 0.000& -0.003& 0.000& -0.001\\ 0.9& 0.000127& -0.001& 0.950& 0.000& -0.001& 0.000& -0.001& 0.000& 0.000\\ 1& 0.000044& 0.000& 1.050& 0.000& 0.000& 0.000& 0.000& 0.000& 0.000\end{array}$$ wie die einzelnen Werte berechnet werden ist hier beschrieben.

Anschließend die Tabelle mit dem impliziten Eulerverfahren - aber mit \(h=0,025\) damit der Vergleich fair ist. RK ruft pro Schritt viermal die Funktion \(f(t,y)\) auf, Euler nur einmal. Beim impliziten Verfahren muss man diese Gleichung $$u_{i+1} = u_i + hf(t_{i+1}, u_{i+1})$$ nach \(u_{i+1}\) auflösen. Hier ist das kein Problem: $$u_{i+1} = u_i + h(-(10 + t_{i+1}^2)u_{i+1}) \\ \implies u_{i+1} = \frac{u_i}{1 + h(10 + t_{i+1}^2)}$$ In Zahlen gibt dies: $$\begin{array}{ccc}t& u_i(y)& y'\\ \hline 0.000& 1.000000& -10.000\\ 0.025& 0.800000& -8.000\\ 0.050& 0.639998& -6.400\\ 0.075& 0.511994& -5.120\\ 0.100& 0.409587& -4.096\\ 0.125& 0.327657& -3.277\\ 0.150& 0.262108& -2.622\\ 0.175& 0.209664& -2.098\\ 0.200& 0.167704& -1.678\\ 0.225& 0.134133& -1.343\\ 0.250& 0.107273& -1.074\\ 0.275& 0.085783& -0.860\\ 0.300& 0.068589& -0.688\\ 0.325& 0.054834& -0.550\\ 0.350& 0.043829& -0.440\\ 0.375& 0.035026& -0.352\\ 0.400& 0.027985& -0.282\\ 0.425& 0.022354& -0.225\\ 0.450& 0.017851& -0.180\\ 0.475& 0.014250& -0.144\\ 0.500& 0.011372& -0.115\end{array}$$ Zum Vergleich: $$y(0,5) = 0,00663, \quad u(0,5)_{RK}=0,007314, \quad u(0,5)_E= 0,011372$$ Falls noch Fragen sind, so melde Dich bitte.

Gruß Werner

Avatar von 48 k

Riesen Echt lieb von dir!

Ich habe heute nochmal nachgefragt, und es wurde mir gesagt, dass wir Runge Kutta 4te Ordnung (also nicht klassisch) anwenden sollten.

Ist vielleicht jetzt bis zu den sechs Nachkommastellen möglich?

zu (1):

Hier müsste ich die Stützstellen 0,1,2,3 in die gelöste Gleichung einsetzen, oder?

Gibt es vielleicht ein Beispiel im Forum, wo Runge Kutta 4te Ordunung oder Euler (impliziert) durchgerechnet wurde? (also ohne Programmieren)

Die Theorie habe ich dazu und es gibt viel Theorie im Internet, die die Idee von Runge Kutta (bzw. Euler) erklären. Aber ein konkretes Beispiel finde ich leider nicht.

.. wurde mir gesagt, dass wir Runge Kutta 4te Ordnung (also nicht klassisch) anwenden sollten.

Mit einem expliziten Verfahren und einer Schrittweite von \(h=1\) bei dieser Funktion $$y(t) = e^{-t(\frac{1}3t^2 + 10 )}$$ hast Du keine Chance auf ein sinnvolles Ergebnis. Schau Dir doch die Funktion mal an: ~plot~ e^(-x*((x^2)/3+10));[[-0.4|3.5|-0.5|1.5]];{0|1};{1|0.0833};{2|0.0044};{3|0.0001} ~plot~
Bei \(t=0,6\) ist sie doch schon bei \(y\approx0\). Wie soll den ein wie immer geartetes Verfahren in einem Schritt zwischen \(t=0\) und \(t=1\) eine Näherung rein legen? Die Punkte, sind die Lösungen des expliziten Eulerverfahrens; mit \(h=1\).

Ist vielleicht das Intervall von 0 bis 0,3 gemeint?

ich sollte auf ein sinnvolles Ergebnis kommen, mit (0,3) ist dann wahrscheinlich das Intervall gemeint. In der Aufgabe hieß es, wir sollen an vier Stützstellen diese beiden Verfahren anwenden.

Das Intervall von 0 bis (0,3) ist sinnvoll.


Wir schreibe man das Verfahren schriftlich auf?

Könntest du vlt an einer Stützstelle als Bespiel vormachen? (Implziertes Eulerverfahren und RungeKutta 4te Ordnung)

Danke

@Gast0009: ich habe meiner Antwort noch einen Nachtrag hinzu gefügt.

danke für die Mühe

Bei der Wahl der kleinen Schrittweite h=0,1 scheint es sehr schreibaufwendig zu sein.


Eine Frage zu 3:

Impliziertes Eulerverfahren liefert stabile Werte, aber schlechte Näherung.

Bei RungeKutta hat man eine gute Näherung zur exakten Lösung, aber nicht stabil.

Sind die Aussagen so richtig?

Ich weiss leider immernoch nicht, welches Verfahren mit n sehr groß, gut geeignet wäre.

Bei der Wahl der kleinen Schrittweite h=0,1 scheint es sehr schreibaufwendig zu sein.

Der 'Schreibaufwand' ist pro Schritt und Verfahren immer der gleiche. Unabhängig von der Schrittweite. Und wenn Du eine kleine Schrittweite \(h\) hast, und somit viele Schritte, dann sollte man das ohnehin an ein Tabellenkalkulationsprogramm oder einem anderen Rechenknecht übergeben. Die obigen Tabellen sind mit Excel berechnet.

Impliziertes Eulerverfahren liefert stabile Werte, aber schlechte Näherung.
Bei RungeKutta hat man eine gute Näherung zur exakten Lösung, aber nicht stabil.
Sind die Aussagen so richtig?

Das ist nicht falsch. Aber RK - und anderer explizite Verfahren - sind i.A. in der Praxis stabil genug, wenn das \(h\) passend gewählt wird. Es gbt genug Tools, die die Schrittweite automatisch anpassen (z.B. odeint oder mathlab).

Implizite Verfahren haben den Nachteil, dass die erzeugende Gleichung nach \(u_{i+1}\) umgestellt werden muss (s.o.). Das ist in Deinem konkreten Fall kein Problem. Aber i.A. muss dazu eine nummerische Lösung herhalten und das treibt den Aufwand exorbitant nach oben.

Für einen Vergleich muss immer der Einzelfall beurteilt werden.

Ich weiss leider immernoch nicht, welches Verfahren mit n sehr groß, gut geeignet wäre.

Einfach ausprobieren und das \(h\) dabei immer kleiner werden lassen. Irgendwann ändern sich die Kurve dann nicht mehr. Probiere ruhig mal ein \(h=1\) aus. Mit dem RK-Verfahren wirst Du völlig unsinnige Ergebnisse erhalten. Ineressant ist ein \(h=0,2\). Hier liefert RK zunächst gute Werte und bricht dann später aus (bei meiner Rechnung). Ein  \(h=3\cdot 10^{-5}\) habe ich nicht probiert, aber ich wette darauf, dass RK hier dem Euler klar überlegen ist.

Du benötigst dazu natürlich ein Programm. Welches Tool, bzw. welche Programmiersprache benutzt ihr?

RK liefert bei einem \(h=2\cdot 10^{-3}\), was bei Dir einem \(n=1500\) entspricht, schon ein Ergebnis für \(u(0,5)\), welches auf 8 Stellen hinterm Komma mit der exakten Lösung überein stimmt. Ein weiteres Erhöhen von \(n\) macht dann auch keinen Unterschied mehr!

0 Daumen

Hallo

 1. exakte Lösung: Trennung der Variablen,

2. Euler hattet ihr, sollt ihr zu Fuß rechnen oder mit Programm oder Exel? was daran kannst du nicht?

3. dasselbe für Runge-Kutta wahrscheinlich dritter Ordnung. Da das sicher von euch behandelt wurde oder sonst sehr oft im Netz zu finden ist ist es wenig nützlich es hier nochmal hinzuschreiben,

Gruß lul

Avatar von 108 k 🚀

zu (1):

ist

$$ y=e^{-10t+\frac{1}{3}* t^{3}}$$

richtig?


bei der Aufgabe sollte es tsein, und nicht t3 .

ja, richtig

lul

yay! Danke für den Hinweis.

zu (2): Wir sollen Euler (impliziert) und RungaKutta schriftlich machen.

zu (3):

Hier sollen wir, ohne zu rechnen, begründen, ob Euler oder RungaKutta besser wäre für den Fall n=105 .

Gibt es einen Grund, warum hier RungaKutta besser wäre?

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community