Eulers metode
Introduktion
På denne side skal vi se, hvordan Eulers metode kan bruges til at finde en tilnærmelse til løsningen af en differentialligning. Metoden er nyttig, når vi ikke kan finde en enkel forskrift for løsningen.
Kort fortalt begynder Eulers metode i et kendt punkt og følger den hældning, som differentialligningen giver. Derefter gentages det samme fra det nye punkt.
Idéen bag Eulers metode: En gåtur i en tåget skov
Forestil dig, at du går gennem en tåget, magisk skov. Du kan ikke se den sti, du forsøger at følge. Det eneste, du ved, er, at du står på stien ved begyndelsen af turen. Heldigvis har du et magisk kompas. I ethvert punkt i skoven viser kompasset den retning, som den magiske sti ville følge, hvis den gik gennem netop dette punkt.

Figur 1: Udgangspunktet i skoven. Den skjulte sti er vist med gråt, selv om personen i skoven ikke kan se den.
Du ser på kompasset, vælger en skridtlængde og går lige frem i den retning, kompasset viser. Derefter standser du.
Problemet er, at den rigtige sti kan dreje, mens du går, hvorimod dit skridt følger en ret linje. Medmindre stien tilfældigvis er helt lige på dette stykke, vil du derfor sandsynligvis ende lidt ved siden af stien.
På grund af tågen kan du ikke se, at du er kommet væk fra stien. Kompasset virker dog stadig, uanset hvor du befinder dig. Du ser derfor på det igen, følger den nye retning, tager endnu et lige skridt og gentager processen. Det betyder, at du ikke nødvendigvis går på stien, men du følger nogenlunde stiens bevægelse.
Dette er grundideen bag Eulers metode.

