Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Eingebettetes Runge-Kutta-Verfahren
Autor
Universität/Hochschule Eingebettetes Runge-Kutta-Verfahren
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Themenstart: 2021-11-10

Hey zusammen, könnte mir jemand bitte diese Aufgabe erstmal mathematisch erklären wie ich das eingebettete Runge-Kutta-Verfahren formen kann damit ich danach den Code schreiben kann? https://www.matheplanet.com/matheplanet/nuke/html/uploads/b/54010_Unbeneuriogjtrrgrtannt.PNG Danke im Voraus!


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 2306
  Beitrag No.1, eingetragen 2021-11-10

Hallo s-amalgh! Wir kennen leider Deine Aufgabe 15 nicht! Ich denke gesucht sind Verfahren wie ode23 oder ode45 - Runge Kutta Fehlberg. Einen Code aus Octave findest Du hier: https://www.matheplanet.de/matheplanet/nuke/html/viewtopic.php?rd2&topic=246052&start=0#p1791071 Matlab kennt ode23 und ode45. Viele Grüße Ronald


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.2, vom Themenstarter, eingetragen 2021-11-10

Hey, danke erstmal für deine Antwort! Das ist Aufgabe 15 https://www.matheplanet.com/matheplanet/nuke/html/uploads/b/54010_Unbendfgdsggsrgannt.PNG


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 2306
  Beitrag No.3, eingetragen 2021-11-10

Du könntest erst mal ode23 oder ode45 an Deinen Aufgaben testen - da siehst Du erst mal wie es werden soll! Ein Beispiel dazu: https://www.matheplanet.de/matheplanet/nuke/html/viewtopic.php?rd2&topic=146185&start=0#p1073255 (mein Beitrag 4 zu einem Anfangswertproblem) Viele Grüße Ronald


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.4, vom Themenstarter, eingetragen 2021-11-15

Ich habe das noch nicht hingekriegt... Könntest du mir bitte erklären was ich machen soll? welche Formel muss ich schreiben? Danke im Voraus!


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 2306
  Beitrag No.5, eingetragen 2021-11-16

Hallo, hast Du mal die beiden Beispiele mittels ode23 oder ode45 gelöst? Viele Grüße Ronald Edit: auf der Seite: https://en.wikipedia.org/wiki/List_of_Runge–Kutta_methods findet sich auch Deine Methode: "Heun's third-order method" ohne die vorletzte Zeile.


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.6, vom Themenstarter, eingetragen 2021-11-17

ich habe eine mathematische Frage Ich habe die Anfangswerte : y´ = f(y) und y(x_0) = y_0 Und habe y´(x_0)*h = f(y_0)*h y´´(x_0)*h = f(y_0) * f´(y_0) * h wieso ist y´´(x_0)*h = f(y_0) * f´(y_0) * h ? Ich meinte mit y´ die erst Ableitung und mit y´´ die zweite Ableitung


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4607
  Beitrag No.7, eingetragen 2021-11-17

\quoteon(2021-11-17 00:33 - s-amalgh in Beitrag No. 6) wieso ist y´´(x_0)*h = f(y_0) * f´(y_0) * h ? \quoteoff Die Kettenregel sagt$$ y''(x) = {\mathrm d\over\mathrm dx}\,y'(x) = {\mathrm d\over\mathrm dx}\,f\bigl(y(x)\bigr) = f'\bigl(y(x)\bigr)\cdot y'(x) = f'\bigl(y(x)\bigr)\cdot f\bigl(y(x)\bigr) \;.$$--zippy


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.8, vom Themenstarter, eingetragen 2021-11-17

und von der dritten Ableitung?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4607
  Beitrag No.9, eingetragen 2021-11-17

\quoteon(2021-11-17 00:51 - s-amalgh in Beitrag No. 8) und von der dritten Ableitung? \quoteoff $$ y'''(x) = {\mathrm d\over\mathrm dx}\,y''(x) = {\mathrm d\over\mathrm dx}\,\bigl[ f'\bigl(y(x)\bigr)\cdot f\bigl(y(x)\bigr)\bigr] = f''\bigl(y(x)\bigr)\cdot f\bigl(y(x)\bigr)^2 + f'\bigl(y(x)\bigr)^2\cdot f\bigl(y(x)\bigr) \;.$$


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.10, vom Themenstarter, eingetragen 2021-11-17

Ich habe den Code geschrieben aber fehlen mir noch die zwei Beispiele anzuwenden. zu Beispiel 1 ich weiß nicht wie ich die Fehler berechne zu Beispiel 2 habe gar keine Ahnung Hast du Idee?


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.11, vom Themenstarter, eingetragen 2021-11-17

Mein Code \sourceon Matlab function erk(a,b,h0,y0,rtol,atol,f) a_= [0, 0, 0; 1/3, 0, 0; 0, 2/3, 0]; b1 = [0, 1/2, 1/2]; b2 = [1/4, 0, 3/4]; c = [0, 1/3, 2/3]; x = [a]; y = [y0]; y_ = [y0]; summe = 0; delta = 0.9; sigma = 1/5; theta = 5; n = (b-a)/h0; for i = 1 : n x(i+1) = x(i) + h0; k1 = f(x(i),y(i)); k2 = f(x(i) + h0*c(2), y(i) + a_(2,1)*h0*k1); k3 = f(x(i) + h0*c(3), y(i) + a_(3,2)*h0*k2); y(i+1) = y(i) + b1(1)*h0*k1 + b1(2)*h0*k2 + b1(3)*h0*k3; y_(i+1) = y(i) + b2(1)*h0*k1 + b2(2)*h0*k2 + b2(3)*h0*k3; summe += ((y_(i) - y(i))/(atol + rtol*abs(y(i))))^2; end err = sqrt(summe/n); h_new = delta * h0 * 1/nthroot(err, 3); if h_new < h0 h0 = h_new; erk(a,b,h0,y0,rtol,atol,f); else if sigma*h0 > h_new h_new = sigma*h0 elseif h_new > theta*h0 h_new = theta*h0 else fprintf('%d <= %d <= %d\n',sigma*h0, h_new, theta*h0) disp("h_new liegt in dem Intervall!\n"); end end end l = [3,4,5,6]; for i = 1 : length(l) fprintf('Fuer rtol 10^-%d\n',l(i)) erk(-10,20,1,1,10^-l(i),10^-6,@(x,y)(y/(1+x^2))) end \sourceoff


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4607
  Beitrag No.12, eingetragen 2021-11-18

\quoteon(2021-11-17 01:07 - s-amalgh in Beitrag No. 10) Ich habe den Code geschrieben aber fehlen mir noch die zwei Beispiele anzuwenden. \quoteoff Dein Code hat noch das grundsätzliche Problem, dass du gar keine Schrittweitensteuerung in eigentlichen Sinne betreibst, sondern über das gesamte Intervall $[a,b]$ mit einer festen Schrittweite arbeitest. Erst danach überlegst du dir, was eine bessere Schrittweite sein könnte. Mit anderen Worten: Die Überlegungen, die du dir zur Ersetzung von h0 durch h_new machst, musst du in jedem Schritt und nicht nur am Ende anstellen.


   Profil
s-amalgh
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.12.2020
Mitteilungen: 374
  Beitrag No.13, vom Themenstarter, eingetragen 2021-11-22

Hey @zippy, Könntest du mir bitte dabei helfen? :) https://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=256410&start=0&lps=1862483#v1862483 Danke im Voraus!


   Profil
s-amalgh hat die Antworten auf ihre/seine Frage gesehen.
s-amalgh wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]