| |
|
|
p.specht
| Das Verfahren RK4 de Runge y Kutta lässt se auch en DifferentialgleichungsSYSTEME (DGS) höherer Orden anwenden. Aunque nimmt el Präzision (trotz des en el linearen Zona exzellenten Verhaltens) con el Anzahl R el Dimensionen rapide de - genauer dijo con el R-ten Wurzel de 'Schrittweite ^ 5'. Man debería diesfalls also no allzu hohe Erwartungen hegen.
Anmerkung: Hochdimensionalen Problemen rückt uno mejor con sog. 'Monte Carlo-Methoden' a Leibe. Literatur dazu: P. Zinterhof: Integrale y mehrdimensionale Características, Aufsatz en OCG-Schriftenreihe Band 12 'Zahlentheoretische Métodos en el Numerischen Mathematik', S.132ff
Título de la ventana "Demo: Runge-Kutta RK4 para Systeme de Differentialgleichungen höherer Ordnung"
' Angelehnt a: B.Brand: Algorithmen a praktischen Mathematik, S.240, Oldenbourg
' Testhalber migriert después de XProfan-11 en 2014-09 by P.Pájaro carpintero, Wien.
' Demo para privaten Gebrauch, no sin embargo geartete Gewähr!
Ventana de Estilo 24:Ventana 0,0-%maxx,%maxy
declarar k1!,k2!,k3!,k4!,l1!,l2!,l3!,l4!
':: Ejemplo: 'Nichtlinares Differentialgleichungssystem'
':: Zwei Testfunktionen, el una gekrümmte Fläche forma (X: Abszisse, Y: Ordinate, Z: Höhe)
declarar x!,y!,z!,f!,g!
declarar i&,h!,x![],y![],z![],xend!
proc F :parámetros x!,y!,z!
volver (y!-z!)/x!
ENDPROC
proc G :parámetros x!,y!,z!
volver (y!+z!)/x!
ENDPROC
' Referencia: Zeilen, el con :: beginnen, stammen vom Übersetzter después de XProfan-11
imprimir "\n Im Ejemplo se una Sistema de '2 nichtlinearen Differentialgleichungen "
imprimir " en 3 Variables' gelöst. El Gleichungen lauten F=(y+z)/x y G=(y-z)/x. "
imprimir " El Anfangswerte para x, y y z sowie el Schrittweite h son vorzugeben. "
imprimir " Ferner se una Abbruchkriterium, z.B. el Maximale x-Endwert eingegeben. \n"
imprimir " Aus Gründen meiner Bequemlichkeit voluntad en Eingabe 'x=0' el Beispiels- "
imprimir " werte el Originalvorlage genommen (Ergebnisse einsehbar en el Programmtext).\n"
' El Entrada-Werte des Original-Beispiels:
' x!=1 : y!=1 : z!=0 : h!=0.2 : xend!=3
' führen a folgender Edición:
'Schritt X Y Z
' 0 1 1 0
' 1 1.2 1.18011937557392 0.217584940312213
' 2 1.4 1.32150759540037 0.462240502741668
' 3 1.6 1.42651937035306 0.724648391007437
' 4 1.8 1.49791768072086 0.998168848790414
' 5 2 1.53848713605723 1.27796059664382
' 6 2.2 1.55087497139788 1.56043022121442
' 7 2.4 1.5375315540692 1.84287395296026
' 8 2.6 1.50069575905948 2.12323677414932
' 9 2.8 1.44240050556552 2.39994581694282
' 10 3 1.36448684585809 2.67179234356735
' ---
':: ACHTUNG! Auch el Endkriterium es jeweils a el Gleichungsstruktur anzupassen,
':: sonst rechnet lo, a el Speicher voll es!!!
imprimir " X = ";:input x! : if x!=0:x!=1:y!=1:z!=0:h!=0.2:xend!=3.0:goto "skip":endif
imprimir " Y = ";:input y!
imprimir " Z = ";:input z!
imprimir " Schrittweite h = ";:input h!
imprimir " Endwert (hier: X_end) = ";:input xend!
skip:
set("decimals",17)
clear x![],y![],z![]:clearclip
x![0]=x!:y![0]=y!:z![0]=z!
ausgabe:
imprimir "\n Schritt";Tab(25);" X";Tab(50);" Y";Tab(75);" Z":imprimir mkstr$("-",90)
Repeat
imprimir " ";i&,Tab(25);format$("%g",X![i&]);Tab(50);format$("%g",Y![i&]);Tab(75);format$("%g",Z![i&])
::putclip str$(i&)+" "+format$("%g",X![i&])+" "+format$("%g",Y![i&])+" "+format$("%g",Z![i&])+"\n"
k1!=h!*F(x![i&],y![i&],z![i&])
l1!=h!*G(x![i&],y![i&],z![i&])
k2!=h!*F(x![i&]+h!/2,y![i&]+k1!/2,z![i&]+l1!/2)
l2!=h!*G(x![i&]+h!/2,y![i&]+k1!/2,z![i&]+l1!/2)
k3!=h!*F(x![i&]+h!/2,y![i&]+k2!/2,z![i&]+l2!/2)
l3!=h!*G(x![i&]+h!/2,y![i&]+k2!/2,z![i&]+l2!/2)
k4!=h!*F(x![i&]+h!, y![i&]+k3!,z![i&]+l3!)
l4!=h!*G(x![i&]+h!, y![i&]+k3!,z![i&]+l3!)
y![i&+1]=y![i&]+1/6*(k1!+2*k2!+2*k3!+k4!)
z![i&+1]=z![i&]+1/6*(l1!+2*l2!+2*l3!+l4!)
x![i&+1]=x![i&]+h!
inc i&
::if %csrlin>55:waitinput' 55 y 85 a aktuelle Schirmdimensionen adaptar!
::cls:imprimir:imprimir " Schritt";Tab(25);" X";Tab(50);" Y";Tab(75);" Z":imprimir mkstr$("-",90)
::endif
until x![i&]>(xend!*1.000000000000001)'(wegen höherer Genauigkeit de Intel-FPUs)
::imprimir "OK.":beep:imprimir " Edición es auch en Zwischenablage!":waitinput
End
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 15.05.2021 ▲ |
|
|
|