Euler-metoden

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 8 januari 2022; kontroller kräver 7 redigeringar .

Eulermetoden  är den enklaste numeriska metoden för att lösa system av vanliga differentialekvationer . Först beskrevs av Leonhard Euler 1768 i hans arbete "Integral Calculus" [1] . Euler-metoden är en explicit, ettstegs, första ordningens noggrannhetsmetod. Den är baserad på approximationen av en integralkurva genom en bitvis linjär funktion, den så kallade Euler-streckade linjen.

Beskrivning av metoden

Låt Cauchy-problemet för första ordningens ekvation ges:

där funktionen är definierad på någon domän . Lösningen söks på halvintervallet . På detta intervall introducerar vi noder: Den ungefärliga lösningen vid noder , som vi betecknar med , bestäms av formeln:

Dessa formler kan direkt generaliseras till fallet med system med vanliga differentialekvationer.

Uppskattning av metodens fel vid steget och i allmänhet

Stegfel eller lokalt fel är skillnaden mellan den numeriska lösningen efter ett beräkningssteg och den exakta lösningen vid punkten . Den numeriska lösningen ges av formeln

Den exakta lösningen kan utökas i en Taylor-serie :

Vi får det lokala felet genom att subtrahera den första från den andra likheten:

Detta är sant om den har en kontinuerlig andraderivata [2] . Ett annat tillräckligt villkor för giltigheten av denna uppskattning, från vilken den föregående följer och som vanligtvis lätt kan verifieras, är kontinuerlig differentierbarhet med avseende på båda argumenten [3] .

Felet i allmänhet, globalt eller ackumulerat fel är felet vid den sista punkten av ett godtyckligt sista segment av integrationen av ekvationen. För att beräkna lösningen vid denna punkt krävs steg, där är längden på segmentet. Därför är det globala felet i metoden .

Således är Eulermetoden en första ordningens metod - den har ett fel i ett steg och ett fel i allmänhet [3] .

Betydelsen av Eulers metod

Eulermetoden var historiskt den första metoden för den numeriska lösningen av Cauchy-problemet. O. Cauchy använde denna metod för att bevisa att det fanns en lösning på Cauchy-problemet. På grund av den låga noggrannheten och beräkningsinstabiliteten används Eulermetoden sällan för att hitta praktiska lösningar på Cauchy-problemet. Men på grund av sin enkelhet finner Euler-metoden sin tillämpning i teoretiska studier av differentialekvationer, problem med variationskalkylen och ett antal andra matematiska problem.

Ändringar och generaliseringar

Modifierad Euler-metod med omräkning

Det är möjligt att öka noggrannheten och stabiliteten i beräkningen av lösningen med hjälp av den explicita Euler-metoden i följande form.

Prognos:

.

Korrektion:

.

För att förbättra noggrannheten kan den korrigerande iterationen upprepas genom att ersätta .

Den modifierade Euler-metoden med omräkning har den andra ordningen av noggrannhet, men för dess implementering är det nödvändigt att beräkna minst två gånger . Eulermetoden med omräkning är en variant av Runge-Kutta -metoderna (prediktor-korrigerare).

Adams-Bashforth tvåstegsmetod

Ett annat sätt att öka metodens noggrannhet är att använda inte ett, utan flera tidigare beräknade funktionsvärden:

Detta är en linjär flerstegsmetod .

Implementeringar i programmeringsspråk

C -implementeringen för .

#include <stdio.h> dubbel funktion ( dubbel x , dubbel y ) { returnera 6 * x * x + 5 * x * y ; // första derivata funktion } int main ( int argc , char ** argv ) { int i , n ; dubbel x , y , h ; h = 0,01 ; // steg n = 10 ; // antal iterationer x = 1 ; // x0 y = 1 ; // y0 för ( i = 0 ; i < n ; i ++ ) { y += h * func ( x , y ); // beräkning yi x += h ; } returnera EXIT_SUCCESS ; }

Implementering i Python 3.7 :

# n - antal iterationer, h - steg, (x, y) - startpunkt def Euler ( n = 10 , h = 0,01 , x = 1 , y = 1 ): för i i intervallet ( n ): y += h * funktion ( x , y ) x += h returnerar x , y # lösning def funktion ( x , y ): returnera 6 * x ** 2 + 5 * x * y # första derivata funktion skriv ut ( Euler ())

Implementering på Lua-språket :

n , h , x , y = 10 , 0,01 , 1 , 1 -- antal iterationer, steg, startpunktskoordinater funktion f ( x , y ) return 6 * x ^ 2 + 5 * x * y slut -- första derivatan funktion för i = 1 , n do x , y = x + h , y + h * f ( x , y ) slututskrift ( ' x: ' .. x .. ' y: ' .. y )

Se även

Anteckningar

  1. Euler L. Integralräkning, volym 1, avsnitt 2, kap. 7.
  2. Atkinson, Kendall A. (1989), An Introduction to Numerical Analysis (2:a upplagan), New York: John Wiley & Sons , sid. 342, ISBN 978-0-471-50023-0 
  3. 1 2 Mathematical Encyclopedic Dictionary . - M . : "Ugglor. uppslagsverk" , 1988. - S.  641 .

Litteratur

  • Euler L. Integralkalkyl. Volym 1. - M .: GITTL. 1956. [1]
  • Babenko K. I. Grunderna för numerisk analys. — M.: Nauka. 1986.