Figur 2: En vandring gennem den magiske skov med fire kompastjek.
Matematisk beskrivelse af metoden
Vi tager udgangspunkt i en differentialligning
\[y'=q(x,y).\]
Her er \(q\) en kendt funktion. Vi leder efter en løsning \(f\), som opfylder differentialligningen. Det betyder, at
\[f'(x)=q(x,f(x)).\]
Vi ved også, at løsningens graf går gennem et kendt punkt \((x_0,y_0)\). Altså er
\[ y_0=f(x_0). \]
I det kendte punkt får vi derfor
\[ f'(x_0)=q(x_0,f(x_0))=q(x_0,y_0).\]
Tallet \(q(x_0,y_0)\) er altså hældningen på tangenten til løsningskurven i punktet \((x_0,y_0)\). Ligningen for tangenten er
\[y=q(x_0,y_0)(x-x_0)+y_0.\]
Vi vælger nu et positivt tal \(h\), som kaldes skridtlængden. Vi bevæger os en vandret afstand \(h\) langs tangenten. Den nye \(x\)-koordinat bliver
\[x_1=x_0+h.\]
Når vi indsætter \(x=x_1\) i tangentens ligning, får vi
\[ y_1 =q(x_0,y_0)(x_1-x_0)+y_0 =h \cdot q(x_0,y_0)+y_0. \]
Vores første tilnærmede punkt er derfor
\[(x_1,y_1)=\left(x_0+h,\,h \cdot q(x_0,y_0)+y_0\right).\]

Figur 3: Princippet i ét Euler-trin. Fra det kendte punkt \((x_0,y_0)\) følger vi tangenten en vandret afstand \(h\). Derved får vi Euler-punktet \((x_1,y_1)\), som ikke nødvendigvis ligger præcis på løsningskurven.
I det nye punkt kan vi beregne \(q(x_1,y_1)\) og bruge denne hældning til det næste skridt. Dermed får vi
\[ x_2=x_1+h\]
og
\[ y_2=h\cdot q(x_1,y_1)+y_1.\]
Når vi gentager den samme fremgangsmåde, får vi formlerne
\[ \boxed{x_{k+1}=x_k+h}\]
og
\[ \boxed{y_{k+1}=h\cdot q(x_k,y_k)+y_k.}\]
Det er den matematiske udgave af turen gennem skoven: Punktet \((x_k,y_k)\) svarer til det sted, vi står, og \(q(x_k,y_k)\) svarer til den retning, kompasset viser. Vi følger retningen et skridt med længden \(h\) og beregner derefter en ny retning.
Eksempel 1: Sådan bruger du Eulers metode
Vi vil bruge Eulers metode på differentialligningen
\[y'=y, \qquad y(0)=1.\]
Løsningen går gennem punktet \((0,1)\). Vi vælger skridtlængden \(h=0\text{,}5\) og vil finde de første to Euler-punkter.
Den eksakte løsning er eksponentialfunktionen
\[f(x)=e^x.\]
For denne differentialligning er
\[q(x,y)=y.\]
Eulers formler bliver derfor
\[x_{k+1}=x_k+h\]
og
\[y_{k+1}=h\cdot q(x_k,y_k)+y_k.\]
Da
\[q(x_k,y_k)=y_k,\]
får vi
\[y_{k+1}=h\cdot y_k+y_k=(1+h)y_k.\]
Vi begynder i det kendte punkt
\[(x_0,y_0)=(0,1).\]
Det første Euler-punkt er
\[x_1=0+0\text{,}5=0\text{,}5\]
og
\[y_1=0\text{,}5\cdot 1+1=1\text{,}5.\]
Dermed er
\[(x_1,y_1)=(0\text{,}5;1\text{,}5).\]
I det andet skridt får vi
\[x_2=0\text{,}5+0\text{,}5=1\]
og
\[y_2=0\text{,}5\cdot1\text{,}5+1\text{,}5=2\text{,}25.\]
Dermed er
\[(x_2,y_2)=(1;2\text{,}25).\]

Figur 4: Eulers tilnærmelse til \(f(x)=e^x\) på \([0,1]\), beregnet med skridtlængden \(h=0\text{,}5\), altså to skridt.
De tre punkter
\[(0,1),\qquad (0\text{,}5;1\text{,}5),\qquad (1\text{,}2;25)\]
udgør Eulers numeriske tilnærmelse på intervallet \([0,1]\). Når Euler-punkterne forbindes med rette linjestykker, får vi en grov tilnærmelse til grafen for \(e^x\).
Hvad betyder skridtlængden?
Tænk tilbage på den tågede skov, stien og det magiske kompas. Hvordan kan du forsøge at holde dig så tæt som muligt på den skjulte sti?
Forestil dig, at du ser på kompasset én gang og derefter går meget langt, før du ser på det igen. Stien kan nå at dreje, mens du fortsætter i samme lige retning. Når du endelig standser, kan du derfor være kommet langt væk fra den. Hvis du tager kortere skridt og ser på kompasset oftere, kan du justere retningen oftere. Du følger stadig ikke nødvendigvis stien helt præcist, men din rute vil sandsynligvis ligge tættere på den. Der er dog også et andet problem. Du er træt og sulten og vil på et tidspunkt gerne ud af skoven. Hvis du tager millimeterkorte skridt og ser på kompasset efter hvert eneste skridt, kan du måske holde dig meget tæt på stien, men turen vil tage urimeligt lang tid.

Figur 5: En sammenligning mellem få store skridt og mange små skridt.
En fornuftig strategi er derfor at finde en balance: Skridtene skal være korte nok til, at du ikke kommer for langt væk fra stien, men lange nok til, at du stadig kommer fremad.
I Eulers metode møder vi den samme balance. En mindre skridtlængde giver som regel en bedre tilnærmelse, fordi retningen beregnes oftere. Til gengæld kræver det flere beregninger. En nyttig strategi er at gentage beregningen med en mindre skridtlængde. Man kan for eksempel først bruge \(h\) og derefter gentage beregningen med \(h/2\). Hvis de to resultater er meget forskellige, var den første skridtlængde sandsynligvis for stor. Hvis resultaterne ligger tæt på hinanden, tyder det på, at tilnærmelsen er ved at stabilisere sig. Når den eksakte løsning er ukendt, kan denne sammenligning ikke fortælle os den præcise fejl. Den kan dog stadig give nyttig information om kvaliteten af tilnærmelsen.
Samme opgave med forskellige skridtlængder
Vi gentager nu den samme konstruktion som i eksempel 1, men med kortere skridtlængder:
\[ h=0\text{,}25,\qquad h=0\text{,}1,\qquad h=0\text{,}05.\]
Hver gang begynder vi i \((0,1)\) og bruger formlerne
\[x_{k+1}=x_k+h\]
og
\[y_{k+1}=h\cdot q(x_k,y_k)+y_k.\]
Når Euler-tilnærmelserne tegnes sammen med den eksakte graf for
\[f(x)=e^x,\]
kan vi se, at tilnærmelsen bliver bedre, når skridtlængden bliver mindre.

Figur 6: Eulers tilnærmelse til \(f(x)=e^x\) på \([0,1]\), beregnet med en skridtlængde på henholdsvis \(h=0\text{,}25\) (til venstre), \(h=0\text{,}1\) (i midten) og \(h=0\text{,}05\) (til højre).
Ved en stor skridtlængde følger Eulers metode hver tangentretning over et forholdsvis langt stykke, før hældningen beregnes igen. Da grafen for eksponentialfunktionen bøjer opad, bliver de rette Euler-linjestykker liggende under den rigtige graf. Ved kortere skridt beregnes hældningen oftere. Den numeriske kurve kan derfor justere sin retning oftere og følger grafen for eksponentialfunktionen tættere.
Ved \(x=1\) får vi følgende værdier:
h | Euler-tilnærmelse til f(1) | Absolut fejl |
0,5 | 2,25000 | 0,46828 |
0,25 | 2,44141 | 0,27688 |
0,10 | 2,59374 | 0,12454 |
0,05 | 2,65330 | 0,06498 |
Tabellen bekræfter det, vi ser på figurerne. Når \(h\) bliver mindre, kommer Euler-tilnærmelsen tættere på den eksakte værdi
\[f(1)=e\approx 2\text{,}71828.\]
Eksempel 2: En skjult løsningskurve
Vi ser nu på differentialligningen
\[y'=x^2+y^2,\qquad y(0)=0.\]
Dette er et eksempel på en Riccati-ligning, altså en førsteordensdifferentialligning, der indeholder et led, som er kvadratisk i \(y\). I dette tilfælde har løsningen ikke en enkel elementær forskrift. Vi kan derfor ikke begynde med at skrive den eksakte løsning ned og tegne dens graf. Vi kender kun begyndelsespunktet og den hældning, som differentialligningen giver i hvert punkt.
For denne differentialligning er
\[ q(x,y)=x^2+y^2.\]
Eulers formler bliver
\[x_{k+1}=x_k+h\]
og
\[y_{k+1}=h\cdot (x_k^2+y_k^2)+y_k.\]
Vi bruger Eulers metode til at tilnærme løsningen på intervallet \(0\leq x\leq 1.\)
Lad os først vælge skridtlængden
\[ h=0\text{,}25.\]
På intervallet fra \(0\) til \(1\) svarer det til fire skridt.
Vi begynder i
\[(x_0,y_0)=(0,0).\]
Det første skridt giver
\[x_1=0\text{,}25\]
og
\[ y_1 =0\text{,}25(0^2+0^2)+0=0.\]
Dermed er
\[(x_1,y_1)=(0\text{,}25;0).\]
I det andet skridt får vi
\[x_2=0\text{,}5\]
og
\[y_2=0\text{,}25\left((0\text{,}25)^2+0^2\right)+0=0\text{,}015625.\]
Når vi fortsætter på samme måde frem til \(x=1\), får vi
\[f(1)\approx 0\text{,}22034.\]
Da løsningen ikke har en enkel elementær forskrift, beregner vi ikke den eksakte fejl direkte. I stedet gentager vi beregningen med mindre skridtlængder og sammenligner resultaterne, som ses i tabellen nedenfor.
h | Euler-tilnærmelse til f(1) | Ændring fra den foregående tilnærmelse |
0,25 | 0,22034 | |
0,125 | 0,27947 | 0.05913 |
0,0625 | 0,31309 | 0.03362 |
0,03125 | 0,33117 | 0.01808 |
0,015625 | 0,34057 | 0.00940 |
0,0078125 | 0,34537 | 0.00480 |
Nedenfor kan du se Eulers tilnærmelse af løsningen med forskellige skridtlængder afbilledet grafisk.

Figur 7: Eulers tilnærmelse til løsningen af \(y'=x^2+y^2\), \(y(0)=0\), på \([0,1]\), beregnet med forskellige skridtlængder.
Det kan både ses i tabellen og på grafen, at tilnærmelsen med \(h=0\text{,}25\) tydeligvis er ret grov. Når skridtlængden først halveres til \(0\text{,}125\) og derefter til \(0\text{,}0625\), ændrer resultatet sig forholdsvis meget.
Derefter bliver ændringerne mindre. Når skridtlængden halveres fra \(0\text{,}015625\) til \(0\text{,}0078125\), ændres tilnærmelsen kun med cirka \(0\text{,}00480.\) Det tyder på, at tilnærmelserne er ved at stabilisere sig.Eksemplet viser også en vigtig praktisk pointé: Flere skridt giver som regel en bedre tilnærmelse, men kræver samtidig flere beregninger.
I dette eksempel giver \(h=0\text{,}0078125\) en lidt finere tilnærmelse end \(h=0\text{,}015625\), men forbedringen er forholdsvis lille i forhold til det ekstra arbejde. Da vi ikke har en enkel eksakt løsning at sammenligne med, beviser denne beregning ikke, hvor tæt den sidste tilnærmelse ligger på den rigtige værdi af \(f(1)\).
De stadig mindre forskelle mellem de efterfølgende tilnærmelser giver dog empirisk støtte for, at de numeriske værdier nærmer sig den samme skjulte løsning.