Español
Fuente/ Codesnippets

Nichtlineare Differentalgleichungssysteme con Runge-Kutta RK4-Algorithmus lösen

 

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  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.492 Views

Untitledvor 0 min.
p.specht21.11.2021
R.Schneider20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie