RK2 schwingungsdgl < Physik < Naturwiss. < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:13 Fr 06.02.2009 | Autor: | Phecda |
hallo
ich steh vor dem problem die dgl x** = -kx mit dem rungekutta2 verfahren zu lösen.
ich kann die dgl
in den vektor [mm] \vektor{x* \\ v*} [/mm] = [mm] \vektor{v \\ -kx} [/mm] bringen,
doch wie implementiere ich das in einer schleife?
mir fehlt der definitive durchblick beim programmieren.
die formel für den RK2 ist für y' = f(x,y)
[mm] y_{i+1} [/mm] = [mm] y_{i} [/mm] + [mm] 0.5*(k_{1}+k_{2})*h
[/mm]
mit [mm] k_{1}=f(x_{i},y_{i})
[/mm]
und [mm] k_{2}=f(x_{i}+h [/mm] , [mm] y_{i}+k_{1}*h)
[/mm]
mehr weiß ich eigntl. auch nicht ^^
lg
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:03 Di 10.02.2009 | Autor: | QCO |
Hallo,
bei deinem Problem kann ich dir leider nicht helfen, aber ich glaube du bekommst schneller Hilfe, wenn du diese Frage nochmal im Mathe/-Numerikbereich stellst.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:03 Mi 11.02.2009 | Autor: | leduart |
Hallo
Damit du das uebertragen kannst erstmal:
[mm] y=\vektor{y1 \\ y2}=\vektor{x \\ v}
[/mm]
also
[mm] y'=\vektor{y1 \\ y2}'=\vektor{y2\\ -ky1} [/mm] Variable x bzw hier t nicht explizit.
gegeben Anfangswert y1(0),y2(0)
Schrittweite dt
[mm] y_0=\vektor{y1(0)\\ y2(0)}
[/mm]
jetzt erster Schritt:
A: [mm] k1=\vektor{y2(0)\\ -ky1(0)}
[/mm]
[mm] k2=\vektor{y1(0)\\ y2(0)}+k1*dt=
[/mm]
dann
[mm] y_1=y_0+(k1+k2)*0.5*dt
[/mm]
damit kennst du y(dt), damit y1(dt) und y2(dt) und machst so weiter also
ab hier jetzt die Schleife zum Punkt A natuerlich ohne das (0)
Das ganze in Vektorschreibeise oder mit Komponenten, janachdem, was du fuer eine Programmiersprache benutzt. aber sogar mit exel geht das.
Gruss leduart
|
|
|
|