Metoda Euler este cea mai simplă metodă numerică de rezolvare a sistemelor de ecuații diferențiale obișnuite . Descris pentru prima dată de Leonhard Euler în 1768 în lucrarea sa „Calcul integral” [1] . Metoda Euler este o metodă explicită, cu un singur pas, de ordinul întâi. Se bazează pe aproximarea unei curbe integrale printr-o funcție liniară pe bucăți, așa-numita linie întreruptă Euler.
Să fie dată problema Cauchy pentru ecuația de ordinul întâi:
unde funcția este definită pe un domeniu . Soluția se caută pe jumătate de interval . Pe acest interval introducem noduri: Soluția aproximativă la nodurile , pe care o notăm cu , este determinată de formula:
Aceste formule pot fi generalizate direct în cazul sistemelor de ecuații diferențiale obișnuite.
Eroarea de pas sau eroarea locală este diferența dintre soluția numerică după un pas de calcul și soluția exactă la punctul . Soluția numerică este dată de formula
Soluția exactă poate fi extinsă într- o serie Taylor :
Obținem eroarea locală scăzând prima din a doua egalitate:
Acest lucru este adevărat dacă are o derivată a doua continuă [2] . O altă condiție suficientă pentru validitatea acestei estimări, din care rezultă cea anterioară și care de obicei poate fi ușor verificată, este diferențiabilitatea continuă față de ambele argumente [3] .
Eroarea în general, eroarea globală sau acumulată este eroarea în ultimul punct al unui segment final arbitrar al integrării ecuației. Pentru a calcula soluția în acest punct, sunt necesari pași, unde este lungimea segmentului. Prin urmare, eroarea globală a metodei .
Astfel, metoda Euler este o metodă de ordinul întâi - are o eroare la un pas și o eroare în general [3] .
Metoda Euler a fost din punct de vedere istoric prima metodă pentru rezolvarea numerică a problemei Cauchy. O. Cauchy a folosit această metodă pentru a demonstra existenţa unei soluţii la problema Cauchy. Datorită preciziei scăzute și instabilității de calcul, metoda Euler este rar folosită pentru a găsi soluții practice la problema Cauchy. Cu toate acestea, datorită simplității sale, metoda Euler își găsește aplicarea în studiile teoretice ale ecuațiilor diferențiale, problemele de calcul al variațiilor și o serie de alte probleme matematice.
Este posibil să creșteți acuratețea și stabilitatea calculului soluției folosind metoda explicită Euler din următoarea formă.
Prognoza:
.Corecţie:
.Pentru a îmbunătăți acuratețea, iterația corectivă poate fi repetată prin înlocuirea .
Metoda Euler modificată cu recalculare are al doilea ordin de precizie, totuși, pentru implementarea sa, este necesar să se calculeze de cel puțin două ori . Metoda Euler cu recalculare este o variație a metodelor Runge-Kutta (predictor-corector).
O altă modalitate de a crește acuratețea metodei este să utilizați nu una, ci mai multe valori ale funcției calculate anterior:
Aceasta este o metodă liniară în mai multe etape .
Implementarea C pentru .
#include <stdio.h> funcția dublă ( dublu x , dublu y ) { returnează 6 * x * x + 5 * x * y ; // funcție derivată întâi } int main ( int argc , char ** argv ) { int i , n ; dublu x , y , h ; h = 0,01 ; // pasul n = 10 ; // numărul de iterații x = 1 ; // x0 y = 1 ; // y0 pentru ( i = 0 ; i < n ; i ++ ) { y += h * func ( x , y ); // calcul yi x += h ; } returnează EXIT_SUCCESS ; }Implementare în Python 3.7 :
# n - numărul de iterații, h - pas, (x, y) - punctul de plecare def Euler ( n = 10 , h = 0,01 , x = 1 , y = 1 ): pentru i în interval ( n ): y += h * funcția ( x , y ) x += h returnează x , y # soluție funcția def ( x , y ): returnează 6 * x ** 2 + 5 * x * y # funcție derivată întâi imprimare ( Euler ())Implementare în limba Lua :
n , h , x , y = 10 , 0.01 , 1 , 1 -- numărul de iterații, pas, punctul de plecare coordonate funcția f ( x , y ) return 6 * x ^ 2 + 5 * x * y final -- prima derivată funcția pentru i = 1 , n do x , y = x + h , y + h * f ( x , y ) end print ( 'x: ' .. x .. ' y: ' .. y ) ![]() |
---|
Metoda diferențelor finite | |
---|---|
Articole generale | |
Tipuri de scheme de diferențe |