Vba - exemple de probleme - metoda rung-kutta pentru rezolvarea ecuațiilor diferențiale

Soluția ecuațiilor diferențiale de ordinul întâi
prin metoda Runge-Kutta.

Acest proiect VBA permite rezolvarea ecuațiilor diferențiale de ordinul întâi prin una din metodele numerice, și anume metoda Runge-Kutta.







Date inițiale:
  • limitele intervalului a și b;
  • pas de integrare h;
  • valoarea inițială pentru soluția y (a). permițând să determinăm corect constanta ...
se introduc în celulele corespunzătoare din coloana "J".

Și cel mai important (partea cea mai critică), trebuie să introduceți formula în celula "D3" fără erori. Această formulă este obținută dintr-o ecuație dată și reprezintă o funcție care este un derivat al soluției. Parametrii săi pot fi de îndată ce x (adică celula "D4") și x împreună cu y (adică celula "D5"). Figura arată un exemplu de introducere a unei formule pentru o ecuație dată ...
În celulele "D4" și "D5" nu este nevoie să introduceți nimic ... Valoarea valorii va înlocui macroul ...

Vba - exemple de probleme - metoda rung-kutta pentru rezolvarea ecuațiilor diferențiale







După aceea, rămâne să apăsați butonul "Solve" și ... dacă nu ați uitat să activați macrocomenzile, veți vedea valorile curente care se schimbă rapid în celulele din coloana "D". și după sfârșitul ciclului de calcul al valorilor lui y. graficele se vor schimba.

Graficele ar trebui să fie construite pe intervalul setat (în figura de la -0,4 la 1,25) ...
În fiecare punct în care derivatul (graficul albastru) intersectează axa OY. Funcția de soluție (roșu) trebuie să aibă un extremum (maxim sau minim) ...
Dacă, prin răbdare, nu sunteți diferit, nu cereți un interval foarte lung și / sau un pas foarte mic ...

Sugestie:
De fapt, procedura de completare a matricelor x și y folosind metoda Runge-Kutta va arăta astfel:
(cu variabila globală D3formula pre-inițializată: D3formula = Range ("D3") Formula)

Funcția funcțională privată (x ca dublă, y ca dublă) ca derivat dublu
Dim f ca șir
"funcția este calculată prin formula introdusă de utilizator în celula D3 (liderul D4 este x, D5 este y)
f = Înlocuiți (D3formula, "D4", CStr (x))
f = Înlocuiți (f, "D5", CStr (y))
Intervalul ("D3") FormulaLocal = f
func = Interval ("D3")
Terminați funcția

Sub MetodaRungeKutta ()
"variabile auxiliare
Dim k1 Ca dublu, k2 Ca dublu, k3 Ca dublu, k4 Ca dublu
Dim i ca intreg

Pentru i = 1 Valorile n 'zero există deja

x (i) = x (0) + i * h
k1 = func (x (i - 1), y (i - 1))
k2 = func (x (i-1) + h / 2, y (i-1) + k1 * h / 2)
k3 = func (x (i-1) + h / 2, y (i-1) + k2 * h / 2)
k4 = func (x (i), y (i-1) + k3 * h)

y (i) = y (i-1) + h / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
p (i - 1) = k1 'salvând într-o matrice pentru grafic

Pentru afișajul grafic graficele calculate sunt completate în intervalele respective de coloane «AA-AB-AC» ... Poți compara rezultatele cu opțiunea de masă.

Condiții pentru obținerea codului? Arată?

Alte exemple pe tema "SOLUȚIONAREA EQUACAȚIILOR DIFERENȚIALE":







Articole similare

Trimiteți-le prietenilor: