Eulerin menetelmä on yksinkertaisin numeerinen menetelmä tavallisten differentiaaliyhtälöjärjestelmien ratkaisemiseksi . Ensimmäisen kerran Leonhard Euler kuvasi vuonna 1768 teoksessaan "Integral Calculus" [1] . Euler-menetelmä on eksplisiittinen, yksivaiheinen, ensimmäisen asteen tarkkuusmenetelmä. Se perustuu integraalikäyrän approksimaatioon paloittain lineaarisella funktiolla, ns. Eulerin katkoviivalla.
Olkoon Cauchyn tehtävä ensimmäisen kertaluvun yhtälölle:
jossa funktio on määritelty jossain verkkotunnuksessa . Ratkaisua haetaan puoliväliltä . Tällä aikavälillä esittelemme solmut: Likimääräinen ratkaisu solmuissa , joita merkitsemme , määräytyy kaavalla:
Nämä kaavat voidaan yleistää suoraan tavallisten differentiaaliyhtälöiden järjestelmiin.
Askelvirhe tai paikallinen virhe on ero yhden laskentavaiheen jälkeisen numeerisen ratkaisun ja pisteen tarkan ratkaisun välillä . Numeerinen ratkaisu saadaan kaavalla
Tarkkaa ratkaisua voidaan laajentaa Taylor-sarjassa :
Saamme paikallisen virheen vähentämällä ensimmäisen toisesta yhtälöstä:
Tämä on totta, jos sillä on jatkuva toinen derivaatta [2] . Toinen riittävä ehto tämän arvion pätevyydelle, josta edellinen seuraa ja joka on yleensä helposti todennettavissa, on jatkuva differentiaatio molempien argumenttien suhteen [3] .
Virhe yleinen, yleinen tai kumuloitunut virhe on virhe yhtälön integroinnin mielivaltaisen viimeisen segmentin viimeisessä pisteessä. Ratkaisun laskemiseksi tässä vaiheessa tarvitaan vaiheita, joissa on segmentin pituus. Siksi menetelmän globaali virhe .
Eulerin menetelmä on siis ensimmäisen asteen menetelmä - siinä on virhe jossain vaiheessa ja virhe yleensä [3] .
Eulerin menetelmä oli historiallisesti ensimmäinen menetelmä Cauchyn ongelman numeeriseen ratkaisuun. O. Cauchy käytti tätä menetelmää todistaakseen ratkaisun olemassaolon Cauchyn ongelmaan. Alhaisen tarkkuuden ja laskennallisen epävakauden vuoksi Euler-menetelmää käytetään harvoin käytännön ratkaisujen löytämiseen Cauchyn ongelmaan. Yksinkertaisuuden vuoksi Eulerin menetelmää voidaan kuitenkin soveltaa differentiaaliyhtälöiden teoreettisissa tutkimuksissa, variaatioiden laskennan ongelmissa ja useissa muissa matemaattisissa ongelmissa.
Ratkaisun laskennan tarkkuutta ja vakautta on mahdollista lisätä seuraavan muodon eksplisiittisellä Euler-menetelmällä.
Ennuste:
.Korjaus:
.Tarkkuuden parantamiseksi korjaava iteraatio voidaan toistaa korvaamalla .
Muokatulla Euler-menetelmällä uudelleenlaskemalla on toinen tarkkuuskerta, mutta sen toteuttamiseksi on laskettava vähintään kahdesti . Uudelleenlaskennan sisältävä Eulerin menetelmä on muunnelma Runge-Kutta (ennustaja-korjaaja) -menetelmistä.
Toinen tapa lisätä menetelmän tarkkuutta on käyttää ei yhtä, vaan useita aiemmin laskettuja funktioarvoja:
Tämä on lineaarinen monivaiheinen menetelmä .
C - toteutus .
#include <stdio.h> kaksoistoiminto ( double x , double y ) _ { paluu 6 * x * x + 5 * x * y ; // ensimmäinen derivaattafunktio } int main ( int argc , char ** argv ) { int i , n ; kaksinkertainen x , y , h ; h = 0,01 ; // vaihe n = 10 ; // iteraatioiden määrä x = 1 ; // x0 y = 1 ; // y0 for ( i = 0 ; i < n ; i ++ ) { y += h * funktio ( x , y ); // laskenta yi x += h ; } paluu EXIT_SUCCESS ; }Toteutus Python 3.7 :ssä:
# n - iteraatioiden määrä, h - askel, (x, y) - aloituspiste def Euler ( n = 10 , h = 0.01 , x = 1 , y = 1 ): i : lle alueella ( n ): y += h * funktio ( x , y ) x += h palauttaa x , y # ratkaisu def- funktio ( x , y ): palauttaa 6 * x ** 2 + 5 * x * y # ensimmäinen derivaattafunktio tulosta ( Euler ())Toteutus lua-kielellä :
n , h , x , y = 10 , 0.01 , 1 , 1 -- iteraatioiden määrä , askel , alkupisteen koordinaatit funktio f ( x , y ) return 6 * x ^ 2 + 5 * x * y loppu -- ensimmäinen derivaatta funktio i = 1 , n do x , y = x + h , y + h * f ( x , y ) lopputulostus ( ' x : ' .. x .. ' y: ' .. y ) ![]() |
---|
Äärillisen eron menetelmä | |
---|---|
Yleiset artikkelit | |
Erotusjärjestelmien tyypit |