Numerieke Methoden voor Differentiaalvergelijkingen

advertisement
Numerieke Methoden voor
Differentiaalvergelijkingen
C. Vuik, P. van Beek, F. Vermolen, J. van Kan
2004
Technische Universiteit Delft
Faculteit Elektrotechniek, Wiskunde en Informatica
Delft Institute of Applied Mathematics
Copyright
 2004 by Delft Institute of Applied Mathematics, Delft, The Netherlands.
No part of this work may be reproduced, stored in a retrieval system, or transmitted, in any
form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without
the prior written permission from Delft Institute of Applied Mathematics, Delft University
of Technology, The Netherlands.
Voorwoord
In dit college worden numerieke methoden besproken voor het oplossen van differentiaalvergelijkingen. Aan de orde komen aspecten, die in praktische problemen een grote rol spelen. In
dit college beperken we ons tot gewone differentiaalvergelijkingen, uitgezonderd het hoofdstuk
over de warmtevergelijking waarin een partiële differentiaalvergelijking behandeld wordt. Een
aantal technieken zoals: interpolatie, numerieke integratie en het oplossen van niet-lineaire
vergelijkingen, kunnen ook buiten de context van differentiaalvergelijkingen gebruikt worden.
Hoofdstukken, paragraven of opgaven met een ∗ , vallen buiten het Delft Instellings Pakket.
Achtergrondinformatie is te vinden in:
Numerical Analysis (7e editie)
R.L. Burden, J.D. Faires
Brodes/Cole publishing company, Pacific Grove, 2001
Applied Numerical Analysis (6e editie)
C.F. Gerald, P.O. Wheatly
Addison Wesley, Reading, 1999
Afternotes on Numerical Analysis
G.W. Stewart
SIAM, Philadelphia, 1996
Inhoudsopgave
1 Inleiding
1.1 Enkele historische opmerkingen . .
1.2 Wat is numerieke wiskunde? . . . .
1.3 Waarom numerieke wiskunde? . . .
1.4 Afrondfouten . . . . . . . . . . . .
1.5 Het O-symbool van Landau . . . .
1.6 Herhaling begrippen uit de analyse
1.7 Samenvatting . . . . . . . . . . . .
1.8 Opgaven . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Interpolatie
2.1 Inleiding . . . . . . . . . . . . . . . . . . . . .
2.2 Lineaire interpolatie . . . . . . . . . . . . . .
2.3 Lagrange interpolatie . . . . . . . . . . . . . .
2.4 Interpolatie met functiewaarden en afgeleiden
2.4.1 Taylorpolynoom . . . . . . . . . . . .
2.4.2 Interpolatie in het algemeen . . . . . .
2.4.3 Hermite interpolatie . . . . . . . . . .
2.5 Interpolatie met splines . . . . . . . . . . . .
2.6 Samenvatting . . . . . . . . . . . . . . . . . .
2.7 Opgaven . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
∗ . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Numeriek differentiëren
3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Eenvoudige differentieformules voor de eerste afgeleide . . .
3.3 Algemene formules voor de eerste afgeleide . . . . . . . . .
3.4 Relatie tussen differentieformules en interpolatie . . . . . .
3.5 Differentieformules voor hogere afgeleiden . . . . . . . . . .
3.6 Richardson’s extrapolatie . . . . . . . . . . . . . . . . . . .
3.6.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Schatting van de fout in de praktijk . . . . . . . . .
3.6.3 Nauwkeuriger formules via Richardson’s extrapolatie
3.7 Samenvatting . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
∗ .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
2
3
7
8
9
10
.
.
.
.
.
.
.
.
.
.
11
11
11
13
16
16
17
17
20
23
24
.
.
.
.
.
.
.
.
.
.
.
25
25
26
30
31
32
33
33
33
35
36
37
4 Niet-lineaire vergelijkingen
4.1 Inleiding . . . . . . . . . . . . . . .
4.2 Een eenvoudige nulpuntsmethode .
4.3 Vaste punt iteratie . . . . . . . . .
4.4 De Newton-Raphson methode . . .
4.5 Stelsels niet-lineaire vergelijkingen
4.6 Samenvatting . . . . . . . . . . . .
4.7 Opgaven . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
38
38
40
42
45
46
47
5 Numerieke integratie
5.1 Introduktie . . . . . . . . . . . . . . . .
5.2 Eenvoudige numerieke integratieformules
5.3 Newton Cotes formules . . . . . . . . . .
5.4 Gauss formules∗ . . . . . . . . . . . . . .
5.5 Samenvatting . . . . . . . . . . . . . . .
5.6 Opgaven . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
48
48
53
58
59
61
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Numerieke tijdsintegratie voor beginwaarde problemen
6.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Theorie van beginwaarde problemen . . . . . . . . . . . . .
6.3 Eenstaps methoden . . . . . . . . . . . . . . . . . . . . . . .
6.4 Foutvoortplanting bij de methode Euler Voorwaarts . . . .
6.5 Stability of initial-value problems . . . . . . . . . . . . . . .
6.6 Afbreekfout en consistentie . . . . . . . . . . . . . . . . . .
6.7 Convergentie . . . . . . . . . . . . . . . . . . . . . . . . . .
6.8 Globale afbreekfout en foutschattingen . . . . . . . . . . . .
6.9 Numerieke methoden voor stelsels differentiaalvergelijkingen
6.10 Stabiliteit van numerieke methoden voor teststelsels . . . .
6.11 Stijve differentiaalvergelijkingen . . . . . . . . . . . . . . . .
6.12 Meerstaps methoden ∗ . . . . . . . . . . . . . . . . . . . . .
6.13 Samenvatting . . . . . . . . . . . . . . . . . . . . . . . . . .
6.14 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
62
62
64
72
76
79
82
86
91
94
101
106
109
110
7 De eindige differentie methode voor randwaarde problemen
7.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 De eindige differentie methode . . . . . . . . . . . . . . . . . .
7.3 Herhaling van enkele lineaire algebra begrippen . . . . . . . . .
7.4 Consistentie, stabiliteit en convergentie . . . . . . . . . . . . . .
7.5 De conditie van de discretisatie matrix . . . . . . . . . . . . . .
7.6 Neumann randvoorwaarde . . . . . . . . . . . . . . . . . . . . .
7.7 Het algemene probleem . . . . . . . . . . . . . . . . . . . . . .
7.8 Niet-lineaire randwaarde problemen . . . . . . . . . . . . . . .
7.9 De convectie-diffusie vergelijking . . . . . . . . . . . . . . . . .
7.10 Samenvatting . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.11 Opgaven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
112
112
113
114
115
117
118
120
121
122
123
125
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8 De
8.1
8.2
8.3
8.4
instationaire warmtevergelijking ∗
Inleiding . . . . . . . . . . . . . . . . . . . . . . .
Afleiding van de instationaire warmtevergelijking
De gediscretiseerde vergelijking . . . . . . . . . .
Samenvatting . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
126
126
126
127
130
9 Optimization problems ∗
9.1 Least squares for linear problems . . . . . . . . . . .
9.1.1 n linear equations with m unknowns (n > m)
9.1.2 Application to fitting data on polynomials . .
9.2 Optimization of non linear problems . . . . . . . . .
9.2.1 Critical points . . . . . . . . . . . . . . . . .
9.2.2 The method of steepest descent . . . . . . . .
9.2.3 Newton’s method for optimization . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
131
132
133
135
135
135
138
139
iii
.
.
.
.
Hoofdstuk 1
Inleiding
1.1
Enkele historische opmerkingen
1
De moderne toegepaste wiskunde begint in de 17e en 18e eeuw met mensen als Stevin, Descartes, Newton en Euler. Numerieke aspecten maakten op natuurlijke wijze deel uit van
de analyse; de term numerieke wiskunde was onbekend. Numerieke methoden bedacht door
Newton, Euler en later Gauss spelen ook vandaag nog een belangrijke rol.
In de 18e en 19e eeuw worden voor allerlei deelgebieden van de natuurkunde, zoals de mechanica en de stromingsleer, fundamentele wetten geformuleerd in de vorm van eenvoudig
ogende wiskundige vergelijkingen. Deze bleken echter, tot veler teleurstelling, alleen in heel
speciale gevallen analytisch te kunnen worden opgelost. De opkomende techniek ontwikkelt
zich dan ook goeddeels los van de wiskunde. De komst van de computer heeft hierin verandering gebracht. Met gebruik van de computer is het mogelijk met gedetailleerde en realistische
wiskundige modellen en numerieke methoden nauwkeurige kwantitatieve informatie te verwerven, betreffende een veelheid van verschijnselen en processen in de natuur en in de techniek.
De toepassing van computers en numerieke methoden is algemeen geworden. Steekproeven
wijzen uit dat in ca. 70% van de artikelen in de vaktijdschriften van de ingenieurswetenschappen wiskundige modellen en methoden worden gebruikt, die niet triviaal zijn.
Berekeningen zijn meestal goedkoper dan experimenten; verder kunnen experimenten onmogelijk of gevaarlijk zijn. Vaak kunnen experimenten alleen op verkleinde schaal worden
uitgevoerd, wat de resultaten minder betrouwbaar maakt.
1.2
Wat is numerieke wiskunde?
Numerieke wiskunde is de leer der methoden voor het getalmatig benaderen van oplossingen
van wiskundige vergelijkingen met eindige rekenprocessen. Of, nog korter: de leer der constructieve methoden in de wiskunde.
In grote delen van de wiskunde zijn de belangrijkste concepten die van afbeelding en verzameling. Voor de numerieke wiskunde moet hieraan worden toegevoegd het concept van
1
voor meer informatie zie http://ta.twi.tudelft.nl/nw/users/vuik/wi211/wi211.html
1
berekenbaarheid. Berekenbaarheid houdt in dat het resultaat verkregen kan worden met een
eindig aantal operaties (zodat de rekentijd eindig is) op een eindige deelverzameling van de
rationele getallen (omdat het geheugen van de computer eindig is). In het algemeen zal het
resultaat een benadering zijn, omdat de meeste wiskundige vergelijkingen operatoren bevatten, die op een oneindig voortlopend proces gebaseerd zijn, zoals integralen en afgeleiden,
en omdat de oplossingen functies zijn, waarvan het domein en bereik ook irrationele getallen
bevatten.
Omdat in het algemeen slechts benaderingen van oplossingen verkregen kunnen worden, kunnen in de numerieke wiskunde slechts die problemen zinvol behandeld worden, die bestand
zijn tegen kleine verstoringen, oftewel stabiel zijn. De vraag naar de stabiliteit heeft de numerieke wiskunde gemeen met de klassieke wiskunde. Een belangrijk hulpmiddel bij de studie
van stabiliteit is de functionaalanalyse. Deze discipline speelt ook een belangrijke rol bij de
studie van de fout: het verschil tussen de numerieke benadering en de exacte oplossing.
De consequenties van het rekenen met een eindige deelverzameling van de rationele getallen,
zijn velerlei. Zo kan een computer bijvoorbeeld geen onderscheid maken tussen polynomen
van voldoend hoge graad. Zodoende kan men niet zonder meer vertrouwen op methoden die
gebaseerd zijn op de hoofdstelling van de algebra (namelijk, dat een n e graads polynoom precies n nulpunten heeft). De fouten die het gevolg zijn van het werken met een eindig aantal
cijfers heten afrondfouten. Aan afrondfouten zal in het vervolg van dit hoofdstuk nog enige
aandacht geschonken worden.
Een belangrijk aspect van de numerieke wiskunde is de nadruk op efficiency. Een vergroting
van efficiency, dat wil zeggen vermindering van het aantal benodigde operaties en/of het benodigde geheugen, wordt elders in de wiskunde niet als een essentiële vooruitgang gezien, in
de numerieke wiskunde echter wel. Deze vooruitgang is van groot praktisch belang. Het einde
hiervan is nog lang niet in zicht. Hier liggen nog vele mogelijkheden voor creatieve geesten.
Verder zal nog veel overhoop gehaald worden door veranderingen in computerarchitectuur.
1.3
Waarom numerieke wiskunde?
Een groot voordeel van numerieke wiskunde is dat een numeriek antwoord verkregen kan
worden voor problemen, die geen ”analytische” oplossing hebben. Neem bijvoorbeeld de
integraal
Zπ p
1 + cos2 (x)dx ,
0
die de lengte geeft van één boog van de kromme gegeven door y = sin x. Er bestaat voor deze
integraal geen oplossing in gesloten vorm. Echter met een numerieke methode kan de integraal
eenvoudig bepaald worden. Een bijkomend voordeel is dat een numerieke methode alleen
gebruik maakt van functie-evaluaties en de operaties: optellen, aftrekken, vermenigvuldigen
en delen. Omdat deze operaties precies de functies zijn die een computer kan uitvoeren,
vormen numerieke wiskunde en computers een perfecte combinatie.
Een voordeel van een analytische methode is dat deze een oplossing geeft in termen van
2
wiskundige functies. Hieruit kan men inzicht verkrijgen in het gedrag en de eigenschappen
van de oplossing. Bij een numerieke oplossing is dit niet het geval. Aan de andere kant, er
wordt vaak gebruik gemaakt van een visualizatie om inzicht in het gedrag van de oplossing te
verkrijgen. Het maken van een grafiek met een numerieke methode is meestal efficiënter dan
het evalueren van de analytische oplossing in een groot aantal punten.
1.4
Afrondfouten
Een computer werkt niet met oneindige precisie. Reële getallen worden in computers opgeslagen als
±0.d1 d2 ...dn · β e
waarbij d1 > 0 en 0 ≤ di < β. We noemen dit een floating point getal waarbij: de mantisse
is 0.d1 d2 ...dn , de basis is β en e (geheel getal) is de exponent. Vaak is β = 2, n = 24 (enkele
precisie), zoals voor vele PC’s. In dubbele precisie geldt n = 56. We zeggen dan dat de
machine rekent met n cijfers.
Laat voor x ∈ R gelden
0.d1 ...dn · β e ≤ x < 0.d1 d2 ...(dn + 1) · β e
waarbij we x gemakshalve positief veronderstellen. Afronding houdt in dat x vervangen
wordt door het dichtstbijzijnde floating point getal, dat we f l(x) zullen noemen. De hierdoor
veroorzaakte fout wordt afrondfout genoemd. Laten we schrijven
f l(x) = x(1 + ).
(1.1)
= || de relatieve fout. Het
We noemen |f l(x) − x| = |x| de absolute fout en |f l(x)−x|
|x|
verschil tussen de floating point getallen waar x tussen ligt is β e−n . Door afronden geldt
|f l(x) − x| ≤ 12 β e−n , zodat voor de absolute fout geldt:
1
|x| ≤ β e−n .
2
Aangezien |x| ≥ β e−1 (omdat d1 > 0) geldt voor de relatieve fout:
|| ≤ eps
(1.2)
met de relatieve precisie van de computer eps gedefinieerd door
1
eps = β 1−n .
2
(1.3)
Met β = 2 en n = 24 geldt dus eps ∼
= 6 · 10−8 : er wordt met ongeveer 7 decimale cijfers
gerekend.
Figuur 1.1 toont de ligging van de floating point getallen 0.1d 2 d3 · β e ; e = −1, 0, 1, 2 in het
binaire stelsel (β = 2). Deze floating point getallen liggen ongelijk verdeeld en er is een gat
3
bij 0. Als een rekenresultaat in dit gat terecht komt noemen we dit underflow. De meeste machines geven een waarschuwing, vervangen het resultaat door 0 en gaan door. Als de absolute
waarde van een rekenresultaat te groot is, is er sprake van overflow. De machine waarschuwt
en stopt.
Hoe voeren computers rekenkundige operaties uit met floating point getallen? Rekenproces-
−4
−3
−2
−1
0
1
2
3
4
Figuur 1.1: De ligging van ±0.1d2 d3 · β e , β = 2, e = −1, 0, 1, 2.
soren zijn ingewikkeld. Meestal wordt het volgende model gebruikt ter benadering van de
werkelijkheid. Laat ◦ een rekenkundige operatie zijn (+, −, × of /), en laten x en y twee
floating point getallen zijn. Dan is de machine-uitkomst van de operatie:
z = f l(x ◦ y)
(1.4)
met x ◦ y de exacte uitkomst. Deze is in het algemeen geen floating point getal, zodat er een
fout gemaakt wordt. Volgens (1.1) geldt
z = {x ◦ y}(1 + ).
(1.5)
voor één of andere die aan (1.2) voldoet.
Stel dat x en y geen floating point getallen zijn, maar benaderd worden met f l(x) en f l(y)
dus f l(x) = x(1 + 1 ), f l(y) = y(1 + 2 ), dan geldt voor de absolute fout van het berekende
antwoord:
|x ◦ y − f l(f l(x) ◦ f l(y))| ≤ |x ◦ y − f l(x) ◦ f l(y)| + |f l(x) ◦ f l(y) − f l(f l(x) ◦ f l(y))|. (1.6)
We zien dat de fout de som is van de doorwerking van de afrondfouten (storingen) in de data
en de floating point fout die het verschil tussen een exacte bewerking en een floating point
bewerking uitmaakt.
We zullen eerst een aantal voorbeelden geven om te laten zien, hoe afrondfouten doorwerken.
Daarna zullen we de algemene rekenregels geven. In deze voorbeelden gebruiken we afkappen,
dat wil zeggen dat f l(x) alleen de significante cijfers meegenomen worden.
Voorbeeld 1.4.1
We nemen x = 75 en y = 31 en gebruiken een denkbeeldige machine waarin gerekend wordt met
β = 10, 5 cijfers en afkappen. In Tabel 1.1 staan de resultaten van verschillende berekeningen
toegepast op f l(x) = 0.71428 × 100 en f l(y) = 0.33333 × 100 . We zullen laten zien hoe de
tabel tot stand gekomen is. Na normalisatie vinden we voor de optelling:
f l(x) + f l(y) = (.71428 + .33333) × 10 0 = 0.1047610000... × 101
4
bewerking
x+y
x−y
x×y
x÷y
resultaat
0.10476 × 101
0.38095 × 100
0.23809 × 100
0.21428 × 101
exacte waarde
22/21
8/21
5/21
15/7
absolute fout
0.190 × 10−4
0.238 × 10−5
0.523 × 10−5
0.571 × 10−4
relatieve fout
0.182 × 10−4
0.625 × 10−5
0.220 × 10−4
0.267 × 10−4
Tabel 1.1: De absolute en relatieve fout voor verschillende berekeningen
Dit resultaat moet naar 5 cijfers worden afgekapt:
f l(f l(x) + f l(y)) = 0.10476 × 101 .
22
= 1.0476190518... De absolute fout is dus 1.0476190518... −
Exact hebben we x + y = 21
−4
1
−4
0.10476 × 10 ≈ 0.190 × 10 en de relatieve fout is 0.190×10
≈ 0.182 × 10−4 .
22/21
De analyse van de fout bij de andere drie bewerkingen verloopt op nagenoeg dezelfde wijze.
Voorbeeld 1.4.2
In dit voorbeeld gebruiken we dezelfde getallen en dezelfde denkbeeldige machine als in het
voorgaande voorbeeld. Verder gebruiken we u = 0.714251, v = 98765.9 en w = 0.111111 ×
10−4 , zodat f l(u) = 0.71425, f l(v) = 0.98765 × 10 5 en w = 0.11111 × 10−4 . Deze getallen
zijn zo gekozen om te laten zien welke problemen er op kunnen treden bij afrondfouten. In
Tabel 1.2 x − y heeft x − u een kleine absolute fout maar een grote relatieve fout. Als we dit
getal delen door een klein getal w of vermenigvuldigen met een groot getal v dan wordt de
absolute fout groter, terwijl de relatieve fout hetzelfde blijft. Het optellen van een groot getal
u en een klein getal v geeft een grote absolute fout, maar een kleine relatieve fout.
bewerking
x−u
(x − u)/w
(x − u) × v
x+y
resultaat
0.30000 × 10−4
0.29629 × 101
0.29629 × 101
0.98765 × 105
exacte waarde
0.34714 × 10−4
0.34285 × 101
0.34285 × 101
0.98766 × 105
absolute fout
0.471 × 10−5
0.465
0.465
0.161 × 101
relatieve fout
0.136
0.136
0.136
0.163 × 10−4
Tabel 1.2: De absolute en relatieve fout voor verschillende berekeningen
We laten nu zien, hoe de eerste rij tot stand gekomen is. Het exacte antwoord is u =
0.714251 en x − u = 57 − .714251 = 0.3471428571.... × 10−4 , terwijl f l(u) = 0.71425 × 100 en
f l(x)−f l(u) = 0.71428−0.71425 = 0.0000300000×10 0 . Normaliseren geeft f l(f l(x)−f l(u)) =
0.30000 × 10−4 . Hieruit volgt de absolute fout: (x − u) − f l(f l(x) − f l(u)) = (.3471428571... −
0.471...×10−5
.30000) × 10−4 ≈ 0.471 × 10−5 . en de relatieve fout: 0.3471428...×10
−4 ≈ 0.136.
Interessant om op te merken is dat de grote relatieve fout die hier ontstaat niets met de beperkingen van het floating point systeem te maken heeft (de aftrekking van f l(x) en f l(u) wordt
in dit geval namelijk foutloos uitgevoerd) maar uitsluitend een gevolg is van de onzekerheid in
de data doordat deze in het floating point systeem slechts door 5 significante cijfers worden gegeven. De nullen die na normalisatie in het enkele lengte resultaat f l(f l(x)−f l(u)) = 0.30000
overblijven hebben dientengevolge geen enkele betekenis: het cijfer 3 is het enige significante;
5
de nullen die ingevuld worden zijn niet meer dan een formaliteit. Dit verschijnsel wordt cijferverlies genoemd. Het verlies van significante cijfers werkt sterk door in de relatieve fout,
omdat daar door het kleine resultaat gedeeld wordt.
Een grote relatieve fout heeft in de verdere loop van het proces vroeg of laat vervelende gevolgen, ook voor de absolute fout. Vermenigvuldigen we x − u bijvoorbeeld met een groot getal
dan ontstaat naast een grote relatieve meteen een grote absolute fout. Als voorbeeld kijken
we naar de derde rij in de tabel. Het exacte antwoord is (x − u) × v = 3.4285594526000....
Bepalen van f l(f l(x) − f l(u)) × f l(v) geeft:
f l(f l(x) − f l(u)) × f l(v) = 0.3 × 10−4 × 0.98766 × 105 = 0.2962980000 × 101 .
Na afkappen geldt: f l(f l(f l(x) − f l(u)) × f l(v)) = 0.29630 × 10 1 . Hieruit volgt de absolute
0.465..
fout: 3.4285594526000...... − 0.29630 × 10 1 ≈ 0.465. en de relatieve fout: 3.4285....
≈ 0.136. Stel
dat we nu bij (x − u) × v iets optellen, bv. y 2 = 19 (merk op dat y = 13 ), dan verdwijnt deze
actie in de ruis van de grote absolute fout. Anders gezegd, het maakt voor de betrouwbaarheid van het resultaat niet uit of we de laatste bewerking achterwege zouden laten en aldus
het numerieke proces zouden wijzigen. Er is niet veel fantasie voor nodig om te concluderen
dat hier iets grondig mis is.
Vrijwel alle numerieke processen vertonen het verschijnsel van cijferverlies voor bepaalde
invoerdata; zulke data kun je slecht geconditioneerd noemen. Er bestaan ook numerieke processen die dit soort verschijnselen voor alle mogelijke invoerdata vertonen; zulke processen
worden instabiel genoemd. Eén van de doelstellingen van de numerieke analyse is zulke processen te identificeren als onbruikbaar, of ze zodanig te verbeteren dat ze stabiel worden.
Rekenregels voor de doorwerking van fouten in een numeriek proces
Bij de analyse van een volledig numeriek proces moet bij elke volgende stap de in de voorgaande stappen geaccumuleerde fout als storing op de oorspronkelijke data worden opgevat en zal,
naast de floating point bewerkingsfout, de doorwerking van deze storingen in het resultaat van
deze stap in beschouwing moeten worden genomen. Na een flink aantal stappen zal deze bron
van fouten meestal belangrijker worden dan de floating point fout (in voorgaand voorbeeld
van (x − u) × v zelfs al na 2 stappen!). In dat stadium zal de fout in een numeriek proces
voor een groot deel door pure ’voortplanting’ van geaccumuleerde fouten worden bepaald. De
regels voor de voortplanting van storingen zijn dezelfde als die voor meetfouten bij fysische
experimenten. Er zijn twee regels, één voor optellen en aftrekken en één voor vermenigvuldigen en delen. De benaderingen van x en y worden x̃ en ỹ genoemd en de (absolute storingen)
δx = x − x̃, analoog δy = y − ỹ
a) Optellen en aftrekken.
(x + y) − (x̃ + ỹ) = (x − x̃) + (y − ỹ) = δx + δy, met andere woorden de absolute fout
in de som van twee gestoorde data is gelijk aan de som van de absolute storingen. Een
zelfde regel geldt voor verschillen: (x − y) − (x̃ − ỹ) = δx − δy. Vaak wordt de regel in
de vorm van een afschatting gepresenteerd: |(x ± y) − (x̃ ± ỹ)| ≤ |δx| + |δy|.
b) Voor vermenigvuldigen en delen geldt deze regel niet (probeer hem maar af te leiden, dat
leidt tot niets). Wel is een overeenkomstige regel voor de relatieve fouten af te leiden,
6
als volgt. De relatieve storingen x en y zijn gedefinieerd door x̃ = x(1 − x ), idem
xy−x(1−x )y(1−y )
=
=
voor y. Voor de relatieve fout in een product xy geldt nu: xy−x̃ỹ
xy
xy
x + y − x y ≈ x + y , aangenomen dat x en y beiden veel kleiner dan 1 zijn. Dus:
de relatieve fout in een product van twee gestoorde getallen is ongeveer even groot als
de som van de twee afzonderlijke relatieve storingen. Voor deling is een zelfde uitspraak
te bewijzen. Als afschatting geformuleerd: | xy−x̃ỹ
xy | ≤ |x | + |y |.
Als we x̃ met f l(x) identificeren en ỹ met f l(y) dan kun je met deze twee simpele regels
allerlei verschijnselen bij floating point berekeningen bij benadering prima verklaren. Bij de
berekening van x − u in Tabel 1.2 bijvoorbeeld wordt helemaal geen afrondfout gemaakt en is
de eerste regel dus exact van toepassing: de totale (absolute) fout is precies gelijk aan de som
van de (absolute) afrondfouten (resp. 0.571 × 10 −5 en 0.100 × 19−5 ) zoals eenvoudig is na te
gaan. In het geval van (x − u) × v uit Tabel 1.2 heeft x − u een absolute fout van ongeveer
10−5 geaccumuleerd en een relatieve van 0.136. Dat is veel en veel groter dan de relatieve
floating point fout (maximaal 12 × 10−4 ) en doorwerking bepaalt vrijwel de gehele fout: de
relatieve fout in (x − u) × v is dan volgens de foutregel voor producten gelijk aan de som van
de relatieve fouten in x − u en v, dus aan 0.136 + 10 −5 = 0.136. De absolute fout volgt direct:
ongeveer 0.465.
1.5
Het O-symbool van Landau
Bij het analyseren van numerieke methoden is het onderzoeken van de fout belangrijk. Hierbij
is een indicatie van de orde van grootte belangrijker dan een nauwkeurige uitdrukking voor de
fout. Om schrijfwerk te besparen maken we gebruik van het (grote O) O-symbool van Landau.
Definitie 1.5.1 Gegeven de functies f en g dan geldt f (x) = O(g(x)) voor x → 0, als er een
positieve r en M bestaat zodanig dat
|f (x)| ≤ M |g(x)|
voor alle
x ∈ [−r, r] .
Bij het schatten van fouten maken we vaak gebruik van de volgende rekenregels:
Rekenregels
Als f (x) = O(xp ) en g(x) = O(xq ) als x → 0, met p ≥ 0 en q ≥ 0 dan is
a) f (x) = O(xs ) voor alle s met 0 ≤ s ≤ p.
b) αf (x) + βg(x) = O(xmin{p,q} ) voor alle α, β ∈ R.
c) f (x)g(x) = O(xp+q ).
d)
f (x)
|x|s
= O(xp−s ) als 0 ≤ s ≤ p.
7
1.6
Herhaling begrippen uit de analyse
In deze paragraaf zullen we een aantal stellingen samenvatten, die vaak gebruikt worden in
de numerieke analyse.
Stelling 1.6.1 (Tussenwaardestelling) Neem aan dat f ∈ C[a, b]. Als f (a) 6= f (b) en C
is een getal tussen f (a) en f (b), dan bestaat er een c ∈ (a, b) zodat f (c) = C.
Stelling 1.6.2 (Stelling van Rolle) Neem aan dat f ∈ C[a, b] en f is differentieerbaar op
(a, b). Als f (a) = f (b), dan bestaat er een c ∈ (a, b) zodat f 0 (c) = 0.
Stelling 1.6.3 (Middelwaardestelling) Neem aan dat f ∈ C[a, b] en f is differentieerbaar
(a)
.
op (a, b), dan bestaat er een c ∈ (a, b) zodat f 0 (c) = f (b)−f
b−a
Stelling 1.6.4 (Taylorpolynoom) Neem aan dat f : (a, b) → R een (n + 1)-maal differentieerbare functie is. Dan geldt voor alle c en x ∈ (a, b) bestaat er een ξ tussen c en x zo
dat
f (x) = Pn (x) + Rn (x),
waarbij het Taylorpolynoom Pn (x) gegeven wordt door
Pn (x) = f (c) + (x − c)f 0 (c) +
en de restterm Rn (x) is:
Rn (x) =
(x − c)2 00
(x − c)n (n)
f (c) + . . . +
f (c)
2!
n!
(x − c)n+1 (n+1)
f
(ξ).
(n + 1)!
Bewijs:
Neem c, x ∈ (a, b) met c 6= x en laat K gedefinieerd zijn door:
f (x) = f (c) + (x − c)f 0 (c) +
(x − c)n (n)
(x − c)2 00
f (c) + . . . +
f (c) + K(x − c)n+1 .
2!
n!
(1.7)
Beschouw de functie
F (t) = f (t) − f (x) + (x − t)f 0 (t) +
(x − t)2 00
(x − t)n (n)
f (t) + . . . +
f (t) + K(x − t)n+1 .
2!
n!
Er geldt nu F (c) = 0 uit (1.7) en F (x) = 0. Volgens de stelling van Rolle bestaat er een ξ
tussen c en x zo dat F 0 (ξ) = 0. Dit uitwerken geeft:
f 000 (ξ)
(x − ξ)2 − f 00 (ξ)(x − ξ)} +
2!
f (n) (ξ)
f (n+1) (ξ)
(x − ξ)n −
(x − ξ)(n−1) } − K(n + 1)(x − ξ)n =
+··· +{
n!
(n − 1)!
F 0 (ξ) = f 0 (ξ) + {f 00 (ξ)(x − ξ) − f 0 (ξ)} + {
=
Dus K =
f (n+1) (ξ)
(x − ξ)n − K(n + 1)(x − ξ)n = 0.
n!
f (n+1) (ξ)
(n+1)! ,
waarmee de stelling bewezen is.
8
1.7
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- numerieke wiskunde
- afrondfouten
- O-symbool van Landau
- herhaling analyse begrippen
9
1.8
Opgaven
1. Laat f (x) = x3 . Bepaal het tweede orde Taylor polynoom voor het steunpunt x = 1.
Bepaal de waarde van dit polynoom in x = 0.5. Geef een schatting van de fout en
vergelijk dit met de echte fout.
2. Laat f (x) = ex . Geef het Taylor polynoom van de orde n en de restterm voor het
steunpunt x = 0. Hoe groot moet n zijn opdat de fout kleiner is dan 10 −6 op het
interval [0,0.5]?
3. Het polynoom P2 (x) = 1 − 21 x2 wordt gebruikt om f (x) = cos(x) te benaderen op
[− 21 , 12 ]. Geef een bovengrens voor de fout in de benadering.
4. Neem x = 13 , y = 57 . We rekenen met 3 cijfers. Schrijf x en y als floating point getallen.
Bepaal voor ◦ = +, −, ∗, /, f l(f l(x) ◦ f l(y)), x ◦ y en de afrondfout.
10
Hoofdstuk 2
Interpolatie
2.1
Inleiding
De vraagstelling: het bepalen van tussenliggende waarden uit een beperkt aantal metingen, of
het voorspellen van waarden in punten die buiten het meetbereik liggen (extrapolatie) komt
in praktijk veel voor. Laten we als voorbeeld het aantal kippen beschouwen in de Nederlandse pluimveehouderijen. In Tabel 2.1 staan de aantallen in miljoenen tussen 1970 en 1995.
jaar
aantal
1970
53
1975
68
1980
82
1985
92
1990
94
1995
92
Tabel 2.1: Het aantal kippen (in miljoenen) in Nederland (bron: NRC 09-12-1998)
We kunnen ons afvragen hoe deze getallen gebruikt kunnen worden om het aantal kippen te
schatten in de tussenliggende jaren bijvoorbeeld in 1992, of te voorspellen in het jaar 2000.
Een aantal interpolatie/extrapolatie methoden om dit te doen worden in dit hoofdstuk besproken.
Ook bij visualizeren van beelden op een computerscherm kan veel geheugenruimte bespaard
worden als niet alle punten opgeslagen worden, maar alleen een beperkt aantal punten. Door
deze punten is dan een kromme gedefinieerd waarmee een min of meer realistisch beeld op
het scherm weergegeven kan worden.
Als laatste toepassing het bepalen van goniometrische functies op een rekenmachine. Het
berekenen van een functiewaarde kost veel rekentijd. Een oplossing hiervoor: sla een aantal functiewaarden op in het geheugen en bepaal op een goedkope manier de waarden in
tussenliggende punten uit de bekende functiewaarden.
2.2
Lineaire interpolatie
De eenvoudigste manier van interpoleren is de nulde graads interpolatie. Stel de waarde in een
bepaald punt is bekend. Dan kiezen we de waarden in de omgeving gelijk aan deze waarde.
Een bekend voorbeeld hiervan is de voorspelling dat het weer van morgen hetzelfde is als
vandaag. Deze voorspelling blijkt in 80% van de gevallen goed te zijn.
11
Een betere vorm van interpolatie is de rechte lijn tussen 2 punten (zie Figuur 2.1). Stel we
f(x0)
p(x)
f(x)
f(x1)
x0
x1
x
Figuur 2.1: Lineaire interpolatie.
weten de meetwaarden in de punten x0 en x1 : f (x0 ) en f (x1 ). Als we verder geen informatie
hebben ligt het voor de hand in het punt x ∗ de waarde van de rechte lijn door de punten
(x0 , f (x0 )), (x1 , f (x1 )) te nemen. Het is eenvoudig in te zien dat de rechte lijn gegeven wordt
door:
x − x0
p(x) = f (x0 ) +
(f (x1 ) − f (x0 ))
x1 − x 0
of
p(x) =
x − x0
x − x1
f (x0 ) +
f (x1 ) .
x0 − x 1
x1 − x 0
De functie p is een lineair interpolatiepolynoom die gelijk is aan f (x 0 ) in x0 en f (x1 ) in x1 .
Een voor de hand liggende vraag is uiteraard: hoe groot is de fout bij lineaire interpolatie
Voorbeeld 2.2.1 (lineaire interpolatie)
α
36◦
37◦
38◦
Stel de waarde van de sinusfunctie is bekend
in 36◦ en 38◦ . De lineaire interpolatiebenadering in 37◦ is dan 0.601723. Het verschil
met de exacte waarde is slechts 0.9 × 10 −4 .
sin α
0.58778525
0.60181502
0.61566148
Tabel 2.2: De waarde van sin α
en waar hangt die van af? Indien we weten dat de functie die we interpoleren tenminste 2
maal continu differentieer is dan kunnen we een uitspraak over de fout maken. Merk op met
[a, b, x0 ] bedoelen we het gesloten interval opgespannen door de uitersten van a, b en x 0 .
12
Stelling 2.2.1 Laat x0 en x1 punten zijn in [a, b], x0 6= x1 en f ∈ C[a, b] ∩ C 2 (a, b). Dan
geldt voor het lineaire interpolatie polynoom p van f op de steunpunten x 0 , x1 en voor elke
x ∈ [a, b] : er is een ξ ∈ (x0 , x1 , x) zodat
f (x) − p(x) =
1
00
(x − x0 )(x − x1 )f (ξ) .
2
(2.1)
Bewijs:
Als x = x0 of x = x1 , dan is f (x) − p(x) = 0 en kan men ξ willekeurig kiezen. Neem aan
x 6= x0 en x 6= x1 . Voor elke waarde van x is er een getal q zodat
f (x) − p(x) = q(x − x0 )(x − x1 ) .
Beschouw voor dit getal q de volgende functie
ϕ(t) = f (t) − p(t) − q(t − x0 )(t − x1 ) .
Hiervoor geldt ϕ(x0 ) = ϕ(x1 ) = ϕ(x) = 0. Volgens de stelling van Rolle zijn er minstens twee
0
0
verschillende punten y en z in (x0 , x1 , x) zodat ϕ (y) = ϕ (z) = 0. Opnieuw volgens Rolle
00
00
00
is er ook een ξ ∈ (y, z) en dus ξ ∈ (x0 , x1 , x) zo dat ϕ (ξ) = 0. Omdat ϕ (t) = f (t) − 2q
00
betekent dit dat q = 21 f (ξ).
Als x ∈/ [x0 , x1 ] dan gebruiken we het interpolatiepolynoom om te extrapoleren. De fout
wordt dan nog steeds beschreven door (2.1).
Bij interpolatie volgt de bovengrens
|f (x) − p(x)| ≤
1
00
(x1 − x0 )2 max |f (ξ)| .
8
ξ∈[x0 ,x1 ]
In praktische toepassingen zijn de waarden f (x 0 ) en f (x1 ) meestal door meting of berekening
verkregen. Deze waarden bevatten dus een fout. Neem aan dat de absolute fout hoogstens
ε is. Het verschil tussen het exacte polynoom p en verstoorde polynoom p̂ wordt begrensd
door:
|x1 − x| + |x − x0 |
|p(x) − p̂(x)| ≤
ε.
x1 − x 0
Bij interpolatie is deze fout altijd begrensd door ε. Bij extrapolatie kan de fout groter worden
dan ε. Stel x ≥ x1 dan wordt de additionele onnauwkeurigheid begrensd door:
|p(x) − p̂(x)| ≤ (1 + 2
x − x1
)ε .
x1 − x 0
De totale fout is de som van de interpolatie/extrapolatie fout en de meetfout.
2.3
Lagrange interpolatie
Indien men meer gegevens dan 2 punten heeft, is het verstandig om ook van die extra punten
gebruik te maken. Een voor de hand liggende methode is een hogere graads interpolatie te
gebruiken. Omdat een polynoom van de graad n, n + 1 onafhankelijke parameters bevat zijn
dus n + 1 gegevens nodig.
13
Als generalisatie van lineaire interpolatie kan men de approximatie beschouwen van een functie
f door een hoogstens n-de graadspolynoom L n , zodanig dat de waarden van f en Ln in een
gegeven n + 1-tal verschillende punten x 0 , ..., xn aan elkaar gelijk zijn. Dit noemen we n-orde
Lagrange interpolatie.
Een polynoom Ln dat aan deze eisen voldoet is gemakkelijk aan te geven in een vorm, die
een duidelijke generalisatie van (2.1) is:
Ln (x) =
n
X
f (xk )Lkn (x) ,
k=0
waarbij
Lkn (x) =
(x − x0 )....(x − xk−1 )(x − xk+1 )....(x − xn )
.
(xk − x0 )....(xk − xk−1 )(xk − xk+1 )....(xk − xn )
Dat dit het goede polynoom is kunen we als volgt zien:
- elke Lkn is een polynoom van de graad n,
- omdat Lkn (xj ) = δkj geldt Ln (xk ) = f (xk ), k ∈ {0, ..., n}.
Het polynoom Ln wordt het Lagrange interpolatiepolynoom genoemd. De polynomen L kn
heten de Lagrange coëfficiënten. Zij kunnen ook geschreven worden als:
n
Y
ω(x)
(x − xi ) .
Lkn (x) =
met ω(x) =
0
(x − xk )ω (xk )
i=0
Een generalisatie van Stelling 2.2.1 is nu:
Stelling 2.3.1 Laat x0 , ..., xn verschillende punten zijn in [a, b]. Laat f ∈ C n [a, b] en f (n+1)
bestaat op (a, b). Dan geldt voor het bijbehorende polynoom L n en voor elke x ∈ [a, b]: er is
een ξ ∈ (x0 , x1 , ..., xn , x) zodat
f (x) − Ln (x) = (x − x0 )....(x − xn )
f n+1 (ξ)
.
n + 1!
Bewijs:
Het bewijs is geheel analoog aan dat van Stelling 2.2.1.
Als we Lagrange interpolatie gebruiken op tabelwaarden, dan krijgt men het beste resultaat
als de steunpunten zo gekozen worden dat x in het (of een) middelste interval ligt. Leg zelf
uit waarom.
Naast de interpolatiefout willen we weten welke extra fouten er kunnen optreden bij hogere
graads interpolatie als de functie (of tabel) waarden niet exact zijn. Neem aan dat de absolute
fout in de waarden hoogstens ε is. De fout in het verstoorde interpolatiepolynoom is dan
hoogstens
n
X
|Lkn (x)|ε .
k=0
Als de steunpunten equidistant zijn, x k = x0 + kh, dan neemt de waarde van
n
P
k=0
|Lkn (x)|
langzaam toe als n groter wordt. In Tabel 2.3 worden een aantal bovengrenzen gegeven.
14
n=1
n=2
n=3
n=4
n=5
x ∈ [x0 , x1 ]
1
1.25
1.63
2.3
3.1
x ∈ [x1 , x2 ]
x ∈ [x2 , x3 ]
x ∈ [x3 , x4 ]
x ∈ [x4 , x5 ]
1.25
1.25
1.4
1.6
1.63
1.4
1.4
2.3
1.6
3.1
Tabel 2.3: Bovengrenzen voor
n
P
k=0
|Lkn (x)|.
In het algemeen verwacht je dat de benaderingsfout afneemt als de graad van het polynoom
toeneemt. Dit is echter niet altijd het geval zoals het volgende voorbeeld laat zien.
Voorbeeld 2.3.1 (interpolatie)
1
Beschouw de functie 1+x
2 op het interval [−5, 5]. Bij de interpolatie gebruiken we de punten
10k
xk = −5 + n , k = 0, ..., n. In Figuur 2.2 is de functie, het 6 e en het 14e graads interpolatiepolynoom afgebeeld. Merk op dat op het interval [-4, 4] de benadering van het 14 e
graadspolynoom beter is dan die van het 6 e graadspolynoom. Echter in de buurt van de
eindpunten vertoont het 14e graadspolynoom grote afwijkingen.
8
7
6
5
4
3
2
1
0
−1
−5
−4
−3
−2
−1
0
1
2
3
4
5
1
e
Figuur 2.2: Interpolatie van functie 1+x
2 (−) met een 6 graads Lagrange polynoom (· · · ) en
een 14e graad Lagrange polynoom (− · − · −).
15
Voorbeeld 2.3.2 (extrapolatie)
Eenzelfde verschijnsel kan optreden bij extrapolatie. Beschouw de functie x1 . Het n-de graads
interpolatiepolynoom wordt bepaald op de steunpunten x k = 0.5 + nk , k = 0, ..., n. Als we
de functie, het 6e en het 10e graads polynoom tekenen op het interval [0.5, 1.8] (Figuur 2.3),
dan zien we dat de polynomen niet te onderscheiden zijn van de functie op het interval [0.5,
1.5]. Echter bij extrapolatie (x ≥ 1.5) treden grote fouten op. Hierbij is opnieuw de fout het
grootst bij het 10-de graadspolynoom.
2.4
2.2
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.5
1
1.5
2
Figuur 2.3: Extrapolatie van functie x1 (−) met een 6e graads Lagrange polynoom (· · · ) en
een 10e graads Lagrange polynoom (− · − · −).
2.4
2.4.1
Interpolatie met functiewaarden en afgeleiden
∗
Taylorpolynoom
Een bekende methode om een functie te benaderen met een polynoom is het Taylorpolynoom.
Als benaderingsmethode wordt deze techniek in de numerieke wiskunde niet zo vaak gebruikt.
Het Taylorpolynoom wordt wel veel gebruikt in de analyse van numerieke processen.
In veel gevallen wordt de benadering door het Taylorpolynoom beter als de graad van het polynoom toeneemt. Maar dit is niet altijd het geval. Dit laten we zien in het volgende voorbeeld:
Voorbeeld 2.4.1 (Taylorpolynoom)
16
De functie f (x) = x1 willen we in x = 3 benaderen met een Taylorpolynoom van de graad n
met het steunpunt x = 1. Voor de afgeleiden geldt: f (k) (x) = (−1)k k!x−(k+1) . Het ne graads
Taylorpolynoom wordt dan gegeven door:
pn (x) =
n
X
k=0
f (k) (1)(x − 1)k /k! =
n
X
k=0
(−1)k (x − 1)k .
De waarden van pn (3) als benadering van f (3) = 31 staan in Tabel 2.4. Hieruit blijkt dat de
benadering onnauwkeuriger wordt als n toeneemt!
n
pn (3)
0
1
1
-1
2
3
3
-5
4
11
5
-21
6
43
7
-85
Tabel 2.4: De waarde van het Taylorpolynoom in het punt x = 3 voor toenemende graad (n).
2.4.2
Interpolatie in het algemeen
In het algemene geval zoeken we bij een functie f een polynoom, zodanig dat in een aantal
verschillende knooppunten x0 , ..., xn niet alleen de waarden van f en p overeenstemmen, maar
ook de waarden van hun afgeleiden tot en met de orde m i .
In wiskundige termen: bij elke xi is een niet negatief getal mi gegeven. Veronderstel dat
f ∈ C m [a, b] met m = max mi . Dan is p het polynoom van de laagste graad zodanig dat
0≤i≤n
dk f
dk p
(x
)
=
(xi ) voor elke i = 0, 1, ..., n en k = 0, 1, ..., m i .
i
dxk
dxk
Opmerkingen
1. De graad van dit polynoom is hoogstens M =
n
P
mi + n.
i=0
2. Als n = 0 dan is p het Taylorpolynoom in x 0 van de graad m0 .
3. Als mi = 0 dan is p het ne graads Lagrange polynoom van f op de punten x 0 , x1 , ..., xn .
Als voorbeeld van algemene interpolatie beschouwen we in de volgende paragraaf de keuze
mi = 1. De resulterende polynomen worden Hermite polynomen genoemd.
2.4.3
Hermite interpolatie
Indien we van een functie niet alleen de functiewaarden in bepaalde punten kennen maar ook
de afgeleiden, dan kunnen we die gegevens gebruiken om een hogere graads benaderingspolynoom te kiezen.
Stel bijvoorbeeld van een functie zijn in 2 punten zowel de functiewaarden als de afgeleiden
17
bekend. Dan hebben we dus in feite 4 gegevens en kunnen een derde graads polynoom construeren met behulp van deze gegevens.
Dus gegeven:
(x0 , f (x0 ))
(x1 , f (x1 )) ,
0
0
(x0 , f (x0 ))
(x1 , f (x1 )) .
Het derde graads polynoom p3 moet voldoen aan de volgende eisen:
p3 (xi ) = f (xi )
0
0
p3 (xi ) = f (xi )
i = 0, 1 ,
i = 0, 1 .
Naar analogie van de Lagrange interpolatiepolynomen is dit polynoom te schrijven als:
p3 (x) =
1
X
0
[f (xi )Hi1 (x) + f (xi )Ĥi1 (x)] ,
i=0
met
Hi1 (xj ) = δij ,
0
Hi1 (xj ) = 0 ,
Ĥi1 (xj ) = 0 ,
0
Ĥi1 (xj ) = δij .
Polynomen die behalve op functiewaarden ook gebaseerd zijn op gegeven afgeleiden staan
bekend onder de naam Hermite polynoom.
De algemene uitdrukking voor Hermite polynomen die functiewaarden en eerste afgeleiden
bevatten luidt:
n
n
X
X
0
f (xj )Ĥjn (x) ,
f (xj )Hjn (x) +
H2n+1 (x) =
j=0
j=0
waarbij
0
Hjn(x) = [1 − 2(x − xj )Ljn (xj )]L2jn (x)
en
Ĥjn (x) = (x − xj )L2jn (x) .
Dat dit het goede polynoom is kunnen we als volgt zien: H jn en Ĥjn zijn polynomen van de
graad 2n + 1. In steunpunt xk geldt Hjn (xk ) = 0 als k 6= j. Als k = j dan geldt:
0
Hjn (xj ) = (1 − 2(xj − xj )Ljn (xj )]L2kn (xj ) = 1 .
Omdat Ĥjn (xk ) = 0 geldt dus H2n+1 (xj ) = f (xj ).
0
Om te laten zien dat ook de afgeleiden overeenstemmen merken we op dat H jn gegeven wordt
door:
0
0
Hjn (x) = −2Ljn (xj )L2jn (x) +
0
0
[1 − 2(x − xj )Ljn (xj )]2Ljn (x)Ljn (x) .
0
Door invullen is eenvoudig te controleren dat H jn (xk ) = 0 voor k = 0, 1, ..., n. De afgeleide
van Ĥjn wordt gegeven door
0
Ĥjn (x) = L2jn (x) + 2(x − xj )Ljn (x)Ljn (x) .
0
0
0
Hieruit volgt Ĥjn (xk ) = δjk zodat H2n+1 (xj ) = f (xj ).
18
Stelling 2.4.1 Als f ∈ C 2n+2 [a, b] dan geldt er is een ξ ∈ (x0 , ..., xn , x) zodat
f (x) − H2n+1 (x) =
(x − x0 )2 ....(x − xn )2 (2n+2)
f
(ξ) .
(2n + 2)!
Bewijs:
Het bewijs hiervan gaat analoog aan het bewijs van Stelling 2.2.1. De hulpfunctie wordt nu
als volgt gekozen:
ϕ(t) = f (t) − H2n+1 (t) −
(t − x0 )2 ....(t − xn )2
[f (x) − H2n+1 (x)] .
(x − x0 )2 ....(x − xn )2
0
Er kan nu bewezen worden dat ϕ (t), 2n + 2 verschillende nulpunten heeft in (x 0 , ..., xn , x).
We zullen aan de hand van twee voorbeelden duidelijk maken waarom soms voor Hermite
interpolatie gekozen wordt in plaats van Lagrange interpolatie.
Voorbeeld 2.4.2 (seismiek)
Bij het opsporen van olie wordt vaak gebruik gemaakt van seismische golven. Een eenvoudig
model voor golfvoortplanting wordt beschreven door het volgende stelsel differentiaalvergelijkingen:
dx
dt
dz
dt
dθ
dt
= c sin θ ,
= −c cos θ ,
= −
dc
sin θ .
dz
De positie wordt aangegeven met (x, z) terwijl θ opgevat kan worden als de hoek, die het golffront maakt met de x-as. We veronderstellen dat de voortplantingssnelheid c alleen afhangt
van de vertikale positie en bekend is in een eindig aantal meetpunten. Bij het oplossen van dit
stelsel hebben we een benadering nodig van c(z) ook in de tussenliggende punten. Lineaire
dc
niet bestaat in de steunpunten. Dit kan
interpolatie in elk interval heeft tot gevolg dat dz
dc
bekend is in de meetpunten, dan kan
grote fouten geven in de oplossing. Als zowel c als dz
e
3 graads Hermite interpolatie gebruikt worden in elk interval. Hiervoor bestaat de eerste
afgeleide wel in alle punten.
Voorbeeld 2.4.3 (visualisatie)
Als we een figuur willen tekenen bepaald door een eindig aantal punten, ontstaan er bij lineaire interpolatie knikken in de grafiek bij de steunpunten. Dit geeft vaak een onrealistische
weergave. Een beter resultaat wordt verkregen met Hermite interpolatie.
1
Stel de grafiek van de functie f (x) = 1+x
3 , x ∈ [0, 4] wordt gebruikt om de helft van een
symmetrische heuvel te visualizeren. Om geheugen en rekentijd te sparen werken visualisatie programma’s vaak met eenvoudige bouwstenen. Stel dat 3 e graads polynomen daartoe
behoren. In Figuur 2.4 is de grafiek benaderd met een aantal interpolatiepolynomen. De
resulterende figuur bij lineaire interpolatie lijkt niet op een heuvel. Hermite interpolatie op
19
dezelfde steunpunten geeft een veel beter resultaat. De vergelijking lijkt niet eerlijk omdat bij
Hermite interpolatie 3e graads polynomen zijn gebruikt. Daarom is de functie ook benaderd
met 3e orde Lagrange interpolatie. Ook dit resultaat is onbruikbaar.
1.2
1
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
2
2.5
3
3.5
4
1
Figuur 2.4: Interpolatie van 1+x
—– functie, · · · lineaire interpolatie, − − − Hermite
3.
e
interpolatie, − · − · − 3 orde Lagrange interpolatie.
2.5
Interpolatie met splines
In de voorgaande paragraven hebben we gezien dat het benaderen van een functie op een
interval tot problemen kan leiden. Het is vaak beter om het interval op te delen in deelintervallen en op elk deelinterval een interpolatie polynoom te construeren. Een probleem hierbij is
dat de afgeleide vaak niet bestaat op de overgang van de deelintervallen. Hermite interpolatie
verhelpt dit probleem, echter hierbij moet de afgeleide bekend zijn. Bij gemeten grootheden
is de afgeleide in de knooppunten onbekend. Een oplossing hiervoor is het gebruikt van zogenaamde splines (uit te spreken op zijn Engels).
Een spline is een stuksgewijs polynoom, die glad aansluit in de knooppunten. Wij zullen
alleen splines van de eerste en derde orde beschouwen.
Definitie
Voor f ∈ C[a, b] is de interpolatie spline van graad 1 : s ∈ C[a, b] zodanig dat als a =
x0 < x, ... < xn = b een partitie is van [a, b] dan is s lineair op elk deelinterval [x i , xi+1 ] en
s(xi ) = f (xi ).
Merk op dat een interpolerende spline van graad 1 niets anders is dan lineaire interpolatie op
20
elk deelinterval. Voor een spline van graad 3 komen wel nieuwe eigenschappen aan bod.
Een spline van graad 3 bestaat uit een stuksgewijs derde graads polynoom. In de knooppunten is de waarde van de spline gelijk aan de gegeven functiewaarden en zijn de eerste en tweede
afgeleide continu. Dit wordt ook wel een cubische spline genoemd.
Definitie
Voor f ∈ C[a, b] heeft de interpolerende spline s van de graad 3 de volgende eigenschappen:
a. s is een derde graads polynoom sj op elk deelinterval [xj , xj+1 ],
b. s(xj ) = f (xj ),
c. sj (xj+1 ) = sj+1 (xj+1 ),
0
0
sj (xj+1 ) = sj+1 (xj+1 ),
00
00
sj (xj+1 ) = sj+1 (xj+1 ),
00
00
d. s0 (x0 ) = sn−1 (xn ) = 0.
Merk op dat s ∈ C 2 [a, b]. Verder kunnen de voorwaarden in d vervangen worden door andere
(rand) voorwaarden.
We zullen nu laten zien hoe zo’n interpolerende spline bepaald kan worden. We schrijven s j
als:
sj (x) = aj (x − xj )3 + bj (x − xj )2 + cj (x − xj ) + dj .
(2.2)
00
Verder definieren we hj = xj+1 − xj , fj = f (xj ) en Gj = sj (xj ). Uit b volgt dj = fj .
We gaan nu de verschillende voorwaarden uit c gebruiken.
00
00
sj (xj+1 ) = sj+1 (xj+1 )
00
Uit (2.2) volgt sj (x) = 6aj (x − xj ) + 2bj . Invullen geeft :
Gj = 2bj
Gj+1 = 6aj hj + 2bj
voor x = xj
en
voor x = xj+1 .
We kunnen nu aj en bj uitdrukken in de Gj :
1
1
(Gj+1 − Gj ) .
bj = Gj en aj =
2
6hj
sj (xj+1 ) = sj+1 (xj+1 )
Hieruit volgt aj h3j +bj h2j +cj hj +dj = fj+1 . Invullen van aj , bj en dj geeft voor cj de volgende
uitdrukking:
2Gj + Gj+1
fj+1 − fj
cj =
− hj
.
hj
6
0
0
s (xj+1 ) = sj+1 (xj+1 )
Dit geeft 3aj h2j + 2bj hj + cj = cj+1 . Invullen geeft
2Gj + Gj+1
fj+1 − fj
1
− hj
hj (Gj+1 − Gj ) + Gj hj +
2
hj
6
2Gj+1 + Gj+2
fj+2 − fj+1
− hj+1
.
=
hj+1
6
21
Vereenvoudiging geeft:
hj Gj + 2(hj + hj+1 )Gj+1 + hj+1 Gj+2 = 6(
fj+2 − fj+1 fj+1 − fj
−
).
hj+1
hj
Deze relatie is geldig voor j = 0 tot j = n − 2. Dit geeft n − 1 vergelijkingen voor de n + 1
onbekenden G0 , ..., Gn . Uit d volgt G0 = Gn = 0. Het resulterende stelsel wordt dan:

 f −f
0



6( 2h1 1 − f1h−f
)
0
G1
2(h0 + h1 )
h1


..






G
h
2(h
+
h
)
h
.
2 
1
1
2
2




=

  ..  

..
..
..
..






.
.
.
.
.


..
Gn−1
hn−2 2(hn−2 + hn−1 )
.
Uit dit stelsel kan de waarde van Gj berekend worden. Hiermee kunnen aj , bj en cj bepaald
worden.
Voorbeeld 2.5.1 (visualisatie)
We beschouwen hetzelfde voorbeeld als in de vorige paragraaf. In Figuur 2.5 is er een cubische
spline gebruikt waarbij het interval opgedeeld is in 6 deelintervallen. Merk op dat de kwaliteit
van de interpolatie beter is dan Hermite interpolatie. Een ander voordeel is dat enkel de
functiewaarden in de steunpunten al voldoende informatie geven. Het is niet nodig om de
afgeleide te weten in de steunpunten.
1.2
1
0.8
0.6
0.4
0.2
0
0
0.5
1
1.5
Figuur 2.5: Interpolatie van
2
1
1+x3 :
22
2.5
3
3.5
4
— functie, - - spline van 3e orde
2.6
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- lineaire interpolatie
- Lagrange interpolatie
- interpolatie met afgeleiden
- Taylor polynoom
- interpolatie in het algemeen
- Hermite interpolatie
- spline interpolatie.
23
2.7
Opgaven
1. Bepaal het tweede graads Lagrange polynoom van f (x) = 1/x gebruikmakend van de
steunpunten x0 = 2, x1 = 2.5 en x2 = 4. Benader hiermee f (3).
2. Bepaal s( 12 ), waarbij s de kubische spline is met steunpunten 0, 1 en 2 voor de functie
f (x) = x. Doe dit ook voor de functie f (x) = x 2 .
24
Hoofdstuk 3
Numeriek differentiëren
3.1
Inleiding
Het volgende citaat
1
bespreekt het verschijnsel ”muisarm” of RSI (Repetitive Strain Injury):
RSI (Repetitive Strain Injury)
Door de opkomst van MS-Windows als besturingssysteem raken we steeds meer met de
muis vergroeid. Na een korte periode van gewenning raakt men al maar enthousiaster.
Handig hoor dat klikken, dubbelklikken en slepen. Na een aantal weken of tijdens
een intensieve cursus beginnen de problemen. In schouder, arm en pols begint het
te tintelen. In het begin gaat de pijn over na een nacht slapen, maar na een aantal
maanden helpt dat niet meer. De muisarm dient zich aan. Net als bij een tennisarm
ontstaan de problemen door overbelasting van spieren en pezen.
Waarom is de muis dan de boosdoener?
1. de muis ligt meestal niet goed op het bureau en gestrekt bedienen levert overbelasting op,
2. verkeerd knijpen in de muis kost te veel kracht,
3. dubbelklikken en positioneren vereisen te veel coördinatie en kracht (slepen!) en
4. de meeste muizen zijn niet ergonomisch ontworpen.
Om een muisarm te voorkomen wordt er onderzoek gedaan aan de krachten, die optreden in
de gewrichten. Hiervoor wordt de positie van de muis gemeten als functie van de tijd. Om de
krachten te kunnen bepalen moeten de optredende snelheden en versnellingen bepaald worden.
Zoals bekend is de snelheid de eerste afgeleide van de verplaatsing naar de tijd en de versnelling
de tweede afgeleide. De vraag is: hoe kunnen we de afgeleide van een functie benaderen als
de functie slechts bekend is in een eindig aantal meetpunten. Bovendien bevatten de waarden
een meetfout. Het effect van de meetfouten op de benaderde snelheden en versnellingen is
van belang. In dit hoofdstuk zullen we aangeven hoe de afgeleiden numeriek bepaald kunnen
worden en wat het effect is van meetfouten.
1
http://www.muisarm.nl/
25
3.2
Eenvoudige differentieformules voor de eerste afgeleide
Stel f is een continu differentieerbare functie. De voorwaartse differentie is gedefinieerd door:
f (x + h) − f (x)
,
h
h>0,
waarbij h de stapgrootte genoemd wordt. Per definitie geldt:
lim
h→0
f (x + h) − f (x)
0
= f (x) ,
h
zodat de voorwaartse differentie naar de afgeleide convergeert. De afbreekfout wordt gedefinieerd door:
f (x + h) − f (x)
0
Rv (h) = f (x) −
.
h
Stelling 3.2.1 Als f ∈ C 2 [x, x + h] dan geldt Rv (h) = − h2 f (ξ), met ξ tussen x en x + h.
00
Bewijs:
Het resultaat volgt eenvoudig uit een Taylorreeks van f (x + h) rond het punt x.
Voorbeeld 3.2.1 (voorwaartse differentie)
We benaderen de afgeleide van de functie gegeven door f (x) = −x 3 + x2 + 2x in het punt
x = 1 met stapgrootte h = 0.5. In Figuur 3.1 zien we dat de benadering van de afgeleide nog
niet zo nauwkeurig is.
3
2.5
2
1.5
1
0.5
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
x+h
Figuur 3.1: De benadering van de afgeleide (- - -) in x = 1 met een voorwaartse differentie
(− · −).
26
3
2.5
2
1.5
1
0.5
0.2
0.4
0.6
0.8
1
x−h
1.2
x
1.4
1.6
1.8
x+h
Figuur 3.2: De benadering van de afgeleide (- - -) in x = 1 met een centrale differentie (− · −).
Op dezelfde manier kan de achterwaartse differentie gedefinieerd worden:
f (x) − f (x − h)
,
h
h>0.
Hiervoor geldt dat de afbreekfout gegeven wordt door R a (h) = h2 f (ξ) met ξ tussen x en
x − h. De nauwkeurigheid is vergelijkbaar met de voorwaartse differentie.
00
Merk op dat de fouten een verschillend teken hebben. Dit brengt ons op het idee om de
formules te middelen zodat de fouten tegen elkaar wegvallen (Waarom?). Het resultaat van
de middeling staat bekend als de centrale differentie:
f (x + h) − f (x − h)
.
2h
In Figuur 3.2 zien we dat dit inderdaad een betere benadering geeft. Als de derde afgeleide
van f bestaat dan wordt de afbreekfout in de centrale differentie:
0
R2 (h) = f (x) −
f (x + h) − f (x − h)
,
2h
gegeven door
h2 000
f (ξ) ,
6
met ξ tussen x − h en x + h. Om dit te bewijzen ontwikkelen we f in x in een Taylorpolynoom
met restterm en gebruiken we de tussenwaardestelling. Merk op dat de fout in de centrale
differentie benadering veel sneller naar nul gaat als functie van h dan bij de voorwaartse
formule.
R2 (h) = −
27
Voorbeeld 3.2.2 (afrondfouten)
We gaan de afgeleide van de functie e x benaderen in het punt x = 1. De afgeleide is gelijk
aan e = 2.71828.... We berekenen de afgeleide met de centrale differentie formule en rekenen
met 6 cijfers. De gebruikte getallen staan in Tabel 3.1 en de benaderingen in Tabel 3.2. Voor
x
0.8000
0.9000
0.9900
0.9990
0.9999
1.0000
1.0001
1.0010
1.0100
1.1000
1.2000
exp(x)
2.22554
2.45960
2.69123
2.71556
2.71801
2.71828
2.71855
2.72100
2.74560
3.00416
3.32011
h
0.2000
0.1000
0.0100
0.0010
0.0001
benadering
2.7364
2.7228
2.7185
2.7200
2.6999
fout
-0.01814
-0.00451
-0.00021
-0.00171
0.01828
Tabel 3.2: De resultaten met de centrale differentie formule
Tabel 3.1: De gebruikte waarden
dalende h wordt de benadering eerst beter, maar daarna verslechtert hij. Deze verslechtering
wordt veroorzaakt door afrondfouten. We werken dit uit voor:
ˆ
ˆ
f(1.001)
− f(0.999)
= 2.72100 − 2.71556 = 0.00564 .
De functiewaarden zijn belast met afrondfouten. De absolute waarde van deze fouten is
hoogstens 5 · 10−6 . De relatieve fouten zijn dan hoogstens 5 · 10 −6 /2.7 ≈ 2 · 10−6 . Een
bovengrens voor de absolute fout in bovenstaand verschil is 10 · 10 −6 , hetgeen een relatieve
fout in het verschil veroorzaakt van
10−5 /0.00564 ≈ 2 · 10−3 .
Deze fout is 1000 maal zo groot als de maximale relatieve fout in de functiewaarden. Dit
effect wordt sterker naar mate h kleiner wordt.
Het bovenstaande voorbeeld laat zien dat de te bereiken nauwkeurigheid voor de bepaling van
de afgeleide met een differentieformule begrensd is. We zullen dit voor de centrale differentie
verder analyseren. Door het verkleinen van de stapgrotte h zal de fout R 2 (h) kleiner worden,
echter de bovengrens S2 (h) van de fout tengevolge van afrondfouten zal toenemen. Er is dus
een optimale waarde van h waarbij de totale fout |R 2 (h)| + S2 (h) het kleinst is. Deze waarde
van h is onbekend maar men kan wel een benadering hiervoor vinden.
Stel dat de functiewaarden een afrondfout bevatten van hoogstens ε. Dit levert een bovengrens
0
voor de fout S2 (h) = hε (waarom?) in de numerieke benadering van f (1). De totale fout
wordt dus gemajoreerd door de grootheid ϕ(h), die gegeven wordt door:
ϕ(h) =
ε h2
+ m,
h
6
28
000
waarbij m een bovengrens
qvoldoend grote omgeving van 1. De functie
q is voor |f (x)| op een
3 3ε
3 9 2
ϕ heeft een minimum
8 ε m voor hopt =
m (leid dit zelf af). Voor ons voorbeeld
staat ϕ(h), S2 (h) en |R2 (h)| getekend in Figuur 3.3. Voor m = e volgt h opt = 0.017 en
ϕ(hopt ) = 0.00043. Merk op dat de fout in de buurt van h opt niet veel varieert, zodat een
stapgrootte in de buurt van hopt tot een vergelijkbare nauwkeurigheid al leiden.
Opmerkingen
1. Als de benadering van de afgeleide niet nauwkeurig genoeg is dan zijn er twee mogelijke
aanpakken om dit te verbeteren:
- de afrond- of meetfout in de functiewaarden verkleinen,
- overgang op een hogere orde differentieformule. In dit geval is de afbreekfout R(h)
vaak kleiner dan bij een lage orde formule voor grotere waarden van h. Voor grote
h neemt het effect van afrondfouten af.
2. Vaak worden differentieformules gebruikt voor het oplossen van differentiaalvergelijkingen. In dit geval wil men niet de afgeleide nauwkeurig bepalen maar de oplossing. Het
gedrag ten opzichte van afrondfouten is dan meestal gunstiger.
3. Het effect van afrondfouten is het grootst als de fout in de functiewaarden groot is. Dit
is vaak het geval bij metingen zoals aan de muis. In het geval van een door de computer gegenereerde tabel is de afrondfout meestal een stuk kleiner dan bij meetfouten.
Desalniettemin voor kleine h is hij altijd merkbaar.
−3
6
x 10
5
4
3
2
1
0
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
Figuur 3.3: De grafiek van de totale fout ϕ (—), de afbreekfout |R 2 (h)|(−·−) en de afrondfout
S2 (h) (- - -).
29
3.3
Algemene formules voor de eerste afgeleide
De differentieformules gegeven in de vorige paragraaf zijn op een ad-hoc manier geı̈ntroduceerd.
In een aantal toepassingen is het nodig om differentieformules te gebruiken met een hogere
nauwkeurigheid (denk aan afrondfouten) of met roosterpunten, die niet equidistant verdeeld
zijn. In deze paragraaf zullen we een methode presenteren om differentieformules af te leiden.
Stel er zijn n+1 verschillende roosterpunten x 0 , ..., xn gegeven. Gevraagd: bepaal de coëfficiënten αi zodanig dat de orde (k) van de fout:
0
|f (x) − Q(h)| = O(hk )
maximaal is. Hierbij wordt Q(h) gegeven door:
n
X
Q(h) =
αi fi , waarbij fi = f (xi ) .
i=0
De aanpak gaat als volgt: ontwikkel elke f i in een Taylorpolynoom van voldoend hoge graad
met x als steunpunt. Bepaal α0 , ..., αn zodanig dat de orde van de fout maximaal is. We
zullen twee voorbeelden uitwerken:
Centrale differentie
In dit voorbeeld kiezen we x−1 = x − h, x0 = x en x1 = x + h. Taylorontwikkeling geeft:
0
f (x + h) = f (x) + hf (x) +
h3 000
h2 00
f (x) + f (x) + O(h4 )
2
3!
f (x) = f (x)
0
f (x − h) = f (x) − hf (x) +
h2 00
h3 000
f (x) − f (x) + O(h4 )
2
3!
De voorwaarden voor α−1 , α0 en α1 zijn nu:
f (x) :
0
f (x) :
00
f (x) :
α−1 + α0 +
α1 = 0 ,
−hα−1
+ hα1 = 1 ,
h2 α−1
+ h 2 α1 = 0 .
Oplossing van dit stelsel geeft α−1 =
formule:
−1
2h , α0
= 0 en α1 =
1
2h
waarmee we de reeds bekende
f (x + h) − f (x − h)
2h
verkrijgen. Merk op dat de fout bij deze formule O(h 2 ) is.
Q(h) =
Eenzijdige differentieformule van de orde 2
Stel dat de afgeleide gewenst is aan de rand van je meetgebied. Bovendien is een orde 2 van de
afbreekfout gewenst. Kies x0 = x, x1 = x + h en x2 = x + 2h en bepaal de Taylorontwikkeling.
f (x) = f (x) ,
h2 00
f (x) + O(h3 ) ,
2
0
00
f (x + 2h) = f (x) + 2hf (x) + 2h2 f (x) + O(h3 ) .
0
f (x + h) = f (x) + hf (x) +
30
We verkrijgen nu de volgende voorwaarden:
f (x) :
0
f (x) :
00
f (x) :
α0 +
Oplossing van dit stelsel geeft α0 =
eenzijdige differentieformule
Q(h) =
−3
2h , α1
α1 +
α2 = 0 ,
hα1 +
hα2 = 1 ,
h2
2
2 α1 + 2h α2 = 0 .
=
2
h
en α2 =
−1
2h .
De afbreekfout van de verkregen
−3f (x) + 4f (x + h) − f (x + 2h)
2h
(3.1)
is O(h2 ).
3.4
Relatie tussen differentieformules en interpolatie
In paragraaf 3.3 hebben we een algemene manier besproken om differentieformules af te leiden.
Echter een duidelijk nadeel is dat we een stelsel vergelijkingen moeten oplossen waarbij het
aantal onbekenden toeneemt naarmate de orde van nauwkeurigheid toeneemt.
In deze paragraaf zullen we een totaal andere aanpak volgen. In paragraaf functiewaarden
met steunpunten behandeld. Dit interpolatiepolynoom kan natuurlijk ook gezien worden als
een benadering van de oorspronkelijke functie. Het lijkt dus voor de hand te liggen, dat
de afgeleide van het interpolatiepolynoom ook een benadering vormt voor de afgeleide van
de functie. Vanuit deze redenering zullen we op een alternatieve wijze differentieformules
afleiden.
We herhalen de formule voor Lagrange interpolatie. Veronderstel dat x 0 , x1 , ..., xn verschillend
zijn en f ∈ C n+1 [a, b]. Dan geldt:
f (x) =
n
X
f (xk )Lkn (x) + (x − x0 )...(x − xn )
k=0
f n+1 (ξ(x))
,
(n + 1)!
waarbij ξ(x) ∈ [a, b]. Differentiëren van deze uitdrukking geeft:
0
f (x) =
n
X
0
f (xk )Lkn (x) +
k=0
f n+1 (ξ(x))
d
[(x − x0 )...(x − xn )]
dx
(n + 1)!
+(x − x0 )...(x − xn )
d f n+1 (ξ(x))
dx (n + 1)!
De foutschatting is nu een gecompliceerde uitdrukking tenzij x gelijk genomen wordt aan één
van de steunpunten. Voor x = xj wordt de formule voor de afgeleide:
0
f (xj ) =
n
X
0
f (xk )Lkn (xj ) +
k=0
n
Y
(xj − xk )
k=0
k6=j
Voorbeeld 3.4.1 (voorwaartse differentie)
31
f n+1 (ξ(x))
.
(n + 1)!
Voor n = 1, x = x0 en x1 = x0 + h geldt:
L01 (x) =
L11 (x) =
x−x1
x0 −x1
x−x0
x1 −x0
0
, L01 (x) =
0
, L11 (x) =
−1
h
1
h .
,
De formule is dan: f (x0 ) = − h1 f (x0 ) + h1 f (x0 + h) + h2 f (ξ). Dit is precies de formule voor
de voorwaartse differentie.
0
3.5
00
Differentieformules voor hogere afgeleiden
In de inleiding hebben we een voorbeeld gezien waarbij het bepalen van de snelheid en de
versnelling uit gemeten plaatswaarden nodig is. De versnelling is gelijk aan de tweede afgeleide
van de plaats naar de tijd.
Hogere afgeleiden kunnen benaderd worden op dezelfde manier als de methoden waarmee de
eerste afgeleide benaderd is. We beperken ons hier tot het bepalen van de tweede afgeleide
door herhaald toepassen van de formules voor de eerste afgeleide. Voor de numerieke bepaling
van de 2e afgeleide hebben we minimaal 3 punten nodig (waarom?). Stel we willen de 2e
afgeleide benaderen met 3 punten, die op een equidistante afstand liggen:
x-1 h
2
x-h
x +1 h
2
x
x+h
Het ligt voor de hand om de 2e afgeleide te benaderen door het verschil te nemen van de eerste
afgeleide in de punten x + h en x − h. Echter bij toepassing van centrale differenties betekent
dit, dat wij de functie ook in x + 2h en x − 2h nodig hebben. We kunnen dit ondervangen
door de hulppunten x ± 21 h in te voeren. Centrale differentie geeft:
f (x + 12 h) − f (x − 12 h)
h
0
0
00
als benadering van f (x). Op de beide eerste orde afgeleiden passen we opnieuw een centrale
differentie toe:
1 f (x + h) − f (x) f (x) − f (x − h)
(
−
).
h
h
h
Vereenvoudiging van deze formule geeft:
Q(h) =
f (x + h) − 2f (x) + f (x − h)
.
h2
Met behulp van Taylorpolynomen volgt voor de afbreekfout:
00
f (x) − Q(h) =
−h2 (4)
f (ξ) .
12
Merk op dat het effect van afrondfouten nu nog ernstiger is. Een bovengrens voor de fout ten
gevolge van afrondfouten is:
4ε
S(h) = 2 .
h
32
Voor het oplossen van differentiaalvergelijkingen is het soms nodig om een benadering te
0 0
vinden voor (pf ) waarbij p een gegeven functie is. Analoog aan bovenstaande kunnen we
0 0
de volgende benadering van (pf ) opschrijven:
(pf ) (x + 21 h) − (pf ) (x − 12 h)
.
h
0
0
Opnieuw toepassen van centrale differenties geeft:
p(x + 21 h)(f (x + h) − f (x)) − p(x − 21 h)(f (x) − f (x − h))
.
h2
3.6
3.6.1
Richardson’s extrapolatie
Inleiding
In paragraaf 3.2 is aangetoond dat de fout in de voorwaartse differentiebenadering afhangt
00
00
van f . Meestal is f onbekend zodat de gegeven foutschatting onbruikbaar is in de praktijk.
Richardson’s extrapolatie kan gebruikt worden om een schatting te geven van de gemaakte
fout. Daarnaast kan de extrapolatie gebruikt worden om met een lagere orde methode een
hogere nauwkeurigheid te halen. Deze extrapolatie kan gebruikt worden als de vorm van de
fout bekend is. Stel de formule N (h) is bedoeld om een onbekende waarde M te benaderen.
Neem aan dat de fout in deze benadering de vorm
M − N (h) = K1 hα1 + K2 hα2 + ....
(3.2)
heeft, waarbij Ki ∈ IR ongelijk aan nul is en voor αi ∈ IN geldt: 0 ≤ α1 < α2 .....
In deze paragraaf zal Richardson’s extrapolatie toegepast worden op differentieformules, echter de methode kan ook voor andere benaderingsmethoden (interpolatie, numerieke integratie
etc) gebruikt worden, zolang de fout van de vorm (3.2) is.
Als voorbeeld van het gebruik van Richardson’s extrapolatie zullen we in paragraaf 3.6.2 een
foutschatting geven als de αi onbekend zijn. Daarna zullen we in paragraaf 3.6.3 laten zien
hoe we een hogere nauwkeurigheid kunnen verkrijgen als de α i bekend zijn. Natuurlijk kan
in beide toepassingen Richardson’s extrapolatie gebruikt worden zowel als de α i bekend, of
als de αi onbekend zijn.
3.6.2
Schatting van de fout in de praktijk
In de voorgaande paragraven is er vaak een uitdrukking gegeven voor de fout in de differentieformules. Deze uitdrukking bevat vaak een hogere afgeleide van de functie. Echter als we de
eerste afgeleide niet weten, hoe zouden we dan een hogere afgeleide kunnen bepalen? Kortom
de gegeven schattingen zijn vaak theoretisch van belang, maar in de praktijk onbruikbaar.
We zullen daarom een bruikbare methode geven met behulp van Richardson’s extrapolatie.
Voor h klein genoeg kunnen we (3.2) benaderen door
M − N (h) = Khα .
33
(3.3)
Voor een gegeven h kunnen we N (h) uitrekenen zodat (3.3) nog 3 onbekenden bevat: M, K
en α. Het idee is nu om N (h), N ( h2 ) en N ( h4 ) te bepalen. Dit geeft 3 vergelijkingen met 3
onbekenden:
M − N (h) = Khα ,
h
h
M − N ( ) = K( )α ,
2
2
h α
h
M − N ( ) = K( )
4
4
(3.4)
Door de vergelijkingen van elkaar af te trekken houden we 2 onbekenden over:
1
h
N ( ) − N (h) = Khα (1 − ( )α ) ,
2
2
h
h α
1
h
N ( ) − N ( ) = K( ) (1 − ( )α ) .
4
2
2
2
(3.5)
Het delen van deze uitdrukkingen geeft:
N ( h2 ) − N (h)
N ( h4 ) − N ( h2 )
= 2α .
(3.6)
Hieruit kan α bepaald worden. Invullen van α in (3.5) geeft een benadering voor K. Beide
constanten invullen in (3.4) geeft een schatting voor de fout M − N ( h4 ).
Voorbeeld 3.6.1 (praktische foutschatting)
Stel we benaderen de afgeleide van e x in het
punt 1 met behulp van de voorwaartse differentie. Het exacte antwoord is: M = e =
2.71828. De resultaten voor h = 0.1, h2 en h4
staan in Tabel 3.3.
h
0.1
0.05
0.025
Qh
2.8588
2.7874
2.7525
Tabel 3.3: De eerste orde afgeleide van e x met
de voorwaartse differentie
Als we deze resultaten invullen in (3.6) dan krijgen we
2.7874 − 2.8588
= 2.0458 .
2.7525 − 2.7874
Zoals verwacht is de waarde van α bijna gelijk aan 1. Hiermee kunnen we K bepalen uit
(3.5):
2.7525 − 2.7874
= −1.3936 .
K=
0.05(1 − 12 )
De foutschatting is nu K h4 = −0.0348 terwijl de echte fout gelijk is aan:
h
e − N ( ) = −0.0343 .
4
34
In dit voorbeeld is de foutschatting heel betrouwbaar.
Om een betere benadering te vinden zou de foutschatting opgeteld kunnen worden bij de
benadering:
h
h
N ( ) + K = 2.7177 .
4
4
Dit is inderdaad een hele goede benadering echter we kunnen hiervoor nu geen foutschatting
meer geven.
De vraag zou kunnen zijn: waarom gaan we in bovenstaand voorbeeld niet uit van α = 1; dit
volgt immers uit de analyse? Inderdaad als de functie voldoende glad is dan geldt α = 1 en zou
α niet bepaald behoeven te worden. Echter in de praktijk hebben we vaak een ingewikkelder
situatie. De volgende complicaties kunnen zich voordoen:
- Het is onbekend of hogere afgeleiden bestaan en/of begrensd zijn.
- Het uiteindelijke antwoord is een combinatie van verschillende benaderingsmethoden.
De invloed van deze benaderingen op α is niet altijd duidelijk.
- Tijdens het implementeren van het algoritme in een computerprogramma zijn fouten
gemaakt.
Ten gevolge van deze complicaties is het in de praktijk goed om te controleren of de berekende
α overeenstemt met de α die volgt uit de theorie.
3.6.3
Nauwkeuriger formules via Richardson’s extrapolatie
∗
In een aantal toepassingen zijn de waarde van α i in (3.2) bekend. We kunnen Richardson’s
extrapolatie dan gebruiken om nauwkeuriger formules te bepalen. Als voorbeeld zullen we de
voorwaartse differentie beschouwen. De fout in de voorwaartse differentieformule blijkt door
gebruik van hogere orde Taylorpolynomen geschreven te kunnen worden als:
0
f (x) − Qv (h) = K1 h + K2 h2 + ... .
Als we de differentie ook uitrekenen voor
h
2
dan geldt:
h
h
h
0
f (x) − Qv ( ) = K1 + K2 ( )2 + ... .
2
2
2
Als we nu (3.8) met 2 vermenigvuldigen en (3.7) hier van aftrekken dan geldt:
h
1
0
f (x) − (2Qv ( ) − Qv (h) = − K2 h2 + ... .
2
2
Hieruit volgt dat de differentieformule
h
2Qv ( ) − Qv (h) =
2
=
(3.7)
2f (x + h2 ) − f (x)
h
2
−
f (x + h) − f (x)
h
−3f (x) + 4f (x + h2 ) − f (x + h)
,
h
een afbreekfout O(h2 ) heeft. Deze formule is gelijk aan (3.1) met h/2 in plaats van h.
35
(3.8)
3.7
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- differentie methode voor de eerste afgeleide
- het effect van meetfouten
- differentie methode voor hogere afgeleiden
- Richardson’s extrapolatie
- foutschatting in de praktijk.
- verhogen nauwkeurigheid
36
3.8
Opgaven
1. Bewijs voor f ∈ C 3 [x − h, x + h], dat de afbreekfout bij centrale differenties O(h 2 ) is.
2. Stel dat de positie van een schip bepaald kan worden met een meetfout van hoogstens
10 meter. Verder veronderstellen we dat de werkelijke plaats van het schip tijdens het
op gang komen geven wordt door de functie S(t) = 0.5at 2 , waarbij S in meters en
t in seconden uitgedrukt wordt. De snelheid wordt benaderd met een achterwaartse
differentie met stapgrootte h. Geef de afbreekfout en de meetfout in deze formule.
Als a = 0.004 bepaal dan de waarde van h waarvoor de fout in de bepaalde snelheid
minimaal is. Hoe groot is de fout?
3. Gegeven f (x), f (x+h) en f (x+2h). Bepaal een formule om f 0 (x) te benaderen waarbij
de fout minimaal is.
4. Gegeven de functie f (x) = sin x, x ∈ [0, π]. Bepaal f 0 (1) met behulp van een centrale
differentie voor h = 0.1. Geef een schatting van de fout via Richardson’ s foutschatting.
37
Hoofdstuk 4
Niet-lineaire vergelijkingen
4.1
Inleiding
In dit hoofdstuk geven we numerieke methoden voor het bepalen van x, die voldoet aan de
niet-lineaire vergelijking f (x) = 0.
Als voorbeeld nemen we de drukval in een stromende vloeistof. Bij lage stroomsnelheden is
de stroming laminair terwijl bij hoge snelheden de stroming turbulent genoemd wordt. Het
Reynoldsgetal kan gebruikt worden om te zien of een stroming turbulent is. Voor een stroming
in een ronde pijp met diameter D(m) wordt het Reynoldsgetal gegeven door
Re =
Dv
,
ν
waarbij v (m/s) de gemiddelde vloeistofsnelheid is en ν (m 2 /s) de viscositeit is van de vloeistof. Als het Reynoldsgetal kleiner is dan 2100 dan is de stroming laminair, terwijl als
Re ≥ 3000 dan is er een turbulente stroming.
Voor een turbulente stroming wordt het drukverschil tussen de uit- en inlaat gegeven door
Puit − Pin =
ρwLv 2
,
2gD
hierbij is w de wrijvingsfactor, ρ (kg/m 3 ) is de soortelijke dichtheid, L (m) is de lengte en
g (m/s2 ) is de valversnelling. Als de vloeistof deeltjes bevat (zand, papiervezels) dan voldoet
de wrijvingsfaktor w aan de vergelijking:
√
ln(Re w) + 14 − 5.6
1
k
√ =
,
k
w
waarbij k een parameter is, die bekend is uit experimenten.
In dit hoofdstuk zullen methoden behandeld worden om w te bepalen uit deze vergelijking,
als de waarden van Re en k gegeven zijn.
4.2
Een eenvoudige nulpuntsmethode
Bisectie
De eerste methode, de Bisectie methode, is gebaseerd op de tussenwaarde stelling 1.6.1. Stel f
38
is een continue functie gedefinieerd op een interval [a, b] waarbij f (a) en f (b) een tegengesteld
teken hebben. Volgens de tussenwaarde stelling bestaat er een getal p in (a, b) waar f (p) = 0.
We nemen aan dat er slechts één zo’n p is. In de methode wordt het interval steeds gehalveerd
waarbij in elke stap het interval gekozen wordt waar p in ligt.
We starten de methode met a1 = a en b1 = b en nemen voor p1 het gemiddelde van a1 en b1 :
1
p1 = (a1 + b1 ) .
2
Als f (p1 ) = 0 dan zijn we klaar, anders heeft f (p 1 ) hetzelfde teken als f (a1 ) of f (b1 ). Als
f (p1 )f (a1 ) > 0 dan nemen we a2 = p1 en b2 = b1 anders a2 = a1 en b2 = p1 . Daarna herhalen
we de procedure met het interval [a2 , b2 ].
Stopcriterium
De Bisectie methode is een iteratieve methode. Dat betekent dat een gebruiker op moet geven
wanneer de methode moet stoppen. De volgende stopcriteria kunnen gebruikt worden
|pn − pn−1 |
≤ε,
|pn |
of
|f (pn )| < ε .
Convergentie
De Bisectie methode kan traag convergeren. Het kan ook gebeuren dat |p i−1 − p| |pi − p|.
Een groot voordeel is dat de methode altijd convergeert naar een oplossing. De Bisectie
methode wordt vaak gebruikt om een goede startoplossing te genereren voor efficiëntere methoden, die later in dit hoofdstuk behandeld zullen worden.
Stelling 4.2.1 Stel f ∈ C[a, b] en f (a) · f (b) < 0, dan genereert de Bisectie methode een rij
{pn } die convergeert naar een nulpunt p van f waarbij
|pn − p| ≤
Bewijs:
Voor elke n ≥ 1 hebben we bn − an =
volgt
b−a
,
2n
1
(b
2n−1
|pn − p| 5
n≥1.
− a) en p ∈ (an , bn ). Omdat pn = 12 (an + bn )
1
b−a
(bn − an ) = n .
2
2
Afrondfouten
Als van een functie f de berekende waarden fˆ een afrondfout ε̄ hebben dan kan men niet het
echte nulpunt p bepalen, immers elk punt van de verzameling
I = {x ∈ [a, b] | |f (x)| < ε̄}
zou het (of een) nulpunt van f kunnen zijn. Een dergelijk interval noemt men een onbetrouwbaarheidsinterval. Het heeft bijvoorbeeld geen zin om als stopcriterium
|f (pn )| < ε
39
te nemen als ε < ε̄ gekozen is. Grote kans dat het algoritme dan altijd blijft itereren. Met
0
behulp van het Taylorpolynoom blijkt dat als p een enkelvoudig nulpunt is van f en f (p) 6= 0
dan is I ongeveer gelijk aan
I ≈ [p −
ε̄
ε̄
, p+ 0
].
|f (p)|
|f (p)|
0
0
Merk op dat als |f (p)| dicht bij 0 ligt, het bepalen van p een slecht gesteld probleem is.
4.3
Vaste punt iteratie
Een vast punt van een gegeven functie g is een getal p zodanig dat g(p) = p. In deze paragraaf
beschouwen we het vinden van oplossing voor een vast punt probleem en het verband tussen
deze problemen en het vinden van nulpunten.
Het vinden van een nulpunt en vast punt problemen zijn als volgt gerelateerd: als we het
nulpunt p zoeken zodat f (p) p
= 0, dan kunnen we een niet unieke functie g definiëren als
g(x) = x − f (x) of g(x) = x + f (x). Aan de andere kant als g een vast punt heeft in p, dan
heeft de functie gedefinieerd door f (x) = x − g(x) een nulpunt in p.
In de volgende stelling geven we voldoende voorwaarden voor de existentie en eenduidigheid
van een vast punt.
Stelling 4.3.1
1. Als g ∈ C[a, b] en g(x) ∈ [a, b] voor alle x ∈ [a, b] dan heeft g een vast
punt in [a, b].
0
2. Als bovendien g (x) bestaat voor x ∈ [a, b] en er is een positieve constante k < 1 zodanig
dat
0
|g (x)| ≤ k voor alle x ∈ [a, b] ,
dan is het vaste punt in [a, b] uniek.
Bewijs:
1. Als g(a) = a of g(b) = b dan heeft g een vast punt in een eindpunt. Anders geldt
g(a) > a en g(b) < b. De functie h(x) = g(x) − x is continu op [a, b] en h(a) > 0 en
h(b) < 0. Uit de tussenwaarde stelling 1.6.1 volgt er is een p zodat h(p) = 0, dus p is
een vast punt van g.
0
2. Stel |g (x)| ≤ k < 1 en er zijn twee vaste punten p en q waarbij p < q. Uit de
middelwaardestelling volgt er is een ξ ∈ [p, q] zodat
g(p) − g(q)
0
= g (ξ) .
p−q
Dan volgt
0
|p − q| = |g(p) − g(q)| = |g (ξ)||p − q| < |p − q| ,
dit is een tegespraak, dus p = q en het vaste punt is uniek.
40
Om een vast punt van een functie g te benaderen, kiezen we een startwaarde p 0 en bepalen pn
door middel van pn = g(pn−1 ) voor n ≥ 1. Als de rij convergeert naar p en g is een continue
functie dan geldt
p = lim pn = lim g(pn−1 ) = g( lim pn−1 ) = g(p) ,
n→∞
n→∞
n→∞
zodat p een vast punt is van g. Dit noemen we de vaste punt (of Picard) iteratie.
Voorbeeld
Voor het bepalen van het nulpunt van de functie f (x) = x 3 + 3x − 4, gebruiken we de
hulpfunctie:
4
g(x) = 2
x +3
in onze vaste punt methode. Deze functie is bepaald via de volgende stappen:
f (x) = 0, x3 + 3x − 4 = 0
4
+3
In Figuur 4.1 staat het iteratieproces getekend, waarbij gestart is met x 0 = 0.
x3 + 3x = 4 → x(x2 + 3) = 4 → x =
x2
2
h
g
1.8
1.6
g(p )
1.4
0
1.2
g(p2)
g(p )
1
3
g(p1)
0.8
0.6
0.4
0.2
0
0
0.2
p
0
0.4
0.6
0.8
1
p
2
1.2
p
3
1.4
1.6
1.8
2
p
1
Figuur 4.1: Grafische voorstelling van de vaste punt methode
Convergentie van de methode volgt uit de Vaste Punt Stelling.
0
Stelling 4.3.2 Stel g ∈ C[a, b], g(x) ∈ [a, b], als x ∈ [a, b] en |g (x)| ≤ k < 1 voor x ∈ [a, b].
Dan geldt dat de vaste punt iteratie convergeert naar p voor elke waarde p 0 ∈ [a, b].
41
Bewijs:
Onder de gegeven voorwaarden heeft g een uniek vast punt p. Uit de middelwaarde stelling
volgt:
0
|pn − p| = |g(pn−1 ) − g(p)| = |g (ξ)||pn−1 − p| ≤ k|pn−1 − p| .
Met inductie volgt
lim |pn − p| ≤ lim k n |p0 − p| = 0 ,
n→∞
n→∞
dus pn convergeert naar p.
De bovenstaande stelling kan ook gebruik worden om een goed stopcriterium te geven.
Merk op dat voor m > n ≥ 1 geldt
|pm − pn | = |pm − pm−1 + pm−1 + ... + pn+1 − pn |
≤ |pm − pm−1 | + |pm−1 − pm−2 | + ... + |pn+1 − pn |
≤ k m−n |pn − pn−1 | + ... + k|pn − pn−1 |
= (k + ... + k m−n )|pn − pn−1 | .
Omdat lim pm = p geldt
m→∞
|p − pn | = lim |pm − pn | 5 k
m→∞
∞
X
i=0
k i |pn − pn−1 | =
k
|pn − pn−1 | .
1−k
Dit betekend dat als we stoppen wanneer
|pn − pn−1 | ≤
1−k
ε,
k
dan geldt |p − pn | ≤ ε.
4.4
De Newton-Raphson methode
De Newton-Raphson methode is één van de krachtigste en bekendste numerieke methoden
voor het oplossen van een niet-lineaire vergelijking f (x) = 0. We zullen de methode uitleggen
aan de hand van een Taylorpolynoom.
Veronderstel f ∈ C 2 [a, b]. Laat x̄ ∈ [a, b] een benadering zijn van de oplossing p zodanig dat
0
f (x̄) 6= 0 en veronderstel dat |x̄ − p| klein is. Beschouw het eerste graads Taylorpolynoom:
0
f (x) = f (x̄) + (x − x̄)f (x̄) +
(x − x̄)2 00
f (ξ(x)) ,
2
waarbij ξ(x) ∈ (x, x̄). Omdat f (p) = 0 geldt
0
0 = f (x̄) + (p − x̄)f (x̄) +
(p − x̄)2 00
f (ξ(x)) .
2
Omdat we aangenomen hebben dat |p − x̄| klein is geldt:
0
0 ≈ f (x̄) + (p − x̄)f (x̄) .
42
Als we hieruit p oplossen krijgen we
p ≈ x̄ −
f (x̄)
.
f 0 (x̄)
Dit motiveert de Newton-Raphson methode, die start met een beginbenadering p 0 en een rij
{pn } genereert volgens
pn = pn−1 −
f (pn−1 )
,
f 0 (pn−1 )
voor
n≥1.
Voorbeeld
Stel we√willen het positieve nulpunt bepalen van de functie f (x) = x 2 −2. Het exacte antwoord
is p = 2 = 1.41421. We nemen als startpunt p 0 = 1. De vergelijking van de raaklijn is nu
h(x) = −1 + 2(x − 1).
De nieuwe benadering van het nulpunt p 1 is nu:
p1 = 1 −
−1
= 1.5.
2
Zo doorgaande vinden we:
p1 = 1.50000
p2 = 1.41666
p3 = 1.41421
Hieruit blijkt dat de oplossing al na 3 stappen gevonden is. De procedure voor de eerste
iteratie staat uitgelegd in Figuur 4.2.
2
f(x) = x −2
raaklijn
2
1
p
0
p
1
−1
0
−1
1
2
f(p )
0
−2
Figuur 4.2: De Newton-Raphson methode
We kunnen dezelfde stopcriteria gebruiken als bij de bisectie methode:
|pn − pn−1 |
<ε
|pn |
of
43
|f (pn )| < ε .
In de stelling hierna geven we het verband tussen de Newton-Raphson iteratie en een vaste
punt methode.
0
Stelling 4.4.1 Laat f ∈ C 2 [a, b]. Als p ∈ [a, b] zodat f (p) = 0 en f (p) 6= 0 dan is er een
δ > 0 zodanig dat Newton’s methode een rij {p n } genereert, die naar p convergeert voor elke
p0 ∈ [p − δ, p + δ].
Bewijs:
Beschouw Newton’s methode als de vaste punt iteratie p n = g(pn−1 ) met
g(x) = x −
f (x)
.
f 0 (x)
0
We proberen eerst een interval [p − δ, p + δ] te vinden zodat |g (x)| ≤ k < 1 voor (p − δ, p + δ).
0
0
0
Omdat f (p) 6= 0 en f continu is bestaat er een δ1 > 0 zodat f (x) 6= 0 voor x ∈ [p−δ1 , p+δ1 ].
Dus g is gedefinieerd en continu op [p − δ 1 , p + δ1 ]. Bovendien geldt
0
00
00
(f (x))2 − f (x)f (x)
f (x)f (x)
g (x) = 1 −
=
.
0
2
(f (x))
(f 0 (x))2
0
0
Omdat f ∈ C 2 [a, b] is g(x) ∈ C 1 [p − δ1 , p + δ1 ]. Merk op dat g (p) = 0 omdat f (p) = 0. Daar
0
g continu is, bestaat er een δ < δ1 zodat
0
|g (x)| ≤ k < 1
voor alle
x ∈ [p − δ, p + δ] .
Als laatste moeten we laten zien dat g : [p − δ, p + δ] → [p − δ, p + δ]. Uit de middelwaardestelling volgt
0
|g(x) − g(p)| = |g (ξ)||x − p| voor ξ tussen x en p .
Omdat x ∈ [p − δ, p + δ] geldt |x − p| < δ en dus
|g(x) − g(p)| = |g(x) − p| < |x − p| < δ .
Hiermee is de stelling bewezen.
Om een goede vergelijking van convergentie mogelijk te maken voeren we de volgende definitie
in.
Definitie
Stel {pn }∞
n=0 is een rij die convergeert naar p, met p n 6= p voor alle n.
Als er positieve constantes λ en α bestaan met
lim
n→∞
|pn+1 − p|
=λ,
|pn − p|α
(4.1)
dan convergeert {pn } naar p met orde α en asymptotische constante λ.
In het algemeen convergeert een hogere orde methode sneller dan een lagere orde methode. De
waarde van de asymptotische constante is minder belangrijk. Twee gevallen zijn belangrijk
- als α = 1 dan noemen we het proces lineair convergent,
44
- als α = 2 dan noemen we het proces kwadratisch convergent.
Het is eenvoudig om in te zien dat elke convergerende vaste punt methode tenminste lineair
convergent is.
Voor Newton Raphson merken we op
0
0 = f (p) = f (pn ) + (p − pn )f (pn ) +
(p − pn )2 00
f (ξn ) , ξn ∈ (pn , p) .
2
Volgens de definitie geldt
0
0 = f (pn ) + (pn+1 − pn )f (pn ) .
Aftrekken geeft
00
f (ξ)
.
pn+1 − p = (pn − p)
2f 0 (pn )
2
00
Dit is inderdaad van de gedaante (4.1) met α = 2 en λ =
kwadratisch convergent is.
f (p)
,
0
2f (p)
zodat Newton Raphson
Er zijn allerlei varianten op de Newton Raphson methode bekend. We zullen deze alleen
noemen.
Secant methode (Koorden Newton)
0
0
)−f (pn−2 )
Vervang f (pn−1 ) door f (ppn−1
. Voordeel hiervan is dat f niet bepaald behoeft te
n−1 −pn−2
worden.
Regula Falsi methode
Stel er zijn twee benaderingen gegeven p 0 en p1 zodanig dat f (p0 ) · f (p1 ) < 0. Het schema
om p te benaderen is nu:
stap 1
stap 2
stap
stap
stap
4.5
q0 = f (p0 )
q1 = f (p1 )
n=2
doe zolang n ≤ N0
3 p = p1 − q1 (p1 − p0 )/(q1 − q0 )
q = f (p)
n = n+1
4 als q · q1 < 0 dan p0 = p1 ; q0 = q
5 p1 = p
q1 = q
Stelsels niet-lineaire vergelijkingen
Een stelsel van niet-lineaire vergelijkingen heeft de vorm
f1 (x1 , ..., xn ) = 0 ,
..
.
fn (x1 , ..., xn ) = 0 .
45
We noteren dit ook als
F (x) = 0 .
(4.2)
De Newton-Raphson methode voor (4.2) wordt gegeven door
x(p) = x(p−1) − J(x(p−1) )−1 F (x(p−1) ) .
Hierbij wordt J(x) de Jacobiaan matrix genoemd, die gedefinieerd is als:


∂f1 (x)
∂f1 (x)
.
.
.
∂xn
 ∂x. 1

..

 .
.
J(x) = 
.
.

∂fn (x)
. . . ∂fn (x)
∂x1
∂xn
∂f
Als het exact uitrekenen van ∂xkj (x) onmogelijk is, dan kunnen we de partiële afgeleiden
vervangen door eindige differentie benaderingen. Bijvoorbeeld
∂fj
fj (x + ek h) − fj (x)
(x) ≈
,
∂xk
h
waarbij ek de k e eenheidsvector is. Dit noemen we een quasi-Newton methode.
4.6
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- Bisectie methode
- stopcriteria
- convergentie
- vaste punt iteratie (Picard)
- Newton Raphson
- Secant methode, Regula Falsi methode
- stelsels niet-lineaire vergelijkingen
46
4.7
Opgaven
1. Stel f (x) = 3(x + 1)(x − 21 )(x − 1). Gebruik de Bisectie methode op de volgende
intervallen om p3 te bepalen: [-2 1.5] en [-1.25 2.5].
2. We beschouwen de vaste punt methoden: p n =
20pn−1 +21/p2n−1
21
en pn = pn−1 −
p3n−1 −21
.
3p2n−1
Beantwoord voor beide methoden de volgende vragen. Laat zien dat het vaste punt
1
(21) 3 is. Geef een schatting van de convergentie snelheid. Bepaal p 3 met p0 = 1.
3. We gaan een methode afleiden voor het bepalen van een nulpunt van f gebaseerd op
interpolatie.
(a) Stel er zijn twee startwaarden gegeven p 0 en p1 . Bepaal het lineaire interpolatiepolynoom van de functie f .
(b) Neem voor p2 het punt waar het interpolatiepolynoom de x-as snijdt.
(c) Doe 2 iteraties met de deze methode voor de functie f (x) = x 2 − 2 met p0 = 1 en
p1 = 2.
4. Gegeven de functie f (x) = x − cosx, x ∈ [0, π2 ]. Bepaal met behulp van de NewtonRaphson methode een benadering van de oplossing met een fout kleiner dan 10 −4 .
5. Doe twee iteraties met de Newton-Raphson methode met startvector (1, 1) om het
volgende niet-lineaire stelsel op te lossen: x 21 − x2 − 3 = 0 en −x1 + x22 + 1 = 0 .
Vergelijk de benadering met de exacte oplossing (2, 1).
47
Hoofdstuk 5
Numerieke integratie
5.1
Introduktie
Voor het bepalen van volume, massa, lengte enz. is het nodig om de integraal van een functie
uit te rekenen. Vaak is het onmogelijk om van een integrand de primitieve te vinden. Om
dan toch een antwoord te bepalen wordt er veelal gebruik gemaakt van numerieke integratie.
Als voorbeeld nemen we de productie van een spoiler, die geplaatst wordt op de cabine van
een vrachtwagen (Figuur 5.1). De vorm van de spoiler wordt beschreven door een sinusfunctie
met een periode van 2π meter. De spoiler wordt door walsen verkregen uit een vlakke plaat.
De fabrikant wil weten hoe breed de vlakke plaat moet zijn opdat de horizontale afmeting
van de spoiler 80 cm is. Het antwoord hierop is de booglengte van de kromme gegeven door
x(t) = t
0 ≤ t ≤ 0.8 .
y(t) = sin t
Voor het bepalen van de booglengte kunnen we gebruik maken van de formule
l=
s
Z0.8
0
1+
dy
dt
2
Z0.8p
1 + (cos t)2 dt .
dt =
0
Deze integraal is niet eenvoudig te bepalen. We zullen in dit hoofdstuk laten zien hoe de
gezochte lengte bepaald kan worden met behulp van numerieke integratie.
5.2
Eenvoudige numerieke integratieformules
Na een herhaling van de definitie van een integraal zullen we een aantal eenvoudige integratieregels geven. Hiervan zal de benaderingsfout en het effect van afrondfouten onderzocht
worden.
Definitie
Een partitie P van [a, b] is een eindig aantal punten x k waarbij a = x0 < x1 ... < xn = b. Een
bijbehorende strooiing T is een verzameling tussenpunten t k zodat xk−1 ≤ tk ≤ xk . De lengte
van een interval geven we aan met hk = xk − xk−1 en de maaswijdte m(P ) = max {hk }. De
1≤k≤n
48
3
2.5
Numerieke
Integratie B.V.
2
Hoogte
1.5
1
0.5
0
−0.5
−1
1
2
3
4
5
6
Lengte
Figuur 5.1: Vrachtwagen met spoiler op de cabine
Riemannsom voor een functie f die continu is op [a, b] is nu gedefineerd als:
R(f, P, T ) =
n
X
f (tk )hk .
k=1
Kies een rij verdelingen P1 , P2 , ... en bijbehorende strooiingen T n zodanig dat m(Pn ) → 0 dan
convergeert
Zb
R(f, Pn , Tn ) naar een limiet I = f (x)dx .
a
Numerieke integratieregels lijken veel op de Riemannsom. Het belangrijkste verschil is de
gewenste efficiëntie bij numerieke integratie.
De Rechthoekregel
Neem een equidistante verdeling zodat de knooppunten gegeven worden door: x k = a +
kh, k = 0, 1, ..., n met h = b−a
n . De strooipunten nemen we gelijk aan de linkerknooppunten:
tk = xk−1 . De Riemannsom wordt dan gegeven door
IR = h[f (a) + f (a + h) + ... + f (b − h)] .
0
Stelling 5.2.1 Zij f een differentieerbare functie op [a, b]. Stel M 1 is het maximum van |f |
op [a, b] dan geldt:
Zb
1
| f (x)dx − IR | ≤ M1 (b − a)h
2
a
49
Bewijs:
We beschouwen eerst het interval [x k−1 , xk ]. Uit een Taylor ontwikkeling volgt:
0
f (x) = f (xk−1 ) + (x − xk−1 )f (ξ(x))
Hieruit volgt:
|
Zxk
xk−1
[f (x) − f (xk−1 )]dx| ≤ M1
zodat
|
Zxk
xk−1
met
Zxk
xk−1
xk−1 ≤ ξ(x) ≤ xk .
(x − xk−1 )dx ,
1
f (x)dx − hf (xk−1 )| ≤ M1 h2 .
2
Voor de totale fout geldt dus:
|
Zb
a
Zxk
n
X
1
1
f (x)dx − hf (xk−1 )| ≤ M1 h2 n = M1 (b − a)h .
f (x)dx − IR | ≤
|
2
2
k=1 x
k−1
Voorbeeld(spoiler)
Voor het voorbeeld genoemd in de introductie willen we de lengte van de vlakke plaat benaderen met een fout van 1 cm. Als we de Rechthoekregel toepassen betekent dit dat
1
M1 0.8h ≤ 0.01 .
2
p
De afgeleide van de integrand f (t) = 1 + (cos t)2 wordt gegeven door:
− 1 sin 2t
− cos t sin t
0
f (t) = p
=p 2
.
1 + (cos t)2
1 + (cos t)2
Hieruit volgt |f | ≤ M1 ≤ 12 zodat een stapgrootte h = 0.05 voldoende zou moeten zijn. De
integraal is 1.0759 m in 5 cijfers nauwkeurig. Voor n = 16 geeft de Rechthoekregel 1.0807
zodat de fout inderdaar kleiner is dan 1 cm.
0
De nauwkeurigheid van de Rechthoekregel is O(h). Hierna wordt een methode gegeven, die
met dezelfde hoeveelheid werk, een nauwkeuriger antwoord geeft.
Midpuntregel
Neem een equidistante verdeling zodat de knooppunten gegeven worden door: x k = kh, k =
xk +xk−1
worden als strooipunten gekozen. De
0, 1, ..., n en h = b−a
n . De middenpunten
2
Riemannsom wordt dan gegeven door:
3
1
1
Im = h[f (a + h) + f (a + h) + ... + f (b − h)] .
2
2
2
50
Stelling 5.2.2 Zij f een tweemaal differentieerbare functie op [a, b]. Stel M 2 is het maximum
00
van |f | op [a, b] dan geldt:
|
Zb
a
f (x)dx − Im | ≤
1
M2 (b − a)h2 .
24
Bewijs deze stelling zelf.
x +x
(Hint: ontwikkel f rond k 2 k−1 in een Taylorpolynoom van de graad 1).
Voorbeeld (spoiler)
In Tabel 5.1 zijn de fouten gegeven voor verschillende waarden van de stapgrootte h. Op
grond van de theorie verwachten we dat de fout bij de rechthoeksregel afneemt met een factor
h
0.8
0.4
0.2
0.1
0.05
rechthoeksregel
− 0.055
− 0.0336
− 0.0182
− 0.0094
− 0.0048
Midpuntregel
− 0.0117
− 0.0028
− 0.00068
− 0.00017
− 0.000043
Tabel 5.1: De fout voor verschillende waarden van h.
2 en die bij de Midpuntregel met een factor 4 als h gehalveerd wordt. De resultaten zijn in
overeenstemming met onze verwachtingen.
Ook bij numerieke integratie kunnen meet- en afrondfouten een belangrijke rol spelen. Neem
aan dat de functiewaarden verstoord zijn met een fout ε:
ˆ
f(x)
= f (x) + ε(x) .
Als we de integraal benaderen met de Rechthoekregel dan geldt:
|
Zb
a
f (x)dx − h
n−1
X
i=0
n−1
X
ˆ i )| ≤ 1 M1 (b − a)h + h
ε(xk ) .
f(x
2
k=0
Onder de aanname |ε(x)| ≤ εmax volgt:
|
Zb
a
1
f (x)dx − IˆR | ≤ ( M1 h + εmax )(b − a) .
2
Merk op dat het geen zin heeft om h veel kleiner te kiezen dan
2εmax
M1 .
Voorbeeld (spoiler)
We hebben de berekening van de lengte van de vlakke plaat opnieuw gedaan met de veronderstelling dat er een kleine fabricagefout opgetreden is. Als gevolg daarvan bevat de integrand
een afrondfout ε(x) = 10−3 . In Figuur 5.2 zien we het effect van de afrondfouten: de totale
fout blijft groter dan 0.8 × 10−3 . Verder heeft het geen zin om de stapgrootte kleiner te kiezen
51
0
10
Met afrondfouten
Zonder afrondfouten
−1
10
−2
fout
10
−3
10
−4
10
−5
10
−4
−3
10
−2
10
−1
10
stapgrootte
10
0
10
Figuur 5.2: De fout in de bepaling van de lengte van de vlakke plaat.
dan 4εmax = 4 · 10−3 .
Als laatste kan voor de numerieke bepaling van een integraal I onderscheid gemaakt worden
tussen een goed en een slecht gesteld probleem. Neem aan dat de fout begrensd wordt door
de ongelijkheid
|f (x) − fˆ(x)| ≤ |f (x)|ε .
Een bovengrens voor de relatieve fout in het antwoord is nu
|
Rb
a
f (x)dx −
Rb
Rb
fˆ(x)dx|
a
≤
f (x)dx
Rb
a
a
Rb
Definieer KI =
|f (x)|dx
Rb
f (x)dx
·ε .
a
|f (x)|dx
a
Rb
f (x)dx
als het conditiegetal van de integraal I. Als K I 1 dan is het
a
numeriek bepalen van I een slecht gesteld probleem.
Voorbeeld (winst/verlies)
De winst of het verlies per dag van een autofabrikant is afhankelijk van het seizoen. In de
winter worden minder auto’s verkocht dan in de zomer. In de winter zijn de kosten hoger dan
de inkomsten en wordt er dus verlies geleden. We veronderstellen de volgende winstformule
(in miljard $) in het eerste kwartaal:
wlente (t) = 0.01 + sin(πt −
52
π
) , t ∈ [0, 1]
2
en in het derde kwartaal:
wherfst (t) = 0.01 + sin(πt +
π
) , t ∈ [0, 1] .
2
De totale winst in het eerste kwartaal (W lente ) is gelijk aan:
Wlente =
Z1
wlente (t)dt .
0
In beide kwartalen bedraagt de winst 0.01 (is 10 miljoen $). Omdat
Z1
0
|wlente (t)|dt ' 0.63
is KI = 63 en is het bepalen van de integraal een slecht gesteld probleem. Als we beide
integralen bepalen met de Rechthoekregel krijgen we voor n = 50 de antwoorden:
Wlente = −0.01 ,
Wherfst = 0.03 .
De kleine stapgrootte h = 0.02 is niet voldoende klein om de winst correct te bepalen.
5.3
Newton Cotes formules
In deze paragraaf zullen we algemene integratieregels beschrijven. We beginnen met de Trapeziumregel en we geven het verband tussen numerieke integratie en interpolatie. Daarna
behandelen we integratieregels die gebaseerd zijn op hogere orde interpolatie. Als een bijzonder geval daarvan beschouwen we de Newton Cotes formules.
De Trapeziumregel
Laat a en b twee punten in R zijn, a < b en f een continue functie op [a, b]. Laat p het lineaire
interpolatiepolynoom van f op a en b zijn (zie paragraaf 2.2):
p(x) =
We nemen nu
Rb
b−x
x−a
f (a) +
f (b) .
b−a
b−a
p(x)dx als benadering voor
a
Rb
f (x)dx:
a
Zb
a
p(x)dx =
b−a
(f (a) + f (b)) .
2
(5.1)
Deze benadering heet de Trapeziumregel, omdat (5.1) gelijk is aan het oppervlak van het
trapezium met hoekpunten (a, 0), (b, 0), (b, f (b)) en (a, f (a)). Merk op dat de Trapeziumregel
ook aan de orde geweest is in paragraaf 6.3 bij het oplossen van beginwaarde problemen.
53
De restterm
Bij lineaire interpolatie op a en b hebben we de volgende afbreekfout
f (x) − p(x) =
1
00
(x − a)(x − b)f (ξ(x)) ,
2
(5.2)
waarbij we ξ(x) schrijven in plaats van ξ om de afhankelijkheid van ξ ten aanzien van x te
benadrukken. Als we de linker- en rechterterm van (5.2) integreren dan krijgen we:
Zb
a
b−a
1
f (x)dx −
(f (b) + f (a)) =
2
2
Zb
a
00
(x − a)(x − b)f (ξ(x))dx .
(5.3)
Deze restterm kan men schatten met behulp van de volgende stelling:
Stelling 5.3.1 Zij f ∈ C 2 [a, b]. Dan is er een η ∈ [a, b] zo dat
Zb
a
f (x)dx −
b−a
−(b − a)3 00
(f (a) + f (b)) =
f (η) .
2
12
Bewijs:
00
00
Zij m = minx∈[a,b] f (x) en M = maxx∈[a,b] f (x). Dan geldt, wegens (x − a)(b − x) ≥ 0 op
[a, b]:
m
Zb
a
Zb
(x − a)(b − x)dx ≤
a
≤ M
00
(x − a)(b − x)f (ξ(x))dx
Zb
a
(x − a)(b − x)dx ,
zodat er een µ ∈ (m, M ) is waarvoor geldt
Zb
a
00
(x − a)(b − x)f (ξ(x))dx = µ
Zb
a
00
(x − a)(b − x)dx =
µ(b − a)3
.
6
00
Omdat f continu is, is er een η ∈ [a, b] zodat µ = f (η). Invullen in (5.3) voltooit het bewijs.
Als we de Trapeziumregel gebruiken om een integraal te benaderen dan is de fout meestal
groter dan de gewenste nauwkeurigheid. Een nauwkeuriger antwoord kan verkregen worden
met de gerepeteerde Trapeziumregel. In dit geval verdeelt men het interval in n delen ter
grootte h = b−a
n . Op elk deelinterval [xk−1 , xk ] met xk = a + kh wordt dan de Trapeziumregel
toegepast:
Zxk
h3 00
h
f (x)dx = [f (xk ) + f (xk−1 )] − f (ηk ) ,
2
12
xk−1
54
met xk−1 ≤ ξk ≤ xk . Dus
Zb
a
1
1
f (x)dx = h[ f (x0 ) + f (x1 ) + ... + f (xn−1 ) + f (xn )]
2
2
n
−
h3 X 00
f (ξk ) .
12
(5.4)
k=1
00
Omdat voor een continue functie f geldt:
n
00
min f (ξk ) ≤
k
bestaat er een ξ ∈ [a, b] zodat
n
X
1 X 00
00
f (ξk ) ≤ max f (ξk )
k
n
k=1
00
00
f (ξk ) = nf (ξ) .
k=1
Dit invullen in (5.4) geeft
Zb
a
f (x)dx = IT (h) −
b − a 2 00
h f (ξ) ,
12
waarbij IT (h) = h[ 21 f (x0 ) + f (x1 ) + ... + 21 f (xn )] .
Opmerkingen
1. De Restterm bij de gerepeteerde Trapeziumregel is O(h 2 ), terwijl de Rechthoekregel een
restterm O(h) heeft. Bij beiden methoden wordt dezelfde hoeveelheid werk gebruikt.
De Trapeziumregel heeft dus duidelijk de voorkeur.
2. De gerepeteerde Trapeziumregel kan ook als volgt geı̈nterpreteerd worden. Stel s is de
lineaire spline benadering van f op a = x 0 , ..., xn = b. Dan geldt
IT (h) =
Zb
s(x)dx .
a
Voorbeeld (winst/verlies)
We hebben de winst uit het voorbeeld gegeven in paragraaf 5.2 ook benaderd met de Trapeziumregel. Voor n = 50 krijgen we de antwoorden:
Wlente = 0.01
en
Wherfst = 0.01 .
Merk op dat de resultaten nu exact zijn.
Algemene kwadratuurformules
We hebben gezien dat lineaire interpolatie aanleiding geeft tot de Trapeziumregel. Als we
andere interpolatieformules gebruiken krijgen we verschillende integratieregels.
55
Laat x0 , ..., xm ∈ [a, b] gegeven zijn. Zij p het Lagrange interpolatiepolynoom van f op de
Rb
Rb
punten x0 , ..., xm . We nemen dan p(x)dx als benadering voor f (x)dx. Omdat p(x) =
m
P
a
a
f (xk )Lkm (x) geldt
k=0
Zb
p(x)dx =
m
X
wk f (xk ) ,
k=0
a
met als coëfficiënten
wk =
Zb
Lkm (x)dx ,
a
die blijkbaar onafhankelijk van f zijn. We noemen
m
P
wk f (xk ) de bij x0 , ..., xm behorende
k=0
interpolatoire kwadratuurformule voor
Rb
f (x)dx. De xk heten de steunpunten en wk de
a
gewichten van de kwadratuurformule.
Stelling 5.3.2 Als f een polynoom van hoogstens graad m is, dan is elke m + 1-punts interpolatoire kwadratuurformule exact:
Zb
f (x)dx =
m
X
wk f (xk ) .
k=0
a
Bewijs:
Uit stelling 2.3.1 volgt dat f samenvalt met zijn Lagrange interpolatiepolynoom op x 0 , ..., xm
en dus geldt
Zb
Zb
f (x)dx = p(x)dx .
a
a
Omgekeerd geldt:
Stelling 5.3.3 Wanneer x0 , .., xm en w0 , ..., wm gegeven getallen zijn en er geldt
Zb
p(x)dx =
m
X
wk p(xk ) ,
k=0
a
voor alle polynomen p van de graad ≤ m, dan is
interpolatoire kwadratuurformule voor
Rb
f (x)dx.
a
56
m
P
k=0
wk f (xk ) de bij x0 , ..., xm behorende
Bewijs:
Zij p het interpolatiepolynoom op x 0 , ..., xm van f . De vraag is dan of geldt
Zb
p(x)dx =
Zb
a
p(x)dx =
wk f (xk )?
k=0
a
Dit is zo omdat
m
X
m
X
m
X
wk p(xk ) =
wk f (xk ) .
k=0
k=0
We kunnen deze stelling ook gebruiken om de gewichten w k uit te rekenen als de punten
x0 , ..., xm gegeven zijn. Neem voor p(x) achtereenvolgens 1, x, ..., x m . Dit levert een stelsel
van m + 1 vergelijkingen in de m + 1 onbekenden w k op. Men kan aantonen dat dit stelsel
eenduidig oplosbaar is.
Midpuntregel
Als we de nulde orde interpolatie van f nemen in het punt m = 21 (a + b) dan vinden we als
Rb
kwadratuurformule voor f (x)dx:
a
(b − a)f (m) .
Dit noemen we de Midpuntregel. Deze regel is nauwkeuriger dan men op het eerste gezicht
zou verwachten. Als f ∈ C 2 [a, b] dan geldt
1
00
0
f (x) = f (m) + (x − m)f (m) + (x − m)2 f (ξ(x))
2
en
Zb
a
Omdat (x −
m)2
1
f (x)dx = (b − a)f (m) +
2
Zb
a
00
(x − m)2 f (ξ(x))dx .
≥ 0 is kunnen we afleiden
Zb
a
f (x)dx − (b − a)f (m) =
(b − a)3 00
f (ξ) .
24
Voorbeeld (winst/verlies)
Als we de winst of het verlies uitrekenen met de gerepeteerde Midpuntregel
1
1
h[f (a + h) + ... + f (b − h)] ,
2
2
dan krijgen we voor n = 50
Wlente = 0.01
en
Wherfst = 0.01 .
Newton-Cotes formules
Laat x0 , ..., xm equidistant in [a, b] liggen met x0 = a en xm = b. De kwadratuurformules,
57
die ontstaan door integratie van het m-de orde interpolatiepolynoom p m van f noemt men
Newton-Cotes formules.
Voor de resttermen van deze formules geldt de volgende stelling:
Stelling 5.3.4 Voor de restterm Rm van de Newton Cotes kwadratuurformules voor het beRb
naderen van f (x)dx geldt:
a
als m even is en f ∈ C m+2 [a, b] dan
Rm
Cm
b − a m+3 (m+2)
= Cm
f
(ξ) met
m
Zm
1
=
t2 (t − 1)...(t − m)dt ;
(m + 2)!
0
als m oneven is en f ∈ C m+1 [a, b] dan
b − a m+2 (m+1)
f
(ξ) met
m
Zm
1
t(t − 1)...(t − m)dt .
(m + 1)!
Rm = D m
Dm =
0
Simpsonregel
We kiezen nu als steunpunten x0 = a, x1 = 21 (a + b) en x2 = b. De integratieregel is dan
b−a
[f (x0 ) + 4f (x1 ) + f (x2 )] .
6
Het is niet moeilijk om in te zien dat de Simpsonregel exact is voor de polynomen f (x) =
1, f (x) = x − x1 en f (x) = (x − x1 )2 .
5.4
Gauss formules∗
De integratieregels
m
P
wk f (xk ) hebben we afgeleid door de steunpunten x k van te voren te
k=0
kiezen en vervolgens de wk te bepalen zodat de regel exact is voor polynomen van de graad
≤ m. Men zou echter ook de vraag kunnen stellen bepaal alle w k en xk zo dat polynomen
van een zo hoog mogelijke graad nog exact worden geı̈ntegreerd, in de hoop dat dit ook
voor willekeurige functies tot betere resultaten zal leiden. Door te eisen dat 1, x, ..., x 2m+1
exact worden geı̈ntegreerd ontstaat er een stelsel van 2m + 2 niet-lineaire vergelijkingen in de
2m + 2 onbekenden wk en xk . Men kan aantonen dat dit stelsel oplosbaar is. De resulterende
kwadratuurformules heten Gauss formules. Voor de m + 1 punts Gauss formule geldt de
volgende restterm:
(b − a)2m+3 ((m + 1)!)4 (2m+2)
f
(ξ) .
R=
(2m + 3)((2m + 2)!)3
58
Voorbeeld (2 punts Gauss formule)
Stel dat we c0 , c1 , x0 en x1 willen bepalen zo dat de integratieformule
Z1
−1
f (x)dx ≈ c0 f (x0 ) + c1 f (x1 )
het exacte resultaat geeft als f een polynoom is van de graad 3. We kiezen voor f de functies
1, x, x2 en x3 zodat c0 , c1 , x0 en x1 moeten voldoen aan
f (x) = 1 ⇒
f (x) = x ⇒
f (x) = x2 ⇒
3
f (x) = x ⇒
c 0 + c1 =
Z1
1dx = 2 ,
Z1
xdx = 0 ,
Z1
x2 dx =
Z1
x3 dx = 0 .
−1
c 0 x0 + c 1 x1 =
−1
c0 x20 + c1 x21 =
2
,
3
−1
c0 x30
+
c1 x31
=
−1
Het is eenvoudig om in te zien dat de oplossing van dit stelsel gegeven wordt door
√
√
3
− 3
en x1 =
,
c0 = 1 , c 1 = 1 , x 0 =
3
3
zodat de integratieformule gegeven wordt door
Z1
−1
f (x)dx ≈ f
√ !
− 3
+f
3
√ !
3
.
3
Voorbeeld (vergelijken methoden)
In Tabel 5.2 staan de resttermen als men ter berekening van
Rπ
0
sin xdx een zeker aantal punten
investeert in Trapezium, Simpson en 5-punts Gauss. Opvallend is dat 5-punts Gauss enkelvoudig toegepast reeds zo’n goed resultaat geeft, alsmede dat halvering van het interval bij
5-punts Gauss de nauwkeurigheid zo snel doet toenemen.
5.5
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- Numerieke integratie
- rechthoekregel
59
methode
Trapezium
Simpson
5p. Gauss
Trapezium
Simpson
5 p. Gauss
Trapezium
Simpson
5 p. Gauss
aantal
malen
gerepeteerd
4
2
1
8
4
2
16
8
4
aantal
punten
fout
5
5
5
9
9
10
17
17
20
1.04·10−1
4.56·10−3
1.11·10−7
2.58·10−2
2.69·10−4
1.1·10−10
6.43·10−3
1.66·10−5
1.1·10−13
Tabel 5.2: Vergelijking verschillende integratiemethoden.
- midpuntregel
- gerepeteerde regels
- Newton Cotes formules
- Trapeziumregel
- Simpsonregel
- Gauss formules
60
5.6
Opgaven
1. We willen de volgende integraal bepalen:
Z1
[(10x)3 + 0.001]dx.
−1
(a) De relatieve afrondfout in de functiewaarden is kleinder dan . Bepaal de relatieve
fout in de integraal ten gevolge van de afrondfouten.
(b) We nemen de gerepeteerde midpuntregel als numerieke integratie methode en =
4 ∗ 10−8 . Geef een redelijke waarde voor de stapgrootte h.
2. Bepaal
R1
x4 dx met de Trapeziumregel. Schat de fout en vergelijk deze schatting met de
0.5
echte fout. Bereken de integraal ook met de gerepeteerde Trapeziumregel met h = 0.25.
Schat de fout met Richardson’ s foutschatting.
61
Hoofdstuk 6
Numerieke tijdsintegratie voor
beginwaarde problemen
6.1
Inleiding
Een beginwaarde probleem is meestal een wiskundige beschrijving (differentiaalvergelijking)
van een tijdsafhankelijk probleem. De voorwaarden, die nodig zijn om een unieke oplossing
te bepalen, worden gegeven op t0 = 0 en worden beginvoorwaarden genoemd.
Als voorbeeld beschouwen we de water afvoer uit een stuwmeer door een leiding (zie Figuur 6.1). Het water is in rust totdat op t = 0 de schuif plotseling geopend wordt. Door
de traagheid van het water komt de stroming geleidelijk op gang. Als dit stromende water
gebruikt wordt om electriciteit op te wekken, dan is het van belang om te weten hoe lang het
duurt, voordat de turbines op vol vermogen werken.
Een beschrijving van dit proces wordt gegeven door de niet-lineaire differentiaalvergelijking
dq
= p(t) − aq 2 ,
dt
met beginvoorwaarde
q(0) = 0 .
kracht/lengte
N/m
3 2
ofwel kg/m
Hierin is q(m3 /s) de afvoer, p is de drijvende kracht (
3 = m /s ) en
dichtheid
aq 2 is de wrijvingskracht. De drijvende kracht is onder andere afhankelijk van het waterpeil
in het stuwmeer. Als we veronderstellen dat p(t) constant is (p(t) = p 0 ) dan is een analytische
oplossing bekend namelijk
r
√
p0
q=
tanh(t ap0 ) .
a
De numerieke oplossing kan voor willekeurige functies p bepaald worden.
6.2
Theorie van beginwaarde problemen
In deze paragraaf zullen we een korte samenvatting geven van de theorie van beginwaarde
problemen. Voor het bepalen van een numerieke oplossing van een beginwaarde probleem is
62
Figuur 6.1: Het stuwmeer, de afvoerbuis en de schuif in gesloten toestand
het natuurlijk van belang om te weten of het beginwaarde probleem wel een oplossing heeft.
Om hier een uitspraak over te doen voeren we het begrip Lipschitz continu in.
Definitie 6.2.1 Een functie f (t, y) heet Lipschitz continu in de variabele y in een verzameling
D ⊂ R2 , als er een constante L > 0 bestaat zo dat
|f (t, y1 ) − f (t, y2 )| ≤ L|y1 − y2 |,
voor alle (t, y1 ), (t, y2 ) ∈ D. De constante L wordt de Lipschitz constante genoemd.
Als de functie f differentieerbaar is in de variabele y dan geldt, dat f (t, y) Lipschitz continu
is in de variabele y als geldt:
|
∂f
(t, y)| ≤ L, voor alle (t, y) ∈ D.
∂y
Niet alleen het bestaan van een unieke oplossing is van belang, maar ook de vraag hoe een
oplossing verandert als er kleine verstoringen aangebracht worden in de beginvoorwaarden of
de differentiaalvergelijking. We voeren daarom het begrip goed gesteld probleem in.
Definitie 6.2.2 Het beginwaarde probleem
dy
= f (t, y), a ≤ t ≤ b, y(a) = ya ,
dt
heet goed gesteld als
1. Het probleem een unieke oplossing heeft;
63
2. Voor elke > 0, bestaat er een positieve constante k, zodat als | 0 | < en δ(t) is continu
met |δ(t)| < op [a, b] dan bestaat er een unieke oplossing z(t), zodat
dz
= f (t, z) + δ(t), a ≤ t ≤ b, z(a) = ya + 0 ,
dt
waarbij z voldoet aan de ongelijkheid:
|z(t) − y(t)| < k, voor alle a ≤ t ≤ b.
De volgende stelling geeft aan wanneer een beginwaarde probleem goed gesteld is.
Stelling 6.2.1 Veronderstel dat D = {(t, y)|a ≤ t ≤ b, −∞ < y < ∞} en dat f (t, y) continu
is. Als f Lipschitz continu is in de variabele y dan is het beginwaarde probleem
dy
= f (t, y), a ≤ t ≤ b, y(a) = ya ,
dt
goed gesteld.
6.3
Eenstaps methoden
In tegenstelling tot het voorbeeld in paragraaf 6.1 is het voor vele in de praktijk voorkomende
differentiaalvergelijkingen onmogelijk de oplossing analytisch te bepalen. Voor niet–lineaire
differentiaalvergelijkigen bestaat daarvoor in elk geval geen algemene theorie. Weliswaar
bestaan er algemeen toepasbare technieken om bepaalde qualitatieve eigenschappen van de
oplossing op te sporen maar deze geven meestal onvoldoende quantitatieve informatie. Hiervoor moet je je toevlucht nemen tot numerieke methoden welke de oplossing approximeren.
Praktisch alle numerieke methoden zijn ontworpen voor eerste orde differentiaalvergelijkingen.
Numerieke methoden die direct op hogere orde differentiaalvergelijkingen werken bestaan wel
maar worden vrijwel niet toegepast. Hogere orde differentiaalvergelijkigen worden eerst omgeschreven naar een eerste orde stelsel en daarop wordt dan de numerieke methode toegepast.
Numerieke methoden voor stelsels worden later in dit college behandeld. Eerst gaan we de approximatie van scalaire eerste orde differentiaalvergelijkingen van het type y 0 = f (t, y), t > t0
en y(t0 ) = y0 bekijken, te beginnen met de voorwaartse methode van Euler, de meest eenvoudige integratie methode.
De voorwaartse methode van Euler
Bij de afleiding van de voorwaartse methode van Euler (Euler Voorwaarts) is het inzichtelijk
gebruik te maken van het richtingsveld dat door de differentiaalvergelijking wordt bepaald.
Een differentiaalvergelijking is in feite niets anders dan een voorschrift dat in elk punt van het
(t, y)–vlak de richting van de door dat punt gaande oplossingskromme vastlegt. Eén bepaalde
oplossingskromme wordt geselecteerd door een punt te specificeren waar de oplossingskromme doorheen moet gaan. Een formele uitdrukking voor de oplossingskromme door een punt
(t0 , y0 ) ontstaat door de afgeleide te integreren:
y(t) = y0 +
Z
t
y 0 (t)dt = y0 +
t0
64
Z
t
f (t, y(t))dt.
t0
(6.1)
Dit is een integraalvergelijking omdat de onbekende functie y(t) onder het integraalteken
voorkomt. De integraalvergelijking is analytisch niet minder moeilijk op te lossen dan de
differentiaalvergelijking maar vormt wel een beter aanknopingspunt voor diverse vormen van
approximatie
van de oplossing. De meest eenvoudige approximatie ontstaat door de integraal
Rt
t0 f (t, y(t))dt in (6.1) te vervangen door t − t 0 maal de waarde van de integrand in het
startpunt (zie Figuur 6.2):
y(t) ≈ y0 + (t − t0 )f (t0 , y0 ), t > t0 .
(6.2)
De rechterzijde stelt de raaklijn aan de oplossingskromme in het startpunt voor. De raaklijn
zal de exacte kromme in het algemeen niet volgen en slechts voor korte tijd, zeg h 0 , een goede
benadering vormen. Daarom willen we vanaf t 1 = t0 +h0 de richting van de lijn (6.2) aanpassen
aan de veranderde richting van de exacte oplossingskromme. De nieuwe approximatielijn start
in het approximatiepunt dat we als (t 1 , w1 ) aanduiden (zie Figuur 6.3); w1 volgt door in de
rechterzijde van (6.2) t1 = t0 + h0 voor t in te vullen:
w1 = y0 + h0 f (t0 , y0 ).
(6.3)
De vergelijking voor de tweede approximatielijn wordt, evenals die voor de eerste, afgeleid uit
de integraalformulering voor de oplossing, dit keer voor de ’naburige’ oplossingskromme door
het punt (t1 , w1 ). Analoog aan (6.3) hebben we voor t 2 = t1 + h1 :
w2 = y1 + h1 f (t1 , w1 ).
(6.4)
Voortzetting van deze procedure leidt tot een reeks van approximatiepunten (t n , wn ) (n=0,1,2,. . . )
met tn+1 = tn + hn en
yn+1 = yn + hn f (tn , yn ),
(6.5)
waarbij t0 en w0 = y0 gegeven zijn. Meetkundig stelt dit een stuksgewijs lineaire approximatie
van de exacte oplossingskromme voor, het zogenaamde Eulerpolygoon.
De essentie van de approximatie wordt gevormd door de discrete set van punten (t 0 , w0 ),
(t1 , w1 ), (t2 , w2 ), . . . (dat deze verbonden geacht kunnen worden door rechte lijnstukjes is
eigenlijk niet zo interessant).
Als er geen bijzondere redenen zijn om het anders te doen kent men aan de stapgrootten
h1 , h2 , . . . dezelfde waarde h toe; men spreekt dan van een approximatie met equidistante
stapgrootte h. Bij een equidistante Euler–approximatie gaat (6.5) over in
wn+1 = wn + hf (tn , wn ).
(6.6)
In dit dictaat worden uitsluitend equidistante integratiemethoden gebruikt.
Enkele numerieke experimenten
Het gedrag van de afbreekfout op de tijdstippen t 0 , t1 , . . . als functie van de stapgrootte vormt
steeds het centrale thema bij de analyse van numerieke methoden voor differentiaalvergelijkingen. Deze paragraaf bevat een inleidende studie aan de hand van een aantal numerieke
experimenten met de voorwaartse methode van Euler toegepast op het waterafvoerprobleem
q 0 = 50 − 2q 2 (t ≥ 0), q(0) = 0.
65
(6.7)
15
y(t +h)
n
10
f(y(t))
y(t )
n
5
tn
0
0.2
0.4
t n +h
0.6
0.8
t
1
1.2
1.4
Figuur 6.2: Eén-punts approximatie van de integraal in (6.1)
1.5
w1
1.4
1.3
y(t1)
1.2
w2
y
1.1
EXACT
1
y(t3)
0.9
y(t2)
w3
0.8
0.7
0.6
0.5
t1
0
0.2
0.4
t2
0.6
0.8
t3
1
1.2
t
Figuur 6.3: Approximatie met Euler over meerdere stappen (- -: naburige oplossingskrommen
in de diverse approximatiepunten)
66
In de volgende paragrafen zullen we de gevonden resultaten op theoretische wijze trachten te
verklaren.
Toegepast op de waterafvoervergelijking wordt (6.6):
wn+1 = wn + h(50 − 2wn2 ), w0 = 0.
(6.8)
In Figuur 6.4 zijn twee numerieke benaderingen, berekend met (6.8) voor de stapgrootten
h = 0.01, resp. h = 0.05, vergeleken met de analytische oplossing op het interval [0, 0.4]. Van
de analytische oplossing
q(t) = 5 tanh(10t),
(6.9)
is bekend dat hij vanaf 0 monotoon toeneemt en naar de asymptotische waarde 5 convergeert
voor grote t.
Een paar dingen vallen meteen op. Voor beide stapgrootten is de afbreekfout in het begin heel
klein, maar neemt toe in een ’middengebied’, om vervolgens weer af te nemen voor grote t
(het asymptotische gebied). In het middengebied is de benadering met de kleinere stapgrootte
duidelijk beter dan die met de grotere. In het asymptotische gebied verdwijnt de afbreekfout
voor beide stapgrootten, voor zover we dat in de figuur kunnen waarnemen tenminste.
Als we voornamelijk geı̈nteresseerd zijn in de asymptotische waarde van de oplossing is dit
een uitnodiging om de stapgrootte verder op te voeren omdat dat een winst in efficiency
oplevert. In Figuur 6.5 zien we de resultaten van berekeningen met oplopende stapgrootten.
Zolang h < 0.1 dempt de in het middengebied geaccumuleerde afbreekfout weg als je in het
asymptotische gebied komt; dat gaat heel snel als h duidelijk kleiner is dan 0.1 maar heeft
meer tijd (integratiestappen) nodig naarmate h dichter bij 0.1 gekozen wordt. Kies je h ook
5.5
5
4.5
4
3.5
Q
3
2.5
2
: h=
0.01
1.5
: h=
0.05
1
0.5
0
0
0.05
0.1
0.15
0.2
t
0.25
0.3
0.35
0.4
Figuur 6.4: De Eulerfout bij q 0 = 50 − 2q 2 voor twee waarden van h
maar iets groter dan 0.1 dan dempt de afbreekfout niet meer weg: voor h zeer weinig groter
dan 0.1 blijven de approximatiepunten nog in een bepaald patroon rond de asymptotische
waarde schommelen; voor stapgrootten groter dan ongeveer h = 0.105 echter verwijdert de
numerieke approximatie zich in de loop van het integratieproces van de asymptotische waarde;
67
6
5
5
5
4
4
4
3
2
h = 0.09
h = 0.099
1
0
0.2
0.4
0.6
0.8
1
t
3
2
0.08
1
1.2
1.4
1.6
1.8
0
2
1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
0
2
5
5
5
4
4
4
3
2
Q
6
3
2
h=
1
0.4
0.6
0.8
1
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
1.2
1.4
1.6
1.4
1.6
1.8
2
3
0.101
h = 0.105
1
0.2
0.4
2
h = 0.1
0
0.2
t
6
0
0
t
6
Q
Q
3
2
h=
0
Q
6
Q
Q
6
1
0
0.2
0.4
0.6
t
0.8
1
t
1.2
1.4
1.6
1.8
2
0
0
0.2
0.4
0.6
0.8
1
1.2
1.8
2
t
Figuur 6.5: Stabiele en instabiele approximaties met Euler
de snelheid van verwijdering neemt sterk toe met toenemende h. Je kunt stellen dat h = 0.1
de omslag van bruikbare naar onbruikbare approximaties scherp markeert.
Het beschreven verschijnsel wordt (numerieke) instabiliteit genoemd en de h–waarde waarbij
de omslag van (bruikbare) stabiele naar (onbruikbare ) instabiele approximaties plaatsvindt
wordt de stabiliteitsgrens genoemd. In een volgende paragraaf zullen we het verschijnsel
stabiliteit op theoretische wijze nader verklaren.
De achterwaartse methode van Euler
achterwaartse methode van Euler (Euler Achterwaarts) ontstaat als we de integraal
RDe
t1
t0 f (t, y(t))dt in (6.1) te vervangen door t 1 − t0 maal de waarde van de integrand in het
eindpunt
y(t1 ) ≈ y0 + (t1 − t0 )f (t0 , y1 ).
De numerieke benadering wordt dan:
w1 = w0 + h0 f (t0 , w1 ).
(6.10)
Merk op dat de onbekende w1 nu ook in het rechterlid voorkomt. We noemen daarom de
achterwaartse methode van Euler een impliciete methode. Oplossing van (6.10) is tamelijk
triviaal zolang f lineair van y afhangt. Daar hebben we niet zoveel aan want lineaire differentiaalvergelijkingen kunnen we ook wel analytisch oplossen. Juist voor de numeriek gezien
interessante niet–lineaire differentiaalvergelijkingen is oplossing van w 1 , hoewel veel eenvoudiger dan oplossing van y(t1 ) uit de integraalvergelijking (6.1), niet–triviaal. In het algemeen
68
15
y(t +h)
n
10
n
)
f(y(t))
y(t
5
0
tn +h
tn
0.2
0.4
0.6
0.8
t
1
1.2
1.4
Figuur 6.6: Approximatie van de integraal in (6.1) d.m.v. de trapeziumregel
zal hiervoor een numerieke niet–lineaire solver moeten worden ingezet. Ten opzichte van Euler
Voorwaarts is dit een nadeel omdat het veel rekentijd kan kosten.
Als we een impliciete tijdsintegratie methode gebruiken voor het oplossen van een beginwaarde
probleem,
y
0
= f (t, y) ,
y(0) = y0
t ∈ [0, T ] ,
dan moet er in elk tijdstip een niet-lineaire vergelijking opgelost worden. Als voorbeeld nemen
we Euler Achterwaarts, bepaal wj+1 uit
wj+1 − hf (tj+1 , wj+1 ) = wj .
(0)
(n)
Als startoplossing kiest men vaak w j+1 = wj terwijl de iteranden wj+1 bepaald worden uit
(n−1)
wj+1 met behulp van één van de methoden genoemd in Paragraaf 4.2, 4.3 of 4.4. Omdat
wj vaak een goede beginschatting is zijn er vaak maar enkele iteraties nodig.
De Trapeziumregel
Andere numerieke methoden kunnen afgeleid worden door de integraal in (6.1) met nauwkeuriger integratieregels te benaderen. Als eerste komt in aanmerking de Trapeziumregel (zie
Figuur 6.6):
h
(6.11)
y(t1 ) ≈ y0 + [f (t0 , y0 ) + f (t1 , y(t1 ))].
2
69
Gelijkstellen van linker– en rechterlid geeft een formule voor de approximatie w 1 van de exacte
waarde y(t1 ):
h
w1 = w0 + [f (t0 , w0 ) + f (t1 , w1 )].
(6.12)
2
Merk op dat ook de Trapeziumregel een impliciete methode is. Het aanpassen van deze
methode naar een expliciete methode gebeurt in de volgende paragraaf.
De Modified Euler-methode
Voor het afleiden van een expliciete variant van (6.12), voorspellen we de onbekende w 1 in het
rechterlid van (6.12) met behulp van Euler Voorwaarts. Dan ontstaat de volgende zogenaamde
predictor–corrector formule:
w 1 = w0 + hf (t0 , w0 ),
h
corrector: w1 = w0 + [f (t0 , w0 ) + f (t1 , w 1 )].
2
predictor:
(6.13)
Gegeven w0 kunnen we de predictor w 1 uitrekenen waarna het resultaat ingevuld wordt in de
corrector; hiermee is een geheel expliciete formule voor w 1 ontstaan.
De volgende stappen kunnen we op hetzelfde principe baseren. Dit geeft de predictor–
corrector formule:
w n+1 = wn + hf (tn , wn ),
h
corrector: wn+1 = wn + [f (tn , wn ) + f (tn+1 , w n+1 )].
2
predictor:
(6.14)
(6.15)
Gegeven wn (uitgerekend in de vorige stap) kunnen we de predictor w n+1 uitrekenen waarna
het resultaat ingevuld wordt in de corrector; hiermee is een geheel expliciete formule ontstaan
die als de Modified Euler-methode wordt aangeduid.
Laten we deze methode toepassen op de volgende differentiaalvergelijking
1
y 0 = −10[y − (1 + sin(t/2))] + cos(t/2), y(0) = 1.
2
(6.16)
De oplossing van deze vergelijking is y(t) = 1+sin(t/2), zoals men eenvoudig door substitutie
kan nagaan.
De approximatie blijkt (binnen de resolutie van de Figuur 6.7) voor stapgrootten tot aan
h = 0.18 vrijwel perfect. Bij h = 0.2 zie je een afbreekfout aan de toppen van de perodieke
oplossing ontstaan. Voor de iets grotere stappen h = 0.201 en h = 0.202 blijkt de afbreekfout
al heel sterk te zijn toegenomen. Voor h = 0.207 blijkt de approximatie totaal onbruikbaar
te zijn geworden. Evenals bij de Euler Voorwaarts benadering van de waterafvoervergelijking
blijkt er een scherpe scheiding op te treden tussen acceptabele en onacceptable approximaties.
Deze ligt voor dit probleem bij h = 0.2.
Om het beeld te completeren integreren we (6.16) ook met Euler Voorwaarts in dezelfde range
van stapgrootten. De resultaten staan in Figuur 6.8. Bij Euler Voorwaarts lijkt het iets langer
goed te gaan, maar bij h = 0.207 is het ook helemaal mis. Het verschil is in feite volkomen
marginaal; we kunnen wel stellen dat ook bij Euler Voorwaarts de stabiliteitsgrens op h = 0.2
ligt.
70
3
2.5
2.5
2.5
2
2
2
1.5
1.5
1.5
1
Q
3
Q
1
1
0.5
0.5
0.5
0
0
0
methode van Heun met h=
−0.5
0
5
10
15
20
methode van Heun met h=
−0.5
25
t
Q
−1
0.18
30
35
40
45
−1
50
0
5
10
15
0.2
20
25
t
30
3
3
2.5
2.5
2
2
1.5
1.5
1
0.5
0
0
methode van Heun met h=
−1
0
5
10
15
0.202
20
30
35
40
45
−1
50
40
45
−1
50
methode van Heun met h=
−0.5
25
t
35
0
5
10
15
0.201
20
25
t
30
35
40
45
50
1
0.5
−0.5
methode van Heun met h=
−0.5
Q
Q
3
0
5
10
15
0.207
20
25
t
30
35
40
45
50
3
2.5
2.5
2.5
2
2
2
1.5
1.5
1.5
1
Q
3
Q
3
1
1
0.5
0.5
0.5
0
0
0
−1
0
5
10
15
0.18
20
methode van Euler met h=
−0.5
25
t
30
35
40
45
−1
50
0
5
10
15
0.2
20
25
t
30
3
3
2.5
2.5
2
2
1.5
1.5
1
0.5
0
0
methode van Euler met h=
−1
0
5
10
15
0.207
20
25
t
35
40
45
50
40
45
−1
50
methode van Euler met h=
−0.5
30
35
0
5
10
15
0.201
20
25
t
30
35
40
1
0.5
−0.5
methode van Euler met h=
−0.5
Q
methode van Euler met h=
−0.5
Q
Q
Figuur 6.7: Stabiele en instabiele approximaties van (6.16) met de Modified Euler-methode
−1
0
5
10
15
0.22
20
25
t
30
35
40
45
50
Figuur 6.8: Stabiele en instabiele approximaties van (6.16) met Euler Voorwaarts
71
45
50
Er is wel een opvallend verschil tussen beide methoden in de manier waarop de afbreekfout
groeit in de loop van het integratieproces. Dat zie je heel duidelijk bij h = 0.207. Bij Euler
Voorwaarts oscilleren de approximaties rond de exacte oplossing terwijl ze bij de Modified
Euler allemaal aan één kant ervan liggen. Met andere woorden, bij Euler Voorwaarts alterneert
het teken van de afbreekfout per stap terwijl dit bij de Modified Euler gelijk blijft.
6.4
Foutvoortplanting bij de methode Euler Voorwaarts
In deze paragraaf willen we de resultaten van de numerieke experimenten uit de vorige paragraaf theoretisch verklaren, te beginnen met de voorwaartse methode van Euler. Recapitulerend, deze methode approximeert de vergelijking
y 0 = f (t, y),
y(t0 ) = w0
volgens
wn+1 = wn + hf (tn , wn ).
(6.17)
De globale afbreekfout op tijdstip t n+1 wordt gedefinieerd als het verschil van de exacte en
de numerieke oplossing:
en+1 = y(tn+1 ) − wn+1 ,
(6.18)
waarbij y(tn+1 ) de exacte en wn+1 de numerieke oplossing is. De bedoeling is de afbreekfouten
1.5
1.4
1.3
wn
en
1.2
y(t n )
y
1.1
w n+1
z n+1
1
EXACT
0.9
y(t n+1 )
0.8
0.7
0.6
0.5
tn
0
0.2
0.4
t n+1
0.6
0.8
1
1.2
t
Figuur 6.9: Opsplitsing van de Euler Voorwaarts-afbreekfout
en en en+1 te relateren.
72
Het punt (tn+1 , wn+1 ) ligt op de lijn die raakt aan de door (t n , wn ) gaande naburige oplossingskromme. We beginnen met een hulppunt (t n+1 , zn+1 ) te kiezen op de lijn die in tn raakt
aan de exacte oplossingskromme y(t). De situatie is geı̈llustreerd in Figuur 6.9. Analytisch
wordt de waarde van zn+1 gegeven door
zn+1 = y(tn ) + hf (tn , y(tn )).
(6.19)
Het hulppunt verdeelt het lijnstuk (y(t n+1 ), wn+1 ) (de afbreekfout) in twee stukken. Analytisch correspondeert met deze verdeling de (van de figuur onafhankelijke) opsplitsing
en+1 = y(tn+1 ) − wn+1 = (y(tn+1 ) − zn+1 ) + (zn+1 − wn+1 ).
(6.20)
Het eerste deel geeft aan hoe goed de raaklijn de exacte oplossing tijdens de stap (t n , tn+1 )
volgt en staat los van de in de voorgaande stappen geaccumuleerde afbreekfout e n . Een
analytische uitdrukking in termen van de oplossing en zijn afgeleiden volgt door de exacte
oplossing y(tn+1 ) in een Taylorreeks rond het punt tn te ontwikkelen en daarvan (6.19) af te
trekken:
y(tn+1 ) − zn+1 = y(tn ) + hy 0 (tn ) +
=
h2 00
y (ξn+1 ),
2
h2 00
y (ξn+1 ) − [y(tn ) + hf (tn , y(tn ))]
2
ξn+1 ∈ (tn , tn+1 ).
(6.21)
De afhankelijkheid van de tweede afgeleide van de oplossing is niet verwonderlijk: de nauwkeurigheid van de raaklijnapproximatie hangt natuurlijk samen met de kromming van de
oplossingscurve die op zijn beurt weer samenhangt met de tweede afgeleide.
Opmerking.
Men kan bovenstaand resultaat ook in een iets andere vorm presenteren door de Taylorreeks voor y(t n+1 ) als
oneindig voortlopende reeks van machten van h te schrijven:
y(tn+1 ) − zn+1 =
h2 00
h2 00
h3 000
h4 0000
y (ξn+1 ) =
y (tn ) +
y (tn ) +
y (tn ) + . . .
2
2
6
24
(6.22)
Als y(tn+1 ) − zn+1 door de stapgrootte wordt gedeeld ontstaat de definitie van de lokale
afbreekfout τn+1 . De lokale afbreekfout van de voorwaartse methode van Euler is dus volgens
(6.21):
h
y(tn+1 ) − zn+1
= y 00 (ξn+1 ).
(6.23)
τn+1 =
h
2
Het tweede deel van de afbreekfout, z n+1 − wn+1 in (6.20), geeft aan hoe de in de voorgaande
stappen geaccumuleerde afbreekfout e n wordt doorgegeven naar het punt tn+1 . Afhankelijk
van het richtingsverschil tussen de raaklijnen aan de exacte en de naburige oplossingskrommen
wordt en versterkt of gedempt doorgegeven.
Analytisch (trek (6.17) en (6.19) van elkaar af):
zn+1 − wn+1 = en + h[f (tn , y(tn )) − f (tn , wn )].
(6.24)
Combineren we (6.24) en (6.23) in (6.20) dan resulteert de afbreekfoutrelatie
en+1 = en + h[f (tn , y(tn )) − f (tn , wn )] + hτn+1 ,
73
(6.25)
met τn+1 gegeven door (6.23), terwijl we en + h[f (tn , y(tn )) − f (tn , wn )] in deze beschouwing
het doorgavedeel zullen noemen.
Opmerking
Ter onderscheid van de lokale afbreekfout wordt e n vaak de globale afbreekfout genoemd. De
lokale afbreekfout is een samenstellend deel van de (globale) afbreekfoutrelatie. Wanneer we
in het vervolg over de afbreekfout spreken bedoelen we de globale fout.
Uit (6.25) kan worden afgeleid hoe de globale fout zich in de loop van het integratieproces
ontwikkelt als gevolg van het samenspel van bij elke stap toegevoegde afbreekfout en doorgave
van de in de voorgaande stappen geaccumuleerde globale afbreekfout, maar de niet-lineaire
term f (tn , wn ) − f (tn , y(tn )) vormt daarbij een barriere. Daarom analyseren we de afbreekfoutrelatie eerst voor lineaire differentiaalvergelijkingen, type f (t, y) = λ(t)y +g(t). Voor deze
vergelijkingen gaat (6.25) over in:
zn+1 − wn+1 = en + h[f (tn , y(tn )) − f (tn , wn )]
= en + hλ(tn )(y(tn ) − wn )
= en + hλn en
= (1 + hλn )en .
Bij een lineaire differentiaalvergelijking manifesteert het doorgavedeel zich door middel van
een factor, de zg. versterkingsfactor, en gaat de afbreekfoutrelatie (6.25) over in:
en+1 = (1 + hλn )en + hτn+1 .
(6.26)
Voor constante λ (λn = λ) kan deze recurrente betrekking gemakkelijk ’opgelost’ worden in
de vorm van een reeks:
eN
= (1 + hλ)eN −1 + hτN
= (1 + hλ)2 eN −2 + (1 + hλ)hτN −1 + hτN
..
.
= (1 + hλ)N e0 + (1 + hλ)N −1 hτ1 + (1 + hλ)N −2 hτ2 + . . . + (1 + hλ)hτN −1 + hτN .
Veronderstellend dat de beginvoorwaarde foutloos geı̈mplementeerd wordt, mogen we e0 nul
stellen en volgt:
eN = (1 + hλ)N −1 hτ1 + (1 + hλ)N −2 hτ2 + . . . + (1 + hλ)hτN −1 + hτN .
(6.27)
De reeks (6.27) geeft precies aan hoe de afzonderlijke afbreekfouten bijdragen aan de globale
afbreekfout na N integratiestappen. Elke afbreekfout in (6.27) is voorzien van een macht van
de versterkingsfactor 1 + hλ waarvan de exponent is gelijk is aan het aantal stappen dat ligt
tusssen de laatste stap en de stap waarin de betreffende afbreekfout werd gemaakt.
Bepalend voor het uiteindelijk effect van de afbreekfouten is natuurlijk of de versterkingsfactor, absoluut gezien, groter of kleiner dan 1 is. In het eerste geval wordt elke afbreekfout
exponentiëel groeiend doorgegeven met als gevolg dat de globale afbreekfout, als som van al
deze doorgegeven afbreekfouten, exponentiëel groeit met N . In het tweede geval dempt de
bijdrage van elke afbreekfout exponentiëel met het aantal integratiestappen weg en kunnen
we afschatten:
(6.28)
| eN |≤ h | τ1 | +h | τ2 | + . . . + h | τN |= N hτ .
74
waarbij hτ de gemiddelde afbreekfout over het integratie interval is. Hieruit blijkt dat de
globale afbreekfout niet sneller dan ruwweg lineair met het aantal integratiestappen N kan
toenemen als | 1 + hλ |< 1. Dat is dan nog een beetje pessimistisch voorgesteld want in werkelijkheid gebeurt meestal het volgende. Vanwege de voortdurende demping zal de globale
afbreekfout voornamelijk bepaald worden door een paar van de laatst gemaakte afbreekfouten:
steeds worden nieuwe gemaakt en oude worden weggedempt. Dat houdt in dat de globale
afbreekfout op de verschillende tijdstippen t = N h (N toenemend) zich ruwweg gedraagt
als de afbreekfouten in de buurt (’vlak vóór’) t = N h, dus ruwweg als de tweede afgeleide
van de oplossing ter plekke, afgezien van een zeker na-ijl effect. Neemt in de loop van het
integratieproces de tweede afgeleide van de oplossing toe dan zal de globale afbreekfout op
soortgelijke wijze toenemen. Komen we in een gebied waar de tweede afgeleide weer afneemt
dan zal ook de globale afbreekfout weer afnemen. Een typisch voorbeeld hiervan zagen we
bij de waterafvoervergelijking waar de afbreekfout toenam tot in een middengebied en daarna afnam tot vrijwel nul, tenminste zolang de stapgrootte kleiner dan 0.1 werd gekozen. De
drastische omslag in het gedrag van de afbreekfout die bij h = 0.1 optreedt is een gevolg van
overschrijding van de grens | 1 + hλ |= 1. Om te laten zien dat dat bij h = 0.1 gebeurt moet
de voorwaarde | 1 + hλ |< 1 naar een voorwaarde voor h vertaald worden.
We moeten onderscheid maken tussen positieve en negatieve λ. Voor positieve λ is de versterkingsfactor voor elke h > 0 groter dan 1 en zal de globale afbreekfout bijgevolg voor
elke stapgrootte exponentieel groeien. Dit lijkt heel onprettig maar we moeten twee dingen
in ogenschouw nemen; (i) de exacte oplossing van y 0 = λy + g(t) zal voor positieve λ ook
exponentiëel stijgen dus de relatieve afbreekfout kan beperkt blijven, (ii) vergelijkingen van
het type y 0 = λy + g(t) komen zeer weinig voor in de fysica en de techniek omdat de gewone
fysische mechanismen een dempende werking hebben; wiskundige modellering daarvan leidt
tot differentiaalvergelijkingen met oplossingen die op den duur uitdempen. Om de problemen
waar wij in geı̈nteresseerd te analyseren volstaat naar lineaire vergelijkingen met negatieve λ
en dalende oplossingen kijken.
Voor negatieve λ kan wel aan | 1 + hλ |< 1 worden voldaan. Merk op dat 1 + hλ voor
negatieve λ altijd kleiner is dan 1 maar kan wel kleiner dan -1 worden als je h groot maakt.
Enig rekenwerk leert dat voor negatieve λ, de waarde van 1 + hλ groter is dan -1 onder de
stabiliteitsvoorwaarde
2
−2
=
.
(6.29)
h<
λ
|λ|
Opmerking
Omdat onder deze voorwaarde de afbreekfouten in de loop van het integratieproces monotoon
wegdempen spreekt men in de literatuur wel over absolute stabiliteit. Let wel dat het begrip
absolute stabiliteit alleen van toepassing is op negatieve waarden van λ.
Laten we voorgaande stabiliteitstheorie toepassen op de Euler Voorwaarts-approximatie van
de vergelijking
1
y 0 = −10[y − (1 + sin(t/2))] + cos(t/2), y(0) = 1.
(6.30)
2
Dit is een lineaire vergelijking y 0 = λy + g(t) met λ = −10. Toepassing van (6.29) leidt tot
de stabiliteitsvoorwaarde h < 0.2, goed overeenkomend met de experimentele bevindingen in
de vorige paragraaf.
75
6.5
Stability of initial-value problems
Stability
A general definition of stability is: small changes or perturbations in the initial conditions
produce correspondingly small changes in the subsequent approximations. Phenomena which
have unstable behavior are: buckling of a column under compression and resonance of a bridge
due to wind forces. In this supplement we only consider stable applications.
Suppose that the initial condition y 0 is perturbed with ε0 . The perturbed solution ỹ satisfies:
ỹ 0 = f (t, ỹ) with ỹ(0) = y0 + ε0 .
The difference of the exact and perturbed solution is defined as ε: ε(t) = ỹ(t) − y(t). An
initial-value problem is stable if
|ε(t)| is bounded for all t > 0.
If |ε(t)| is not bounded for all t, we call the initial-value problem unstable. An initial-value
problem is absolutely stable if
lim |ε(t)| = 0.
t→∞
Stability of a linear initial-value problem
Consider the linear initial-value problem
y 0 = λy + g with y(0) = y0 .
(6.31)
It is easily seen that ε satisfies the test equation :
ε0 = λε with ε(0) = ε0 .
(6.32)
The solution ε of (6.32) is given by ε(t) = ε 0 eλt . This implies that a linear initial-value
problem is stable if and only if λ ≤ 0.
Stability of a one-step difference method
Consider two numerical solutions of (6.31): w j with initial condition w0 = y0 and vj with
initial condition v0 = y0 + ε0 . The difference method is stable if
|εj | is bounded for all j
and absolutely stable if
lim |εj | = 0 .
j→∞
It appears that εj = vj − wj is the numerical solution of the test equation. It is easy to see
that every one-step method applied to the test equation gives
εj+1 = Q(hλ)εj ,
(6.33)
where Q(hλ), the amplification factor, depends on the numerical method: for Forward Euler
Q(h) = 1 + hλ and for the Modified Euler method Q(h) = 1 + hλ + 12 (hλ)2 . By induction it
follows that εj = [Q(hλ)]j ε0 . So a numerical method is stable if and only if
|Q(hλ)| ≤ 1 .
76
(6.34)
For the Forward Euler method we have Q(h) = 1 + hλ. Suppose that λ ≤ 0 then the
differential equation is stable. Inequality (6.34) can be written as:
−1 ≤ 1 + hλ ≤ 1 ,
which is equivalent to
−2 ≤ hλ ≤ 0 .
Since h > 0 and λ ≤ 0 it follows that h ≤
2
|λ| .
For the Modified Euler method the condition |Q(hλ)| ≤ 1 leads to the inequalities:
1
−1 ≤ 1 + hλ + (hλ)2 ≤ 1.
2
The left-hand inequality is equivalent to the inequality
1
0 ≤ 2 + hλ + (hλ)2 .
2
Since the equation 2 + hλ + 21 (hλ)2 = 0 has no real solution h, the inequality is satisfied for
all h > 0. The right-hand inequality 1 + hλ + 12 (hλ)2 ≤ 1 is equivalent to
1
hλ + (hλ)2 ≤ 0,
2
1
(hλ)2 ≤ −hλ.
2
Division of the inequality by the positive number
h≤
hλ2
2
shows that
−2
2
=
.
λ
|λ|
Note that the stability criteria for Euler Forward and Modified Euler are the same, although
the amplification factors are different, see also Figure 6.10.
1
For Backward Euler the amplification factor is given by Q(h) = 1−hλ
. So for stability h
should be such that:
1
−1 ≤
≤1.
1 − hλ
It is easy to see that these inequalities hold for all h ≥ 0 because λ ≤ 0. This implies that
the Backward Euler method is always stable as long as λ ≤ 0.
Example (linear problem)
Consider the initial-value problem:
0
y = −10y ,
y(0) = 1 .
t ∈ [0, 1] ,
The exact solution is given by y(t) = e −10t . From the theory it follows that Forward Euler is
stable if h ≤ 0.2. In Figure 6.11 the perturbations are plotted for the step sizes h = 31 , 16 and
1
1
−4
12 with ε0 = 10 . The method is indeed unstable if h = 3 because |εj | > |εj−1 |. For the
other values of h we see that the perturbations decrease.
77
Euler Voorwaarts
Modified Euler
1
−3
−2
0
−1
−1
Figuur 6.10: The amplification factors of Euler Forward and the Modified Euler method as
function of hλ
−4
6
x 10
h = 1/3
h = 1/6
h = 1/12
5
4
Perturbation
3
2
1
0
−1
−2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
t
0
Figuur 6.11: Forward Euler applied to y = −10y
Stability of a nonlinear initial-value problem
For a general initial-value problem we investigate the stability properties for the linearized
problem. So the initial-value problem
0
y = f (t, y)
and y(t0 ) = y0 ,
78
(6.35)
is linearized by using the linear approximation around ( t̃, ỹ):
f (t, y) ≈ f (t̃, ỹ) + (y − ỹ)
∂f
∂f
(t̃, ỹ) + (t − t̃) (t̃, ỹ) .
∂y
∂t
If (t, y) is close to (t̃, ỹ) equation (6.35) can be approximated by
0
y = f (t̃, ỹ) + (y − ỹ)
∂f
∂f
(t̃, ỹ) + (t − t̃) (t̃, ỹ) .
∂y
∂t
Comparison with the linear equation shows that in this case λ =
stability condition depends on the values of ỹ and t̃.
∂f
∂y (t̃, ỹ).
Note that the
Example (nonlinear problem)
A simple model of a transient flow is given by
y 0 = −ay 2 + p, y(0) = 0.
In this example f (t, y) = −ay 2 + p. After linearization one obtains
λ=
∂f
(t̃, ỹ) = −2aỹ0 .
∂t
This implies that the initial-value problem is stable for all positive a and ỹ 0 . The Forward
Euler method is stable if
1
.
h≤
aỹ0
Note that the bound on the step size decreases if ỹ 0 increases.
6.6
Afbreekfout en consistentie
Om het verschil tussen de exacte en de numerieke oplossing te schatten definiëren we opnieuw
de begrippen: consistentie, stabiliteit en convergentie. Elke eenstaps methode is te schrijven
als
wj+1 = wj + hφ(wj+1 , wj , tj+1 , tj , h) .
Als φ niet afhangt van wj+1 dan noemen we de methode expliciet, anders impliciet. Deze
notatie zullen we gebruiken om een aantal begrippen te definiëren.
Lokale afbreekfout
De lokale afbreekfout τj+1 is gedefinieerd als
τj+1
=
yj+1 − zj+1
,
h
(6.36)
yj + hφ(yj+1 , yj , tj+1 , tj , h) .
(6.37)
where
zj+1
=
Merk op dat, net als bij de Euler Voorwaarts analyse, de exacte oplossing ingevuld is in de
numerieke methode.
79
Consistentie
Een methode heet consistent als
lim τj = 0 ,
h→0
waarbij in de limiet j zo gekozen wordt, dat jh constant is. We noemen een methode van
orde p als ej = O(hp ).
Lokale afbreekfout bij de testvergelijking
Als we een eenstaps methode toepassen op de testvergelijking dan volgt uit (6.33)
yj+1 − Q(hλ)yj
.
h
τj+1 =
(6.38)
De exacte oplossing van de testvergelijking wordt gegeven door
yj+1 = ehλ yj .
(6.39)
Substitutie van (6.39) in (6.38) geeft
τj+1 =
ehλ − Q(hλ)
yj .
h
De grootte van de lokale afbreekfout wordt dus bepaald door het verschil tussen de versterkingsfaktor en de exponentiële functie. Om dit verschil te bepalen maken we gebruik van de
Taylor-ontwikkeling van ehλ :
ehλ =
r−1
X
1
(hλ)i + O(hr ) .
i!
(6.40)
i=0
Als we 6.40) vergelijken met Q(hλ) = 1 + hλ dan volgt dat Euler Voorwaarts een lokale
afbreekfout van de orde 1 heeft. De Modified Euler methode heeft volgens Q(hλ) = 1 + hλ +
1
2
2 (hλ) een lokale afbreekfout van de orde 2 en is dus nauwkeuriger.
Voor de achterwaartse methode van Euler volgt uit Q(hλ) =
1
1−hλ
dat
Q(hλ) = 1 + hλ + (hλ)2 + O(h3 ) ,
zodat de lokale afbreekfout bij Euler Achterwaarts ook van de orde 1 is. Bij de Trapeziumregel
is de orde van de lokale afbreekfout gelijk aan 2.
Lokale afbreekfout voor de algemene vergelijking
Voor een eenstaps methode geldt
τj+1 =
yj+1 − (yj + hφ(yj , tj , h))
.
h
(6.41)
h2 00
y + O(h3 ) .
2 j
(6.42)
Taylorontwikkeling van yj+1 geeft
0
yj+1 = yj + hyj +
Omdat y voldoet aan de differentiaalvergelijking geldt:
0
y = f (t, y)
80
(6.43)
en
00
y = ft + fy f .
(6.44)
Combinatie van (6.41), (6.42), (6.43) en (6.44) geeft
τj+1 = fj +
h
(ft + fy f )j − φ(yj , tj , h) + O(h2 ) .
2
Bij de voorwaartse methode van Euler is φ(y j , tj , h) = f (tj , yj ) en is de afbreekfout van de
orde 1. Dit kunnen we als volgt bewijzen. Uit (6.41) en (6.42) volgt
0
τj+1 = yj + O(h) − φ(yj , tj , h)
Omdat voor Euler Voorwaarts φ(yj , tj , h) = f (tj , yi ) volgt uit (6.43) τj+1 = O(h).
Foutrelatie voor de Modified Euler
De methode wordt gegeven door
w n+1 = wn + hf (tn , wn ),
h
wn+1 = wn + [f (tn , wn ) + f (tn+1 , w n+1 )].
2
(6.45)
(6.46)
Voor het bepalen van de lokale afbreekfout vervangen we in de formules (6.45), (6.46) de
numerieke waarde wn door de exacte waarde y(tn ), dus
z n+1 = y(tn ) + hf (tn , y(tn )),
h
zn+1 = y(tn ) + [f (tn , y(tn )) + f (tn+1 , z n+1 )].
2
(6.47)
(6.48)
Eerst bewijzen we dat de lokale afbreekfout van de Modified Euler methode de grootte O(h 2 )
heeft door aan te tonen dat van de Taylorreeksontwikkelingen van y(t n+1 ) en zn+1 de termen
van orde 1, h en h2 tegen elkaar wegvallen.
De laatste term van (6.48) wordt rond het punt (t n , y(tn )) ontwikkeld in een Taylorreeks (in
twee variabelen omdat beide variabelen verschoven worden):
1
∂2f
∂f
∂f
)n + (z n+1 − y(tn ))( )n + h2 ( 2 )n +
∂t
∂y
2
∂t
2
1
∂ f
∂2f
(z n+1 − y(tn ))2 ( 2 )n + h(z n+1 − y(tn ))(
)n
+
2
∂y
∂t∂y
+ ...
f (tn+1 , z n+1 ) = fn + h(
(6.49)
Volgens (6.47) geldt z n+1 − y(tn ) = hf (tn , y(tn )) = hfn . Dat houdt in dat de laatste drie
gespecificeerde termen van (6.49) de grootte–orde h 2 hebben (en dat de stippeltjes voor termen
van O(h3 ) en hoger staan). We zullen de termen met tweede en hogere machten van h
niet nodig hebben en specificeren ze verder niet meer. Substitutie van de uitdrukking voor
z n+1 − y(tn ) in de derde term van (6.49) resulteert in:
f (tn+1 , z n+1 ) = fn + h[
∂f
∂f
+ f ]n + O(h2 ).
∂t
∂y
81
Substitutie van deze uitdrukking in (6.48) geeft:
zn+1 = y(tn ) + hfn +
h2 ∂f
∂f
[
+f
]n + O(h3 ).
2 ∂t
∂y
(6.50)
Op dit punt wordt de differentiaalvergelijking y 0 (t) = f (t, y) gebruikt. Door differentiatie
naar t, onder gebruik van de kettingregel, volgt
y 00 (t) =
df (t, y(t))
∂f
∂f dy
∂f
∂f
dy 0
=
=
+
=[
+f
](t, y).
dt
dt
∂t
∂y dt
∂t
∂y
(6.51)
Door substitutie van deze uitdrukking, na evaluatie in t = t n , gaat (6.50) over in:
zn+1 = y(tn ) + hy 0 (tn ) +
h2 00
y (tn ) + O(h3 ).
2
(6.52)
We zien dat de eerste drie termen precies de eerste drie termen van de Taylorontwikkeling
y(tn+1 ) = y(tn ) + hy 0 (tn ) +
h2 00
y (tn ) + O(h3 )
2
(6.53)
zijn; ze verdwijnen als we het verschil van de twee ontwikkelingen nemen:
y(tn+1 ) − zn+1 = O(h3 ).
(6.54)
τn+1 = O(h2 ).
(6.55)
Na deling door h volgt
6.7
Convergentie
Laat yj en wj respectievelijk de exacte en numerieke oplossing zijn op t = t j . Bij het bepalen
van een numerieke benadering is het van belang om te weten hoe groot de globale afbreekfout
ej = yj − wj is.
Convergentie
Een schema heet convergent als voor de globale afbreekfout e j geldt:
lim ej = 0 ,
h→0
waarbij jh constant is.
We laten nu zien dat stabiliteit en consistentie convergentie impliceren.
Theorem 6.7.1 If the numerical method is stable and consistent then the numerical solution
converges to the exact solution for h → 0. Furthermore the global error e j and the local
truncation error τj (h) have the same rate of convergence.
Proof
0
We only prove the theorem for the test equation y = λy. The following recurrence holds for
the global error ej :
ej
= yj − Q(hλ)wj−1
= yj − Q(hλ)yj−1 + Q(hλ)ej−1
= hτj + Q(hλ)ej−1 .
82
(6.56)
Repeating this argument one obtains
ej =
j−1
X
[Q(hλ)]l hτj−l .
l=0
From the stability follows
|ej | ≤
j−1
X
l=0
j−1
X
l
|Q(hλ)| h|τj−l | ≤
l=0
h|τj−l | ≤ max |τl | ,
1≤l≤j−1
where we used that jh ≤ 1. This implies that the rate of convergence of the global error is
identical to that of the local truncation error. Furthermore the global error goes to zero if
h → 0 because the method is consistent.
Waarom hogere orde methoden?
Het gebruik van een hogere orde methode is vaak zinvol. We laten dit zien aan de hand van
de Voorwaartse en de Modified methode van Euler. Neem aan dat de globale afbreekfout
begrensd is door:
|yj − wj | ≤ h
|yj − wj | ≤ h
Euler Voorwaarts ,
2
Modified Euler .
Om de hoeveelheid werk te bepalen, tellen we het aantal functie evaluaties. Bij Euler Voorwaarts is één functie evaluatie per tijdstap nodig en bij Modified Euler twee. In de volgende
tabel geven we de stapgrootte en aantal functie evaluaties, dat nodig is om een voorgeschreven
precisie te halen. Uit de tabel blijkt dat een hogere orde methode de voorkeur heeft, als er
|yj − wj |
10−1
10−2
10−4
Euler Voorwaarts
h
functie evaluaties
10−1
10
−2
10
100
10−4
10000
h
1/3
10−1
10−2
Modified Euler
functie evaluaties
6
20
200
Tabel 6.1: Kosten voor Euler Voorwaarts en Modified Euler voor een verschillende nauwkeurigheid
een hoge nauwkeurigheid vereist wordt. Deze observatie is algemeen geldig. Belangrijk is wel
dat de exacte oplossing voldoende glad is.
De vierde orde methode van Runge-Kutta
In deze paragraaf definiëren we de vierde orde methode van Runge-Kutta. We hebben gezien
dat hogere orde methoden tot een grote besparing kunnen leiden. Later blijkt dat deze methode ook aantrekkelijke stabiliteits eigenschappen heeft. We geven hier de formules en een
intuı̈tieve verificatie op basis van de integraalformulering:
1
wn+1 = wn + [k1 + 2k2 + 2k3 + k4 ],
6
83
(6.57)
waarbij de predictoren k1 t/m k4 gegeven worden door
k1 = hf (tn , wn )
1
1
k2 = hf (tn + h, wn + k1 )
2
2
1
1
k3 = hf (tn + h, wn + k2 )
2
2
k4 = hf (tn + h, wn + k3 ).
(6.58)
Rt
De corrector is gebaseerd op de Simpson regel als benadering van de integraal tnn+1 f (t, y(t))dt.
Rt
De Simpsonregel approximeert volgens: tnn+1 f (t, y(t))dt ≈ h6 [y(tn ) + 4y(tn + 12 h) + y(tn + h)]
De Simpson regel is nauwkeuriger dan de Trapezium regel en de midpoint rule die aan tweede
orde Runge Kutta methoden ten grondslag liggen.
De waarden voor y(tn + 21 h) en y(tn + h) moeten voorspeld worden. Uit de gebruikte eerste
argumenten van f in bovenstaande predictor formules kun je afleiden dat k 2 en k3 beiden een
predictie voor y(tn + 21 h) moeten vormen (kennelijk wordt de middelste term in de Simpson
regel in twee helften gesplitst) en dat k 4 een predictie voor y(tn + h) vormt.
Bovenstaande Runge–Kutta (afkorting RK4) methode kan door middel van Taylorreeksen
strict afgeleid worden, met als bijproduct een uitdrukking voor de lokale afbreekfout die van
de O(h4 ) blijkt te zijn. Die afleiding toont aan dat de keuze van de predictoren volgens (6.58)
optimaal is in die zin dat elke andere keuze tot een lagere orde van de afbreekfout zou leiden.
In plaats van de algemene afleiding beperken we ons weer tot homogene testvergelijkingen
waarvoor de orde van de lokale afbreekfout en de versterkingsfactor betrekkelijk simpel af te
leiden zijn.
Toepassing van de formules (6.57) en (6.58) op y 0 = λy resulteert namelijk in
1
1
1
wn+1 = [1 + hλ + (hλ)2 + (hλ)3 + (hλ)4 ]wn .
2
6
24
Zoals bij de afleiding voor de Modified Euler opgemerkt kun je hieruit direct de versterkingsfactor aflezen, namelijk
1
1
1
Q(hλ) = 1 + hλ + (hλ)2 + (hλ)3 + (hλ)4 .
2
6
24
(6.59)
Opgave. Laat zien dat een niet–homogene testvergelijking dezelfde versterkingsfactor heeft.
Ook de lokale afbreekfout kan gemakkelijk uitgerekend worden voor de testvergelijking. De
grootheid zn+1 wordt weer gedefinieerd door in (6.57) en (6.58) w n door y(tn ) te vervangen.
Substitutie van f (t, y) = λy leidt tot z n+1 = Q(hλ)y(tn ). De exacte oplossing van y 0 = λy in
tn+1 wordt gegeven door y(tn+1 ) = ehλ y(tn ), zoals men vrij eenvoudig kan nagaan. Dit leidt
tot:
y(tn+1 ) − zn+1 = [eλh − Q(hλ)]y(tn ).
(6.60)
De rechterzijde van (6.59) bestaat precies uit de eerste vijf termen van de reeksontwikkeling
van eλh naar machten van λh zodat van de coëfficiënt van y(tn ) in (6.60) slechts vijfde en
hogere machten van h overblijven. Na deling door h volgt dat de lokale afbreekfout O(h 4 ) is.
84
Dit resultaat bevestigt het algemene resultaat, verkregen door middel van Taylorontwikkelingen, voor testvergelijkingen.
De stabiliteitstheorie loopt voor RK4 op dezelfde wijze als voor de methoden van Euler en
Modified Euler, alleen de versterkingsfactor is anders. Aan (6.59) ziet men direct dat Q(hλ)
voor positieve λ voor elke h groter is dan 1 en dat onvermijdelijk exponentiële foutgroei optreedt.
In het negatieve λ–geval eisen we voor stabiliteit dat
1
1
1
−1 < 1 + hλ + (hλ)2 + (hλ)3 + (hλ)4 < 1.
2
6
24
(6.61)
Noem voor het gemak hλ = x; met deze notatie volgt uit de linker ongelijkheid van (6.61):
1 4
x > 0. Aan deze ongelijkheid is voor elke x voldaan. Dat ziet men
2 + x + 21 x2 + 61 x3 + 24
1 4
door naar de extremen van het vierde graads polynoom P (x) = 2 + x + 12 x2 + 61 x3 + 24
x te
0
kijken. De extremen worden aangenomen in de nulpunten van P (x), dus voor die waarden x̃
van x waarvoor geldt: P 0 (x̃) = 1 + x̃ + 12 x̃2 + 61 x̃3 = 0. De waarde van een extreem van P (x)
wordt gevonden door zo’n x̃ in P (x) te substitueren en de relatie P 0 (x̃) = 0 te gebruiken:
1 4
1 4
1 4
x̃ = 1 + (1 + x̃ + 21 x̃2 + 61 x̃3 ) + 24
x̃ = 1 + 24
x̃ . Aangezien
P (x̃) = 2 + x̃ + 21 x̃2 + 61 x̃3 + 24
1 4
1 + 24 x̃ voor elke x̃ positief is zijn alle extremen van P (x) positief, dus ook de minima.
Bijgevolg is P (x) positief voor elke x en daarmee is het beweerde bewezen.
Uit de rechter ongelijkheid van (6.61) moet de stabiliteitsvoorwaarde voor h volgen. Deze
1 4
1 3
ongelijkheid is identiek met x + 21 x2 + 61 x3 + 24
x < 0, oftewel x(1 + 12 x + 61 x2 + 24
x )<0
1
1 2
1 3
welke, vanwege x = hλ < 0, equivalent is met 1 + 2 x + 6 x + 24 x > 0. Een onderzoek van
1 3
x toont aan dat dit slechts één nulpunt bezit en wel voor
het polynoom 1 + 21 x + 16 x2 + 24
x ongeveer gelijk aan -2.8. Rechts van dit nulpunt is het polynoom positief en links ervan
negatief. Hieruit volgt dat moet gelden x = hλ > −2.8, oftewel
h<
−2.8
2.8
=
,
λ
|λ|
(6.62)
opdat aan de stabiliteitsconditie −1 < Q(hλ) < 1 is voldaan.
De stabiliteitsgrens ligt voor RK4 iets hoger dan voor Euler Voorwaarts en Modified Euler.
De iets grotere ruimte voor de stapgrootte keuze die daardoor bij RK4 ontstaat is echter
marginaal en heeft vrijwel geen praktische betekenis.
De volgende tabel geeft een overzicht van de stabiliteitsvoorwaarden en afbreekfouten van de
drie behandelde methoden.
methode
Euler Voorwaarts
Modified Euler
Runge–Kutta
versterkingsfactor
1 + hλ
1 + hλ + 21 h2 λ2
1 + hλ + 21 h2 λ2 + 16 h3 λ3 +
85
1 4 4
24 h λ
stab. voorwaarde
bij reële negatieve λ
2
h < |λ|
2
h < |λ|
h < 2.8
|λ|
lokale
afbreekfout
h 00
2 y (ξ)
O(h2 )
O(h4 )
6.8
Globale afbreekfout en foutschattingen
In dit stukje onderzoeken we het gedrag van de globale afbreekfout als functie van de stapgrootte, voor kleine (stabiele) stapgrootten; de limiet h → 0 speelt daarbij een belangrijke
rol.
Afschatting van de afbreekfout
We hebben een bovengrens voor de Euler Voorwaarts afbreekfout afgeleid. Deze bovengrens is
evenredig met h terwijl de evenredigheidscoëfficiënt een functie is van een Lipschitzconstante
L voor het rechterlid f (t, y) van de differentiaalvergelijking, een bovengrens M voor de tweede
afgeleide van de oplossing en de lengte van het integratie-interval. Deze afschatting toont aan
dat de globale afbreekfout naar nul gaat als h naar nul gaat, oftewel dat de voorwaartse methode van Euler convergent is, voor een uitgebreide klasse van differentiaalvergelijkingen, nl.
die met rechterleden f (t, y) welke aan de Lipschitz voorwaarde voldoen. Theoretisch gezien
een belangrijk en fundamenteel resultaat want een methode die niet convergent is natuurlijk
onbruikbaar.
Helaas geeft de bovengrens in de voor ons interessante gevallen, dat zijn differentiaalvergelijkingen met dalende (of in elk geval niet exponentiëel stijgende) oplossingen, geen enkele
indicatie over de werkelijke afbreekfout omdat de evenredigheidscoëfficiënt van h voor deze
klasse van differentiaalvergelijkingen veel en veel te ruim bemeten is. Het is voldoende naar
de testvergelijkingen te kijken om te zien hoe dat zit.
Omdat de Lipschitzconstante voor een testvergelijking gelijk is aan | λ | is er geen onderscheid tussen positieve en negatieve λ en is verder geldig voor willekeurige stapgrootte. Voor
positieve λ en voor instabiele approximaties in het negatieve λ-geval stijgt de afbreekfout
exponentiëel met het aantal stappen omdat de versterkingsfactor groter is dan 1. Om deze
gevallen te dekken in de afbreekfoutafschatting moet de evenredigheidscoëfficiënt exponentiëel
oplopen met de lengte van het integratie-interval. Als we ons beperken tot stabiele integratie
van testvergelijkingen met negatieve λ kan de grens veel scherper gesteld worden omdat de
versterkingsfactor kleiner dan 1 blijft.
De globale afbreekfout in de limiet h → 0 voor het negatieve λ-geval
Met het oog op een uniforme behandeling recapituleren we de afbreekfoutrelaties voor de drie
behandelde methoden, waarbij en = yn − wn :
en+1 = Q(hλ)en + hτn+1 ,
(6.63)
met:
Q(hλ) = 1 + hλ
Q(hλ) = 1 + hλ +
(Euler Voorwaarts),
h2 2
λ
2
(Modified Euler),
h2 2 h3 3 h4 4
λ + λ + λ
2
6
24
Herhaalde toepassing van (6.63) (met e 0 = 0) geeft:
Q(hλ) = 1 + hλ +
(RK4).
eN = {Q(hλ)}N −1 hτ1 + {Q(hλ)}N −2 hτ2 + . . . + {Q(hλ)}hτN −1 + hτN .
86
(6.64)
(6.65)
(6.66)
(6.67)
Voor stabiele stapgrootten zijn de versterkingsfactoren kleiner dan 1 in absolute waarde en
geldt:
−1
| eN |≤ hΣN
| τn+1 | .
(6.68)
0
Deze schatting is voor stabiele approximaties in het negatieve λ-geval veel adequater. Omdat
anderszijds de versterkingsfactoren voor h → 0 naar 1 naderen is (6.68) ook geen overschatting
van de afbreekfout. In deze limiet worden de afbreekfouten niet gedempt en hebben we gewoon
met de optelsom van afbreekfouten te maken:
−1
lim eN = lim hΣN
τn+1
0
h→0
h→0
(6.69)
We moeten afspreken wat met deze limiet bedoeld wordt. Het heeft weinig zin de limiet h → 0
te nemen terwijl N vast wordt gehouden: dan krimpt het integratie interval in tot nul. Je
krijgt alleen iets zinvols als je het integratie-interval (0,t) vasthoudt. Dus N h = t=constant
terwijl h → 0 en het aantal rooster punten N gaat omgekeerd evenredig met h naar oneindig.
In de aldus opgevatte limiet gaat het rechterlid van (6.69) over
R t in een integraal over (0, t),
N −1
immers hΣ0 τn+1 is niets anders dan de Riemann-som voor 0 τ (t)dt, waarbij τ (t) opgevat
moet worden als de continue versie van de lokale afbreekfout. Voor
R t de Euler Voorwaarts
methode bijvoorbeeld zouden we τ (t) = h2 y 00 (t) moeten invullen in 0 τ (t)dt hetgeen leidt tot
Z
h t 00
y (t)dt.
lim e(t, h) =
h→0
2 0
De notatie eN is hier door e(t, h) vervangen om aan te geven dat naar de afbreekfout op een
vast (maar overigens willekeurig) tijdstip t kijken, als functie van de stapgrootte.
Voor andere methoden zou een uitdrukking voor de limietfout op soortgelijke wijze kunnen
volgen, maar dat heeft weinig zin want evaluatie is in
R t pricipe toch niet mogelijk omdat de
oplossing onbekend is. Wel belangrijk, en direct uit 0 τ (t)dt af te leiden, is dat de globale
afbreekfout op dezelfde manier van h afhangt als de lokale afbreekfout. We schrijven
lim e(t, h) = K(t) hp .
h→0
(6.70)
Het getal p, de orde van de methode, geeft dus de grootte–orde van zowel de globale afbreekfout als de lokale afbreekfout aan. Voor de behandelde methoden van Euler en de tweede en
vierde orde Runge-Kutta methoden is p=1, 2, resp. 4.
De evenredigheidsconstante van hp bestaat uit integralen over (0, t) van bepaalde afgeleiden
van de oplossing. Deze worden in (6.70) op één hoop geveegd en met K(t) aangeduid. Zoals
eerder gezegd heeft het geen zin om te proberen K(t) aan de oplossing te relateren omdat deze
onbekend is. Het idee is K(t) te gaan schatten aan de hand van bepaalde numeriek berekende
grootheden en daarvoor zullen we alleen de afhankelijkheid (6.70) van de afbreekfout van h
in de limiet voor verdwijnende h nodig hebben.
De afbreekfout bij niet–lineaire differentiaalvergelijkingen
Na linearisatie van de afbreekfoutrelatie kan bovenstaande theorie ook op niet–lineaire differentiaalvergelijkingen worden toegepast. De expansie van de afbreekfout blijft in wezen
dezelfde, afgezien van de variabiliteit van de versterkingsfactoren, en de redenering verandert
niet onder deze uitbreiding. Laten we eens experimenteel verifiëren dat de Euler Voorwaarts
87
afbreekfout bij de waterafvoervergelijking inderdaad lineair met h naar nul gaat. De exacte
oplossing van de vergelijking is bekend zodat de afbreekfout precies bekend is.
In Tabel 6.2 zijn numerieke oplossing (tweede kolom) en de afbreekfout (derde kolom) in het
punt t = 0.2 getabelleerd voor steeds gehalveerde stapgrootten, startend met h = 0.01. Let
op de notatie: y(t, h) staat voor de numerieke approximatie met stapgrootte h in het punt t.
Het punt t = 0.2 is in het middengebied gekozen omdat de afbreekfouten daar het grootst zijn
wat de duidelijkheid van de verschijnselen ten goede komt; in principe zou elke andere waarde
van t gekozen kunnen worden. In de vierde kolom is het quotiënt van de afbreekfout en h
h
0.010000000
0.005000000
0.002500000
0.001250000
0.000625000
0.000312500
0.000156250
0.000078125
y(0.2, h)
4.86599176380252
4.84332116375693
4.83178659464220
4.82597571717546
4.82306008128045
4.82159979736355
4.82086904907235
4.82050352459794
y(0.2) − y(0.2, h)
-0.04585386
-0.02318326
-0.01164869
-0.00583781
-0.00292218
-0.00146189
-0.00073114
-0.00036562
(y(0.2) − y(0.2, h))/h
-4.585386
-4.636652
-4.659477
-4.670253
-4.675489
-4.678070
-4.679351
-4.679990
(6.77)
-0.02267060
-0.01153457
-0.00581036
-0.00291563
-0.00146028
-0.00073074
-0.00036552
Tabel 6.2: Numerieke oplossing van y 0 = 50 − 2y 2 in t=0.2, met behulp van Euler Voorwaarts
uitgerekend. Dit quotiënt blijkt weinig te variëren over de getoonde range van h–waarden en
lijkt voor h → 0 naar een constante waarde te gaan. Met andere woorden, voor niet te grote
h blijkt de afbreekfout praktisch lineair met h af te nemen. Numerieke experimenten met
allerlei differentiaalvergelijkingen laten zien dat dit steeds het geval is, afgezien van die (in de
praktijk weinig voorkomende) gevallen waar de oplossing van de differentiaalvergelijking niet
aan bepaalde continuiteitseisen voldoet.
Foutschatting door middel van stapgrootte halvering
Dat de afbreekfout in bovenstaand voorbeeld voor niet zeer kleine h niet helemaal lineair
−1
τn+1 alleen door de
is met h houdt verband met het feit dat men de Riemann-som hΣ N
0
Rt
integraal 0 τ (t)dt mag vervangen in de limiet h → 0; de Riemann-som en de integraal verschillen voor kleine doch niet infinitesimale h met een bedrag dat van h afhangt. We schrijven
dienovereenkomstig:
e(t, h) = K(t, h) hp , lim K(t, h) = K(t).
(6.71)
h→0
Het idee is dat K(t, h) vrijwel onafhankelijk van h wordt (en wel gelijk aan K(t)) indien h
maar voldoende klein wordt gekozen. Dat wordt aangegeven door de schrijfwijze:
e(t, h) ≈ K(t)hp voor voldoende kleine h.
(6.72)
Op basis van deze approximatieve gelijkheid gaan we zonder enige kennis van de exacte oplossing een schatting voor K(t) in een willekeurig te kiezen punt t geven op basis van twee
numerieke approximaties. De eerste approximatie werkt met stapgrootte h (N stappen) en
de tweede met stapgrootte 12 h (en gebruikt dus 2N stappen om in t uit te komen). Notatie:
wN = y(t, h) en w2N = y(t, h2 ). We noemen dit afbreekfoutschatting door stapgrootte halvering en het werkt als volgt.
88
Neem aan dat h zo klein is dat (6.72) goed opgaat (we zullen nog aangeven hoe dat gecontroleerd kan worden). Dan geldt:
e(t, h) = y(t) − y(t, h) ≈ K(t)hp
(6.73)
en, omdat (6.72) beter opgaat naarmate h kleiner wordt, zal zeker gelden
h
h
h
e(t, ) = y(t) − y(t, ) ≈ K(t)( )p ,
2
2
2
(6.74)
Aftrekken van twee bovenstaande vergelijkingen levert
h
1
y(t, ) − y(t, h) ≈ K(t)hp (1 − ( )p ),
2
2
(6.75)
waaruit de waarde van K(t) volgt:
y(t, h2 ) − y(t, h)
K(t) ≈
.
hp (1 − ( 21 )p )
(6.76)
Merk op dat dit vergelijkbaar is met Richardson foutschatting, die behandeld is in Paragraaf
3.6. Vullen we deze schatting voor K(t) in in (6.73) dan ontstaat een afbreekfoutschatting
voor de approximatie met h en bij invulling in (6.74) ontstaat een afbreekfoutschatting voor
de approximatie met h/2. Omdat het zinvoller is de afbreekfout in de meest nauwkeurige
approximatie te schatten substitueren we (6.76) in (6.74):
1
h
h
[y(t, ) − y(t, h)].
y(t) − y(t, ) ≈ p
2
2 −1
2
(6.77)
We zien dat de orde van de methode zich in de afbreekfoutschatting manifesteert via de factor
1
2p −1 .
Laten we deze formule toepassen op de Euler Voorwaarts approximaties uit kolom twee
van tabel 6.2 voor het waterafvoerprobleem. De resultaten voor paren (h, 12 h) met h =
0.05, 0.025, 0.00125,. . . staan in de vijfde kolom van de tabel en kunnen vergeleken worden
met de afbreekfouten in de vierde kolom die berekend zijn als het verschil van de numerieke
en de exacte oplossing. De geschatte afbreekfouten blijken heel dicht in de buurt van de exact
berekende te liggen, en wel dichter naarmate h kleiner wordt. Dat is ook logisch want hoe
kleiner h hoe beter aan (6.72) voldaan is.
In de praktische situatie dat de oplossing niet bekend is bestaat geen directe controle op de
kwaliteit van de afbreekfoutschatting. We weten niet in hoeverre voor een bepaalde h goed
aan de lineariteitsrelatie (6.72) is voldaan en of afbreekfoutschattingen voor deze h wel realistische informatie leveren. Het aardige is dat ook hierover experimentele informatie kan
worden verkregen door nogmaals stapgroottehalvering toe te passen (h→ h/2 → h/4). We
schrijven: y(t) − y(t, h/4) ≈ K(h/4) p waaruit door aftrekking van (6.74) volgt
h
y(t, h/4) − y(t, h/2) ≈ K( )p .
4
(6.78)
Deze relatie en (6.75) kunnen gecombineerd worden tot:
K( h2 )p
y(t, h/2) − y(t, h)
≈
≈ 2p .
y(t, h/4) − y(t, h/2)
K( h4 )p
89
(6.79)
Indien we voor zekere h voor de drie opeenvolgende approximaties y(t, h),
y(t,h/2)−y(t,h)
in de buurt van 2p ligt (dus 2 voor Euler,
y(t, h2 ), y( h4 ) vinden dat de grootheid y(t,h/4)−y(t,h/2)
4 voor Modified Euler, 16 voor RK4) dan mogen we aannemen dat vanaf deze h goed aan
(6.72) is voldaan.
Laten we deze procedure toepassen op een enigszins aangepast model voor de waterafvoer
waarbij y 2 in het rechterlid vervangen is door y 2.1 . Van deze vergelijking is geen analytische
oplossing bekend. Tabel 6.3 geeft de numerieke approximaties van de oplossing op t = 0.2 voor
een zelfde reeks van h–waarden als in Tabel 6.2. De resultaten in kolom vier laten zien dat
vanaf h=0.00125 de afbreekfout als lineair in h beschouwd kan worden. In de praktijk worden
h
0.01000000000
0.00500000000
0.00250000000
0.00125000000
0.00062500000
0.00031250000
0.00015625000
0.00007812500
0.00003906250
0.00001953125
y(0.2,h)
4.559913710926
4.543116291062
4.534384275071
4.529943322643
4.527705063356
4.526581601705
4.526018801777
4.525737136254
4.525596237317
4.525525771331
(6.77)
(6.79)
-0.01679741
-0.00873201
-0.00444095
-0.00223825
-0.00112346
-0.00056279
-0.00028166
-0.00014089
-0.00007046
1.9236588
1.9662484
1.9841099
1.9922881
1.9962007
1.9981143
1.9990606
1.9995311
Tabel 6.3: Numerieke oplossing van y 0 = 50 − 2y 2.1 in t=0.2. met Euler Voorwaarts
afbreekfoutschattingen meestal op de volgende wijze toegepast. Je eist dat de afbreekfout
op een zeker tijdstip binnen een bepaalde marge blijft en je wilt een stapgrootte bepalen
waarvoor dat het geval is.
Eerst probeer je een stapgrootte te vinden die een kans maakt aan de gevraagde eis te voldoen.
Je zou de keuze kunnen baseren op kennis van het globale verloop van de oplossing en op een
idee over het aantal punten dat nodig is de oplossing visueel te herkennen als je deze in die
punten plot. Bijvoorbeeld, voor een sinus op het interval (0,π) heb je toch al gauw 10 á 20
punten nodig.
Te beginnen met zo’n stapgrootte voer je de integratie driemaal uit met telkens gehalveerde
stapgrootte, en kijkt of aan de lineariteitstest (6.79) is voldaan. Zo niet dan halveer je h
nogmaals en voert de test opnieuw uit voor de laatste drie approximaties. Zodra de test
positief uitvalt bereken je een schatting voor de afbreekfout volgens (6.77) uit de laatste
twee approximaties. Is de geschatte afbreekfout niet kleiner dan de marge dan ga je door
met stapgroottehalvering tot je wel binnen de marge uitkomt. De schattingen zelf worden
daarbij steeds nauwkeuriger uitgevoerd omdat steeds beter aan de lineariteitstest (6.79) wordt
voldaan naarmate h kleiner wordt.
Opgave
1. Een differentiaalvergelijking wordt met twee verschillende methoden geapproximeerd.
Voor beide methoden zijn de stapgrootten h=0.1, 0.05, 0.025 gebruikt. De numerieke
oplossingen in het punt t=1 zijn hieronder getabelleerd.
90
Bepaal de orde p van de globale afbreekfout O(h p ) van beide methoden.
h
0.1
0.05
0.025
6.9
methode 1
0.752790
0.750686
0.750180
methode 2
0.710791
0.730912
0.740587
Numerieke methoden voor stelsels differentiaalvergelijkingen
Er is eigenlijk heel weinig verschil tussen de behandeling van één differentiaalvergelijking
voor één onbekende functie en een stelsel van k differentiaalvergelijkingen voor k onbekende functies. Numerieke methoden voor stelsels worden op eenzelfde wijze afgeleid als in het
scalaire geval; bij consequent gebruik van de vectornotatie is er eigenlijk niet eens verschil
in de formules. Dat geldt ook voor de afbreekfoutrelatie; de stabiliteitstheorie en de analyse
van de globale afbreekfout zijn dan ook niet veel meer dan een generalizatie van de theorie
voor het scalaire geval. De theorievorming voor stelsels is weer gecentreerd rond de lineaire
vergelijkingen met constante coëfficiënten, de zg. teststelsels y 0 = Ay + g(t). In de theorie
blijken de eigenwaarden van de matrix A de grootheid λ in y 0 = λy + g(t) te vervangen. Het
enige essentieel nieuwe aspect waarmee rekening gehouden moet worden is het voorkomen
van complexe eigenwaarden.
De voorwaartse methode van Euler voor stelsels
De werkwijze is dezelfde als voorheen, nu toegepast op elk van de differentiaalvergelijkingen
afzonderlijk. Voor de i-de component: w i,n+1 ligt op de raaklijn in tn aan de i-de oplossingskromme door het vorige numerieke punt (t n , wn ) (deze kromme ligt in de buurt van de
exacte i-de oplossingskromme yi (t)). Onder gebruikmaking van de i–de differentiaalvergelijking yi0 = fi (t, y1 , y2 , . . . , yk ) volgt:
wi,n+1 = win + hfi (tn , w1n , w2n , . . . , wkn ).
(6.80)
Voor elk van de componenten kan een dergelijke formule opgeschreven worden. In vectornotatie worden deze formules samengevat als:
wn+1 = wn + hf (tn , wn ).
(6.81)
De Euler Voorwaarts formule voor stelsels is gewoon een vectoriële copie van die voor het
scalaire geval.
Als we een impliciete methode gebruiken zoals Euler Achterwaarts, dan moet er elke tijdstap
een oplossing bepaald worden van het volgende niet-lineaire stelsel:
wn+1 = wn + hf (tn+1 , wn+1 ).
Dit kan gedaan worden met een methode uit Paragraaf 4.5.
De afbreekfoutrelatie kan componentsgewijs op dezelfde wijze als in het scalaire geval worden
afgeleid. De i–de component ei,n+1 van de afbreekfout in tn+1 , gedefinieerd als
ei,n+1 = yi (tn+1 ) − wi,n+1 ,
91
(6.82)
wordt weer opgesplitst volgens
ei,n+1 = (yi (tn+1 ) − zi,n+1 ) + (zi,n+1 − wi,n+1 ),
(6.83)
waarbij zi,n+1 gevonden wordt door de Eulerformule in de punten (t n , yi (tn )) (i=1,2,. . . ,k)
van de exacte oplossingskrommen toe te passen:
zi,n+1 = yi (tn ) + hfi (tn , y1 (tn ), y2 (tn ), . . . , yk (tn )).
Door aftrekking van (6.80) volgt voor het doorgavedeel:
zi,n+1 − wi,n+1 = ein + h[fi (tn , y1 (tn ), y2 (tn ), . . . , yk (tn ))
− fi (tn , w1n , w2n , . . . , wkn )].
(6.84)
Een uitdrukking voor de afbreekfout,
τi,n+1 =
yi (tn+1 ) − zi,n+1
h
(6.85)
volgt, precies als in het scalaire geval, door de Taylorontwikkelingen van y i (tn+1 ) en zi,n+1
rond het punt t = tn van elkaar af te trekken. Men verifiëre dat
τi,n+1 =
1 00
hy (ξi,n+1 ), ξi,n+1 ∈ (tn , tn+1 ).
2 i
(6.86)
Na invullen van (6.84) en (6.86) in (6.83) (voor i=1,2,. . . ,k) resulteert de vectoriële versie van
de scalaire afbreekfoutrelatie:
en+1 = en + h[f (tn , y(tn )) − f (tn , wn )] + hτ n+1 ,
(6.87)
waarbij de afbreekfoutvector gegeven wordt door:
1
τ n+1 = hy00 (ξn+1 ), ξn+1 ∈ (tn , tn+1 ).
2
(6.88)
De problemen die de afbreekfoutrelatie in deze vorm voor de verdere analyse oplevert zijn
van dezelfde aard als in het scalaire geval. Voor niet–lineaire f (t, y) moet het doorgavedeel
weer gelinearizeerd worden door middel van een Taylorontwikkeling, nu voor een functie van
meerdere variabelen:
fi (tn , w1n , w2n , . . . , wkn ) = fi (tn , y1 (tn ), y2 (tn ), . . . , yk (tn ))
∂fi
)n
+ (w1n − y1 (tn ))(
∂y1
∂fi
+ (w2n − y2 (tn ))(
)n
∂y2
+ ...
∂fi
+ (wkn − yk (tn ))(
)n ,
∂yk
92
waarbij de beneden–index n bij de partiële afgeleiden staat voor evaluatie in het punt (t n , y1 (tn ), y2 (tn ), . . . , yk (tn ))
Enige reorganisatie van deze uitdrukking levert:
In vectorvorm:
fi (tn , y1 (tn ), y2 (tn ), . . . , yk (tn )) − fi (tn , w1n , w2n , . . . , wkn ) =
∂fi
∂fi
∂fi
(
)n e1n + (
)n e2n + . . . + (
)n ekn =
∂y1
∂y2
∂yk


e1n


∂fi
∂fi ∂fi
 e2n 
...
 ..  .
∂y1 ∂y2
∂yk n  . 
ekn
∂f1
∂y1
∂f2
∂y1
∂f1
∂y2
∂f2
∂y2
...
...
∂fk
∂y1
∂fk
∂y2
...



f (tn , y(tn )) − f (tn , wn ) = 


..
.
..
.
∂f1
∂yk
∂f2
∂yk
..
.
∂fk
∂yk



 en .


(6.89)
n
De matrix is de Jacobiaan van de vectorfunctie f (t, y) in het punt (t n , y1 (tn ), y2 (tn ), . . . , yk (tn ));
we noemen deze Jn . Vullen we bovenstaande uitdrukking voor het doorgavedeel van de afbreekfout in in (6.83) dan ontstaat de gelineariseerde vorm van (6.87):
en+1 = (I + hJn )en + hτ n+1 .
(6.90)
Hogere orde beginwaarde problemen
Een hogere orde beginwaarde probleem wordt beschreven door de differentiaalvergelijking
y (n) = f (t, y, y (1) , ..., y (n−1) ) ,
(6.91)
met beginvoorwaarden
0
(n−1)
0
y(0) = y0 , y (0) = y0 , ..., y (n−1) (0) = y0
waarin y (k) een korte schrijfwijze is voor
,
dk y
.
dtk
Een manier om dit probleem op te lossen is de volgende transformatie:
x1 = y ,
x2 = y (1) ,
..
.
xn = y (n−1) .
Hiermee gaat (6.91) over in het volgende eerste orde stelsel
0
x1 = x 2 ,
..
.
0
xn−1 = xn ,
0
xn = f (t, x1 , ..., xn ) ,
93
(n−1)
met beginvoorwaarden x1 (0) = y0 , ..., xn (0) = y0
.
Voorbeeld (mathematische slinger)
De vergelijking van de mathematische slinger wordt gegeven door
00
ψ + sin ψ = 0 ,
0
met beginvoorwaarden ψ(0) = ψ0 en ψ (0) = 0. Het bijbehorende eerste orde stelsel volgt uit
0
x1 = ψ en x2 = ψ :
0
x1 = x 2 ,
0
x2 = − sin x1 ,
met beginvoorwaarden x1 (0) = ψ0 en x2 (0) = 0. Als we de voorwaartse methode van Euler
gebruiken dan geldt:
xj+1
= xj1 + hxj2 ,
1
xj+1
= xj2 − h sin xj1 .
2
6.10
Stabiliteit van numerieke methoden voor teststelsels
De analogie van het scalaire en vectoriële geval strekt zich verder uit tot de numerieke stabiliteitsanalyse. Ook voor stelsels is deze gecentreerd rond lineaire differentiaalvergelijkingen
met constante coëfficiënten, de klasse van teststelsels:
y0 = Ay + g(t), A : (k bij k) constant.
(6.92)
Voor een teststelsel gaat (6.90) over in:
en+1 = (I + hA)en + hτ n+1 ,
(6.93)
immers A is de Jacobiaan van f (t, y) = Ay + g(t). I+hA wordt de versterkingsmatrix van
de methode van Euler Voorwaarts genoemd.
De vectoriële afbreekfoutrelatie (6.93) wordt geanalyseerd door ontkoppeling met behulp van
de transformatie en = Sη n , waarbij S de matrix is met de eigenvectoren van A als kolommen. Introduceren we deze transformatie in (6.93), waarbij e n en en+1 op dezelfde wijze
getransformeerd worden omdat A constant is, dan ontstaat, na vermenigvuldiging met S −1 :
η n+1 = S−1 (I + hA)Sη n + S−1 hτ n+1 = (I + hS−1 AS)η n + hS−1 τ n+1 .
(6.94)
Uit de lineaire algebra is bekend dat de gelijkvormigheidstransformatie met S de matrix A
diagonaliseert: S−1 AS = Λ, waarbij Λ een diagonaalmatrix is met de eigenwaarden van A
op de hoofddiagonaal: Λ= Diag(λ1 , λ2 , . . . , λk ).
Ontbinden we verder nog de afbreekfoutvector τ n+1 langs de eigenvectoren,
τ n+1 =
k
X
αi,n+1 vi = Sαn+1 ,
i=1
94
(6.95)
waarmee S−1 τ n+1 overgaat in S−1 Sαn+1 = αn+1 , dan kan de getransformeerde afbreekfoutrelatie geschreven worden als:
η n+1 = (I + hΛ)η n + hαn+1 .
(6.96)
N.B. De getallen αi,n+1 zijn de componenten van de afbreekfoutvector t.o.v. de basis der
eigenvectoren.
Eenvoudig is in te zien dat geldt:
I + hΛ = Diag(1 + hλ1 , 1 + hλ2 , . . . , 1 + hλk )
(6.97)
en dat componentsgewijs uitschrijven van (6.96) bijgevolg levert:
ηi,n+1 = (1 + hλi )ηi,n + hαi,n+1 (i = 1, 2, . . . , k).
(6.98)
Blijkens deze relatie hangt de i–de component van de getransformeerde afbreekfoutvector op
tijdstip tn+1 alleen via de i–de component af van de getransformeerde afbreekfoutvector op
tijdstip tn , en niet via de andere componenten zoals dat bij de oorspronkelijke afbreekfoutvector en+1 het geval was. Daarom noemen we de afbreekfoutrelatie (6.96) ontkoppeld.
De hierboven gegeven ontkoppelingsprocedure kan alleen worden uitgevoerd indien A diagonalizeerbaar is. Uit de lineaire algebra is bekend dat hiervoor noodzakelijk en voldoende is
dat A een volledig stel van k lineair onafhankelijke eigenvectoren heeft. Deze voorwaarde
garandeert tevens dat de afbreekfoutvector τ n+1 altijd langs de eigenvectoren ontbonden kan
worden. De in deze paragraaf behandelde theorie is naar niet–diagonalizeerbare matrices uit
te breiden maar wordt dan wat gecompliceerder.
De afbreekfoutrelatie (6.98) laat een eenvoudige conclusie toe: indien alle factoren 1 + hλ i
in absolute waarde kleiner dan 1 zijn dempen alle componenten van de getransformeerde
afbreekfoutvector en even goed alle componenten van de oorspronkelijke afbreekfoutvector,
immers beiden zijn verbonden via de van n onafhankelijke matrix S door de relatie e n = Sη n .
Omgekeerd zal exponentiële groei van één of meer van de componenten van η exponentiële
groei van één van de componenten van e tot gevolg hebben. Voor absolute stabiliteit van de
Euler-oplossing van een stelsel moeten we dus eisen:
| 1 + hλi |< 1, i = 1, 2, . . . , k.
(6.99)
Ten opzichte van het scalaire geval komt bij het uitwerken van (6.99) één nieuw aspect naar
voren: de eigenwaarden van de matrix kunnen complex zijn en de versterkingsfactor 1 + hλ i
kan bijgevolg ook complex zijn. De linkerzijde van (6.99) moet dan ook geı̈nterpreteerd
worden als de modulus van het complexe getal 1 + hλ i ; zo opgevat garandeert (6.99) dat alle
componenten van de afbreekfout wegdempen in de loop van het integratieproces, voor zowel
complexe als reële eigenwaarden.
Noemen we λ = µ + iν (deze formulering omvat het reële geval, nl. voor ν = 0) dan geldt:
| 1 + hλ |=| (1 + hµ) + ihν |. Omdat de modulus van een complex getal
p de wortel uit som van
de kwadraten van het reëel en het imaginair deel is, | 1 + hλ |= (1 + hµ)2 + h2 ν 2 , wordt
(6.99) geschreven als
(1 + hµ)2 + h2 ν 2 < 1, i = 1, 2, . . . , n.
(6.100)
95
Aan (6.100) kan niet worden voldaan zodra een eigenwaarde met een positief reëel deel voorkomt, met als gevolg dat de afbreekfout voor elke h onbegrensd gaat groeien, net als bij
scalaire testvergelijkingen met positieve λ.
Alleen stelsels waarvan alle eigenwaarden een negatief reëel deel hebben kunnen stabiel geı̈ntegreerd
worden. Dat zijn de stelsels met dempende oplossingen welke men in de praktijk normaal
gesproken tegen komt.
De bijbehorende stabiliteitsvoorwaarde voor h volgt door naar de vergelijking (1 + hµ i )2 +
i
h2 νi2 = 1 te kijken. De niet–nul wortel van deze kwadratische vergelijking in h (h = µ−2µ
2 +ν 2 )
i
i
scheidt groei en demping van de i–de component van de afbreekfout. De integratie van het
stelsel is stabiel indien h voldoet aan:
h < min
i
2 | µi |
i = 1, 2, . . . , k.
µ2i + νi2
(6.101)
Waarschuwing: Maak niet de fout in geval van een complexe eigenwaarde de ’reële’ stabili2
toe te passen, en vervolgens in deze formule | λ | als de modulus van
teitsvoorwaarde h < |λ|
2
uit (6.99) is alleen geldig voor
λ te interpreteren. De afleiding van de voorwaarde h < |λ|
reële λ, niet voor complexe λ. Voor complexe λ moet je met (6.101) werken
p
Heel inzichtelijk is het de vergelijking | 1 + hλ |= (1 + hµ)2 + h2 ν 2 = 1 af te beelden in het
complexe hλ–vlak (op de horizontale as wordt hµ uitgezet en op de verticale hν); de vergelijking stelt daarin een cirkel voor met middelpunt (-1,0) en straal 1. Voor punten hλ binnen
deze cirkel geldt dat de modulus van de versterkingsfactor kleiner is dan 1 en daarbuiten groter. Het gebied binnen de cirkel wordt dan ook het stabiliteitsgebiedpvan de methode van Euler
genoemd. Het stabiliteitsgebied van Euler ligt (uiteraard, omdat (1 + hµ)2 + h2 ν 2 < 1 alleen mogelijk is voor negatieve µ) geheel links van de imaginaire as maar raakt aan deze as.
Met behulp van het stabiliteitsgebied kan de stabiliteitsvoorwaarde voor h heel aardig grafisch
bepaald worden. Je begint met een eigenwaarde λ i in het hλ–vlak te markeren; je markeert
dus in feite het punt hλi met h=1. De ligging van het gemarkeerde punt geeft aan of de integratie al of niet stabiel is voor h=1. Ligt het gemarkeerde punt buiten het stabiliteitsgebied
dan ga je h inkrimpen tot hλi binnen het stabiliteitsgebied komt te liggen. Inkrimpen van
h vanaf h = 1 betekent grafisch dat je langs een rechte lijn van het gemarkeerde punt naar
de oorsprong loopt. Je kunt in veel gevallen met het blote oog al vrij nauwkeurig vaststellen
voor welke h de lijn de cirkel snijdt. Dit voer je uit voor elke eigenwaarde; de kleinste h die
je nodig had bepaalt de stabiliteitsgrens.
Uiteraard lukt deze operatie alleen als alle eigenwaarden een strikt negatief reëel deel hebben.
Inkrimpen van h kan je nooit binnen het stabiliteitsgebied brengen bij een eigenwaarde met
een reëel deel dat positief of nul is, dit laatste omdat het stabiliteitsgebied aan de imaginaire
as raakt. We besteden speciaal aandacht aan zuiver imaginaire eigenwaarden vanwege het
grote praktisch belang. Differentiaalvergelijkingen met zuiver imaginaire eigenwaarden representeren systemen zonder demping. Zulke systemen resulteren uit meer realistische modellen
nadat dempende mechanismen, zoals wrijving en warmte geleiding, in eerste benadering zijn
verwaarloosd. Het overblijvende ongedempte model is vaak nog zo ingewikkeld dat het numeriek moet worden opgelost.
96
Modified Euler en Runge–Kutta voor stelsels
De Modified Euler en Runge–Kutta methoden worden, net als Euler Voorwaarts, componentsgewijs op dezelfde wijze afgeleid als in het scalaire geval en de resulterende formules zijn, net
als (6.81) dat is voor de voorwaartse methode van Euler, niets anders dan vectoriële copieën
van hun scalaire varianten. Hetzelfde geldt voor hun afbreekfoutrelaties. Voor homogene
teststelsels zijn de afbreekfoutrelaties voor alle drie de methoden te vangen onder de formule:
en+1 = G(hA)en + hτ n+1 ,
(6.102)
GE (hA) = I + hA (Euler Voorwaarts),
(6.103)
met respectievelijk:
h2
A2 (Modified Euler),
(6.104)
2
h2
h3
h4
GRK (hA) = I + hA + A2 + A3 + A4 (Runge–Kutta).
(6.105)
2
6
24
De versterkingsmatrix wordt steeds gevonden door in de versterkingsfactor Q(hλ) van de
betreffende methode voor hλ de matrix hA te substitueren, m.a.w. G(hA) is het matrixpolynoom gedefinieerd door het scalaire polynoom Q(hλ).
GH (hA) = I + hA +
De afbreekfoutrelatie (6.102) wordt voor alle drie methoden op dezelfde manier ontkoppeld.
Door de transformatie en = Sη n gaat (6.102) over in:
η n+1 = S−1 G(hA)S η n + hS−1 τ n+1 .
(6.106)
Elk van de drie versterkingsmatrices kan termsgewijs getransformeerd worden, immers
S−1 (I + hA +
h2 2
h2
A + . . .)S = I + hS−1 AS + S−1 A2 S + . . .
2
2
(6.107)
Verder diagonaliseert de transformatie elke macht van A volgens:
S−1 Ak S = Λk ,
(6.108)
waarbij Λ de diagonaalvorm van A is. De transformatie laat kennelijk de vorm van het matrix
polynoom onveranderd en vervangt alleen het argument hA door hΛ: S −1 G(hA)S = G(hΛ).
Wordt verder de afbreekfoutvector weer langs de eigenvectoren van A ontbonden dan kan de
getransformeerde afbreekfoutrelatie (6.106) worden geschreven als:
η n+1 = G(hΛ)η n + hαn+1 .
(6.109)
Het is niet moeilijk in te zien dat G(hΛ) een diagonaalmatrix is, en wel met de versterkingsfactoren van de respectieve methoden als diagonaalelementen:
G(hΛ) = Diag[Q(hλ1 ), Q(hλ2 ), . . . , Q(hλk )].
(6.110)
Componentsgewijze oplossing van het ontkoppelde stelsel geeft:
ηi,n+1 = Q(hλi )ηi,n + hαi,n+1 (i = 1, 2, . . . , k).
(6.111)
We concluderen dat voor absolute stabiliteit de versterkingsfactor Q(hλ) voor elk van de eigenwaarden van A in absolute waarde kleiner moet zijn dan 1.
97
Het komt er in feite op neer dat we bij de stabiliteitsanalyse voor stelsels gewoon met de scalaire versterkingsfactor kunnen blijven werken en daarin achtereenvolgens alle eigenwaarden
van de matrix A substitueren!
Bij uitwerking van deze voorwaarde tot een voorwaarde voor de stapgrootte, waarbij uiteraard weer rekening moet worden gehouden met de complexiteit van de eigenwaarden, komen
de verschillen tussen de drie methoden naar voren. Evenals bij Euler Voorwaarts wordt met
stabiliteitsgebieden in het complexe hλ–vlak gewerkt. We zullen nu een aantal stabiliteitsgebieden geven. De stabiliteitsgebieden van de expliciete methoden staan in Figuur 6.12 en
die van de impliciete methoden in Figuur 6.13. Een stabiliteitsgebied kan als volgt gebruikt
worden: stel λi is een complexe eigenwaarde, dan moet h zo klein genomen worden dat hλ i
binnen het stabiliteitsgebied valt. Het stabiliteitsgebied van Modified Euler lijkt erg veel
Modified Euler
Euler voorwaarts
−3
−2
−1
2
2
1
1
0
1
−3
−2
−1
0
1
−1
−1
−2
−2
Figuur 6.12: Stabiliteitsgebieden van de expliciete methoden
op dat van Euler. Beide methoden kennen voor een gegeven stelsel differentiaalvergelijkingen
dan ook vrijwel dezelfde stapgrootte beperking. Met name geldt voor beide methoden dat
stelsels waarin zuiver imaginaire eigenwaarden voorkomen voor geen enkele stapgrootte stabiel te integreren zijn, tot uiting komend in onbegrensde foutgroei.
Het stabiliteitsgebied van de RK4 methode staat in Figuur 6.14. We zien dat de methode
voorwaardelijk stabiel is. Tevens merken we op dat de methode ook stabiel kan zijn in het
0
geval van y = Ay met een matrix A, die zuiver imaginaire eigenwaarden heeft. De eerder
door ons behandelde expliciete methoden zijn altijd instabiel voor een dergelijk stelsel.
Stabiliteit van een algemeen stelsel
Voor stelsels van de vorm
0
x = f(t, x) ,
98
x(0) = x0 ,
Trapeziumregel
Euler achterwaarts
−2
−1
2
2
1
1
0
1
2
−2
−1
0
1
−1
−1
−2
−2
2
Figuur 6.13: Stabiliteitsgebied van de impliciete methoden
gelden lokaal dezelfde eigenschappen als voor stelsels van het type (6.92). De rol van A wordt
dan ingenomen door de matrix van partiële afgeleiden van f gegeven door
 ∂f1
∂f1 
∂x1 . . . ∂xk
 ..
..  .
 .
. 
∂fk
∂x1
...
∂fk
∂xk
Voorbeeld (stabiliteit mathematische slinger)
We beschouwen de stabiliteit van de numerieke oplossing van de vergelijking van de mathematische slinger:
00
0
ψ + sin ψ = 0 , ψ(0) = ψ0 en ψ (0) = 0 .
We kunnen dit schrijven als het stelsel
0
x1 =
x2
= f1 (t, x1 , x2 ) ,
0
x2 = − sin x1 = f2 (t, x1 , x2 ) .
De matrix van afgeleiden is nu
Als we aannemen dat − π2 < ψ0 <
π
2
0
1
− cos x1 0
.
dan zijn de eigenwaarden
√
λ1,2 = ±i cos x1 .
Merk op dat de voorwaartse methode van Euler en de methode van Modified Euler instabiel
zijn voor elke h. De Trapeziumregel is stabiel en de achterwaartse methode van Euler leidt tot
99
Runge−Kutta
3
2
1
−4
−3
−2
−1
0
1
−1
−2
−3
Figuur 6.14: Stabiliteitsgebied van de Runge-Kutta methode RK 4
demping van de slingerbeweging. In een volgende paragraaf zullen we een expliciete methode
behandelen, die wel stabiel is voor stelsels met imaginaire eigenwaarden.
De orde van de globale afbreekfout bij Euler, Modified Euler en RK4
De vectoriële afbreekfout wordt voor elk van de drie methoden componentsgewijs afgeleid,
op dezelfde wijze als in het scalaire geval (analoog aan de afleiding van (6.86) voor Euler
Voorwaarts). Dat houdt automatisch in dat elke component van de afbreekfoutvector dezelfde grootte–orde heeft als de scalaire afbreekfout, dus O(h), O(h 2 ) en O(h4 ) voor Euler
Voorwaarts, Modified Euler en RK respectievelijk. Deze grootte-orde verandert niet onder
transformatie met de matrix S omdat deze niet van h afhangt zodat uit
ηi,n+1 = Q(hλi )ηi,n + hαi,n+1 (i = 1, 2, . . . , k)
(6.112)
volgt, op dezelfde wijze als in het scalaire geval, dat de componenten van de globale getransformeerde afbreekfout η(t, h) dezelfde grootte-orde hebben als de lokale afbreekfout. Bij
terugtransformatie met de matrix S blijft diezelfde orde van grootte weer behouden. Voor
kleine maar niet infinitesimale h geldt dus
ei (t, h) ≈ Ki (t)hp (i = 1, 2, . . . , k).
(6.113)
De details van deze beschouwing zijn verder niet interessant omdat de onbekende evenredigheidsconstanten Ki (t) door stapgroottehalvering uit de numerieke resultaten geschat zullen
worden, op dezelfde wijze als in het scalaire geval. Dit leidt tot:
h
1
h
yi (t) − yi (t, ) ≈ p
[yi (t, ) − yi (t, h)] (i = 1, 2, . . . , k),
2
2 −1
2
100
(6.114)
waarbij p de orde van de gebruikte methode is.
De afbreekfout wordt voor iedere component afzonderlijk geschat op basis van de numerieke
data voor die betreffende component. De numerieke data voor de andere componenten spelen
daarbij geen rol.
6.11
Stijve differentiaalvergelijkingen
Stijve differentiaalvergelijkingen (stiff systems) beschrijven problemen waarbij inschakelverschijnselen optreden. Hun oplossing is de som van een snel uitdempend deel, de transient, en
een langzaam variërend deel. De transient is na korte tijd ’uitgewerkt’; daarna blijft alleen
het langzaam variërend deel van de oplossing over, de (quasi-)stationaire oplossing.
Stijfheid kan in verscheidene vormen voorkomen. Wat voor consequenties stijfheid voor de
keuze van een numerieke methode heeft leggen we uit aan de hand van de meest eenvoudige
verschijningsvorm van stijfheid, namelijk die bij scalaire eerste orde niet-homogene testvergelijkingen.
Om de discussie te vergemakkelijken schrijven we testvergelijkingen in de gedaante y 0 =
λ(y − F (t)) + F 0 (t). De oplossing met beginvoorwaarde y(0) = y 0 is y = (y0 − F (0))eλt + F (t),
zoals meteen door substitutie is na te gaan. Deze schrijfwijze is handig omdat je uit de differentiaalvergelijking direct de oplossing kunt aflezen en omgekeerd bij elke keuze van λ en
een particuliere oplossing F (t) de bijbehorende testvergelijking kunt opschrijven. Als λ sterk
negatief is en F (t) voldoende glad hebben we met een stijf probleem te maken. De transient
is (y0 − F (0))eλt en F (t) is de quasi-stationaire oplossing.
Voor een foutbeschouwing recapituleren we de reeksontwikkeling voor de globale afbreekfout
na N stappen:
eN = QN −1 hτ1 + QN −2 hτ2 + QN −2 hτ3 + . . . + QhτN −1 + hτN .
(6.115)
Bij stabiele integratie wordt elke afbreekfout met een factor Q (| Q |< 1) gereduceerd. Deze
exponentiële demping zorgt ervoor dat afbreekfouten die in het begin gemaakt zijn steeds
minder zwaar gaan wegen ten opzichte van de laatst gemaakte afbreekfouten welke nog niet
zo sterk gedempt zijn. Er is sprake van een soort verversingsproces: oude afbreekfouten worden in de loop van het integratieproces steeds minder belangrijk en vervangen door nieuwe.
De globale afbreekfout heeft daardoor de neiging zich aan te passen aan de afbreekfouten
ter plaatse, al zal er vanwege verder terug gemaakte afbreekfouten die nog niet helemaal zijn
weggedempt altijd een zeker ’naijleffect’ zijn; van dit ’naijleffect merk je minder naarmate de
dempingsfactor Q dichter bij nul ligt.
Het waterafvoerprobleem demonstreert dit foutgedrag heel goed: in het asymptotische gebied
wordt de oplossing glad (heel kleine afgeleiden) zodat elke methode daar kleine afbreekfouten
maakt (voor Euler Voorwaarts bijvoorbeeld is de afbreekfout evenredig met de tweede afgeleide). Daardoor gaat de globale afbreekfout, na een maximum in het middengebied, in het
asymptotische gebied dalen en op den duur zelfs volledig wegdempen omdat de afbreekfouten
naar nul gaan.
Stijve problemen vertonen een soortgelijke karakteristiek. In het gebied van de transient maak
je relatief grote afbreekfouten maar daarna worden ze veel kleiner vanwege de gladheid van de
101
quasi-stationaire oplossing. De globale afbreekfout die zich aan deze afbreekfouten aanpast
wordt kleiner na passage van het transient gebied, en kan zelfs onnodig klein zijn als je de
stapgrootte klein in verhouding tot de gladheid van F (t) kiest. Dat is natuurlijk inefficiënt
vooral als je de quasi-stationaire oplossing over langere tijdsintervallen wilt volgen.
Als je in zo’n geval de stapgrootte wilt opvoeren mag je natuurlijk de stabiliteitsgrens niet
overschrijden want dan worden de afbreekfouten niet meer gedempt. Bij de integratiemethoA
, met A = 2 voor Euler Voorwaarts
den die tot nu toe aan de orde zijn gekomen is deze |λ|
en tweede orde RK en 2.8 voor vierde orde RK. Dit is tevens ongeveer de afmeting van het
A
inschakelgebied, zoals blijkt uit het feit dat de e-macht e λt in een tijdsinterval |λ|
met een
factor e−A gereduceerd wordt. Op grond van stabiliteitseisen is de maximale stapgrootte bij
de tot nu toe behandelde methoden dus beperkt tot ruwweg de afmeting van het inschakelgebied.
Om de gedachten verder te bepalen kun je je voorstellen dat een reeks van testproblemen wordt
geapproximeerd, met steeds dezelfde F (t), daarbij λ steeds meer negatief kiezend en telkens
de maximale stapgrootte gebruikend. De nauwkeurigheid waarmee de quasi-stationaire oplossing F (t) bepaald wordt zal (noodzakelijkerwijs) toenemen met | λ | omdat de maximale
stapgrootte afneemt met | λ |. Vanaf zekere λ wordt die nauwkeurigheid groter dan een bepaalde tolerantie die verlangd wordt. De stabiliteitseis wordt dan meer beperkend voor de
stapgrootte dan de nauwkeurigheidseis. Dit is de essentie van het verschijnsel stijfheid.
Uit voorgaande beschrijving maakt duidelijk dat stijfheid niet door λ alleen wordt bepaald
maar dat het eerder het eerder gaat om de relatie tussen λ en de gladheid van F (t): naarmate
F (t) gladder is treedt stijfheid vanaf kleinere | λ | op. Het is in feite de verhouding tussen de
tijdschalen van de transient en de quasi-stationaire oplossing die bepaalt of een testvergelijking stijf genoemd kan worden. Verder is stijfheid een enigszins relatief begrip want de eisen
die men aan de nauwkeurigheid van de quasi-stationaire oplossing stelt bepalen mede of een
testvergelijking met gegeven λ en F (t) al of niet stijf genoemd moet worden. Bovendien hangt
stijfheid samen met de gebruikte integratiemethode. De maximale stapgrootte is ongeveer
dezelfde voor Euler Voorwaarts en RK4 maar RK4 zal de quasi-stationaire oplossing bij deze
stapgrootte veel nauwkeuriger approximeren dan Euler Voorwaarts en dus voor een gegeven
testvergelijking eerder tot de qualificatie stijfheid aanleiding geven.
Problemen die stijfheid vertonen m.b.t. een van de tot nu toe behandelde methoden kunnen
het beste geı̈ntegreerd worden met een methode met een stabiliteitsgebied dat zodanig ruim
is dat daarbinnen de stapgrootte kan worden opgevoerd tot een waarde waarbij de quasistationaire oplossing nog met een redelijke nauwkeurigheid wordt benaderd. Dit brengt ons
bij de impliciete methoden (zie hieronder).
In de praktijk hebben we meestal met stijfheid bij stelsels te maken (vandaar de naam stiff
systems). Daar heb je een vectoriële variant van stijfheid, namelijk als de particuliere oplossing glad is (normaal gesproken is dat het geval als het rechterlid glad is) en alle eigenwaarden
sterk negatief zijn. Alle transients dempen dan snel weg maar blijven wel de stabiliteitsvoorwaarde bepalen en heb je precies hetzelfde probleem als bij de scalaire testvergelijkingen.
Wellicht komt stijfheid bij stelsels het meest voor in de volgende vorm. Bijvoorbeeld, stel
voor een 2 × 2 homogene testvergelijking is één eigenwaarde -1 en de andere -10000. De op102
lossing is van het type c1 ξ (1) e−t + c2 ξ (2) e−10000t , waarbij ξ (1) en ξ (2) de eigenvectoren van de
matrix zijn en de integratieconstanten c 1 en c2 door de begincondities van de twee variabelen
bepaald worden. De term met e−10000t speelt nu de rol van transient; deze term verdwijnt
veel eerder dan de term met e−t . Deze laatste is glad t.o.v. de transient en speelt de rol
van quasi-stationaire oplossing. De transient blijft echter over het hele integratiegebied de
stabiliteitsvoorwaarde (h < 2/10000) bepalen waardoor verhinderd wordt dat de stapgrootte
aangepast kan worden aan het relatief langzaam varierende (quasi-)stationaire deel met e −t .
De situatie is dezelfde als bij een stijve scalaire testvergelijking, al heeft stijfheid hier niet met
de particuliere oplossing te maken maar met de verhouding tussen de (absolute) grootte van
de eigenwaarden.
Bij stelsels met complexe eigenwaarden heb je een vergelijkbare situatie als de reële delen van
de eigenwaarden sterk in grootte verschillen.
Voorgaande overwegingen blijven van kracht voor niet-homogene stelsels, mits de particuliere
oplossing min of meer dezelfde gladheid heeft als het langzaam varierende deel van de homogene oplossing.
Impliciete methoden
Eén impliciete methode is al geı̈ntroduceerd bij de afleiding van de Modified Euler. Deze is
gebaseerd op de Trapeziumregel:
wn+1 = wn +
h
[f (tn , wn ) + f (tn+1 , wn+1 )].
2
De impliciet voorkomende wn+1 in de rechterzijde kan voorspeld worden teneinde te voorkomen dat bij elke tijdstap een (in het algemeen niet-lineaire) vergelijking moet worden opgelost
om wn+1 te vinden. Dat leidt tot de Modified Euler. Doen we de concessie de vergelijking wel
op te lossen dan krijgen we daarvoor terug dat de aldus gedefinieerde methode, die onder de
naam Trapezium- of Crank-Nicolson (CN) methode bekend staat, onbeperkt stabiel is. Dat
tonen we aan aan de hand van teststelsels. Voor een teststelsel y 0 = Ay + g(t). wordt de
methode:
h
wn+1 = wn + [Awn + g(tn ) + Awn+1 + g(tn+1 ))].
2
Brengen we alle termen met wn+1 naar links:
(I −
h
h
h
A)wn+1 = (I + A)wn + [g(tn ) + g(tn+1 )].
2
2
2
Bij elke tijdstap moet het bovenstaande stelsel algebraı̈sche vergelijkingen worden opgelost;
dat zal, ook al is het een lineair stelsel, voor grotere matrices numeriek moeten gebeuren. Dat
is de veer die we moeten laten.
Om de versterkingsfactor van de Trapezium methode te vinden kunnen we ons tot homogene
teststelsels beperken. Ontkoppeling gebeurt op dezelfde wijze als voorheen (zie week 6 text)
door transformatie van de afbreekfout met de matrix S der eigenvectoren. Dit leidt zoals men
zelf kan nagaan tot het ontkoppelde stelsel
(I −
h
h
Λ)η n+1 = (I + Λ)η n .
2
2
103
Componentsgewijs oplossen geeft:
ηi,n+1 =
1 + h2 λi
1 − h2 λi
ηi,n .
De versterkingsfactor van de Trapezium methode is dus Q(hλ) =
| Q(h(µ + iν)) | =
=
1+ h2 λ
.
1− h2 λ
Met λ = µ + iν geldt
| (1 + h2 µ) + h2 νi |
| (1 − h2 µ) − h2 νi |
q
(1 + h2 µ)2 + ( h2 ν)2
q
.
(1 − h2 µ)2 + ( h2 ν)2
Voor eigenwaarden met negatief reëel deel (µ < 0) is de teller kleiner dan de noemer voor elke
stapgrootte en de methode is stabiel voor elke stapgrootte, onbeperkt stabiel dus.
Een tweede veel gebruikte onbeperkt stabiele methode
is Euler Achterwaarts. Deze kan
R tn+1
weer uit de integraalformulering worden afgeleid door tn f (t, y(t))dt te approximeren door
hf (tn+1 , y(tn+1 )), in plaats van door hf (tn , y(tn )) wat tot Euler Voorwaarts leidt. Er volgt
wn+1 = wn + hf (tn+1 , wn+1 ).
Voor een teststelsel wordt dit
wn+1 = wn + h(Awn+1 + g(tn+1 )),
hetgeen herschreven kan worden als:
(I − hA)wn+1 = wn + hg(tn+1 ).
Voor homogene teststelsels resulteert ontkoppeling in de scalaire vergelijking
ηi,n+1 = (1 − hλi )−1 ηi,n
voor de i-de component. Stabiele integratie wordt verkregen op voorwaarde dat de moduli van
alle versterkingsfactoren (1−hλi )−1 kleiner dan 1 zijn. Er geldt | 1−hλi |2 =| 1−hµ−hνi |2 =
(1 − hµ)2 + (hν)2 > 1 voor eigenwaarden met negatief reëel deel µ. Dat geldt voor elke h en
dus is | (1 − hλi )−1 |=| 1 − hλi |−1 voor elke stapgrootte kleiner dan 1 waarmee aangetoond
is dat Euler Impliciet onbeperkt stabiel is.
Beide hier behandelde methoden hebben hun onbeperkte stabiliteit gemeen maar vertonen
bij toepassing aanzienlijke verschil in gedrag zoals het volgende experiment laat zien. Geapproximeerd is de scalaire testvergelijking y 0 = −100(y − cos t) − sin t met Euler Achterwaarts
en Trapezium, in beide gevallen met stapgrootte 0.2. De afmeting van het transient gebied
is van de orde 0.01. Met de eerste stap stap je dus gewoon over dit gebied heen. Dat is niet
erg als je niet in het preciese gedrag van de transient bent geı̈nteresseerd hoewel de eerste
afbreekfout erg groot zal zijn. Deze zal weggedempt moeten worden. Het gemak waarmee
dit gebeurt verschilt erg voor beide methoden zoals te zien is in Figuur 6.15 en 6.16. In
deze figuren is de quasi-stationaire oplossing cos t weergegeven vanaf t = 0 zodat je goed het
104
effect van de genegeerde transient op de afbreekfout kunt zien. Men ziet de zeer gunstige
resultaten van Euler Achterwaarts: reeds na 4 stappen zitten we vrijwel op de exacte oplossingskromme. Met de Trapezium methode duurt het een stuk langer eer de grote beginfouten
zijn weggedempt. Probeer zelf eens dit verschil te verklaren aan de hand van figuur 3 waar
de versterkingsfactoren van Euler Achterwaarts en de Trapezium methode als functie van hλ
zijn uitgezet.
2
1.5
1
0.5
0
−0.5
−1
−1.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figuur 6.15: Approximatie van y 0 = −100(y − cos t) − sin t met de Trapezium methode; h=0.2
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figuur 6.16: Approximatie van y 0 = −100(y − cos t) − sin t met Euler Achterwaarts; h=0.2
105
Superstabiel
Een numerieke methode heet superstabiel als
lim
hλ→−∞
|Q(hλ)| < 1 .
Uit Figuur 6.17 blijkt dat Euler achterwaarts superstabiel is, terwijl voor de Trapeziumregel
geldt:
lim |Q(hλ)| = 1 .
hλ→−∞
Dit betekent dat beginverstoringen in de snelle componenten niet of zeer traag uitdempen
Euler Achterwaarts
Trapeziumregel
1
hλ
−50
−40
−30
−20
−10
0
−1
Figuur 6.17: De versterkingsfactoren van Euler Achterwaarts en de Trapezium methode als
functie van hλ
bij het gebruik van de Trapeziumregel.
Discussie
In deze paragraaf hebben we ons beperkt tot een eenvoudig stelsel differentiaalvergelijkingen.
Het zal duidelijk zijn dat ook bij ingewikkelder stelsels sprake van stijfheid kan zijn. In dergelijke gevallen zijn impliciete methoden aan te raden. Bij toepassing van impliciete methoden
moet in elke stap een stelsel vergelijkingen opgelost worden. Meestal is dit stelsel niet-lineair.
Hoewel er zeer goede numerieke methoden beschikbaar zijn voor het oplossen van stelsels
vergelijkingen, kunnen de kosten toch sterk oplopen. Het is daarom vaak een kwestie van
wikken en wegen, waarbij expliciete methoden niet op voorhand zijn uit te sluiten.
6.12
Meerstaps methoden
∗
De methoden, die we tot nu toe behandeld hebben, worden eenstaps methoden genoemd,
omdat de benadering in tj+1 alleen afhangt van informatie van het vorige tijdstip t j . Hoewel
sommige methoden gebruik maken van functie evaluaties in tussengelegen punten, wordt
106
deze informatie niet bewaard om te gebruiken in toekomstige benaderingen. Alle informatie
gebruikt door deze methoden is verkregen binnen het interval waarover de oplossing benaderd
wordt.
Omdat de benaderende oplossing beschikbaar is in de roosterpunten t 0 , t1 , ..., tj voordat de
benadering in tj+1 bepaald wordt, lijkt het redelijk om methoden te ontwikkelen, die deze
informatie gebruiken. Deze methoden worden meerstaps methoden genoemd.
Adams-Bashforth methode
Voor de afleiding van de Adams-Bashforth methode gaan we uit van de Trapeziumregel
uj+1 = uj +
h
[f (tj , uj ) + f (tj+1 , uj+1 )]
2
(6.116)
We kunnen deze methode expliciet maken door f (t j+1 , uj+1 ) te extrapoleren met behulp van
f (tj−1 , uj−1 ) en f (tj , uj ). Het lineaire interpolatiepolynoom wordt gegeven door
l(t) = f (tj , uj ) + (t − tj )
f (tj , uj ) − f (tj−1 , uj−1 )
.
h
Als we nu f (tj+1 , uj+1 ) in (6.116) vervangen door l(tj+1 ), dan krijgen we de Adams-Bashforth
methode
1
3
(6.117)
uj+1 = uj + hf (tj , uj ) − hf (tj−1 , uj−1 ) .
2
2
Merk op dat per tijdstap slechts één functie evaluatie nodig is.
Stabiliteit
0
We maken gebruik van de testvergelijking y = λy. Voor de verstoring ε geldt de recursie
1
3
εj+1 = (1 + hλ)εj − hλεj−1 .
2
2
(6.118)
Dit is een differentievergelijking met constante coefficiënten. Deze kunnen we oplossen door
te substitueren εj = cz j . De karakteristieke vergelijking wordt
3
1
z 2 − (1 + hλ)z + hλ = 0 ,
2
2
met als oplossingen
z1 =
z2 =
√
1 + 32 hλ + D
,
2 √
1 + 32 hλ − D
,
2
(6.119)
(6.120)
waarbij D = 1 + hλ + 49 (hλ)2 . De algemene oplossing van (6.118) is nu
εj = c1 z1j + c2 z2j .
De constanten c1 en c2 volgen uit de beginvoorwaarden. Merk op dat de Adams-Bashforth
methode stabiel is wanneer
|z1,2 (hλ)| ≤ 1 .
(6.121)
107
z1
z2
1
−1
−0.5
0
−1
Figuur 6.18: De versterkingsfactoren z 1 en z2 van de Adams-Bashforth methode
De wortels z1 en z2 zijn gegeven in Figuur 6.18. Merk op dat aan (6.121) voldaan is voor
1
. De methode is dus voorwaardelijk stabiel.
h ≤ |λ|
Afbreekfout
Met behulp van Taylorontwikkeling volgt uit (6.119) en (6.121):
1
1
z1 (hλ) = 1 + hλ + (hλ)2 − (hλ)3 + O(h4 ) ,
2
4
1
2
z2 (hλ) =
hλ + O(h ) .
2
De exacte oplossing van de testvergelijking is
1
1
ehλ = 1 + hλ + (hλ)2 + (hλ)3 + O(h4 ) .
2
6
hλ
|
5 2
≈ 12
h |λ|3 .
Merk op dat |z1 (hλ)−e
h
Dus z1 (hλ) is een goede benadering van ehλ en wordt daarom de ’principal root’ genoemd.
Daarentegen heet z2 (hλ) de ’spurious root’. Deze heeft niets met de differentiaalvergelijking
te maken, maar is een gevolg van de gekozen numerieke methode.
Vergelijking met de methode van Modified Euler
Wat betreft stabiliteit moet de stapgrootte bij Adams-Bashforth 2 maal zo klein genomen
worden dan bij de methode van Modified Euler. Omdat Modified Euler per tijdstap 2 maal
zoveel werk kost zijn de methoden op dit punt vergelijkbaar.
Wat betreft nauwkeurigheid kiezen we de stapgrootte zo dat de afbreekfout kleiner is dan eps.
108
Voor Adams-Bashforth geldt dan
h=
s
12eps
5|λ|3
h=
s
6eps
.
|λ|3
en voor Modified Euler
We kunnen met dezelfde hoeveelheid werk 2 stappen Adams-Bashforth doen ten opzichte van
1 stap Modified Euler. Hiermee wordt het interval waarover we de oplossing benaderen bij
Adams-Bashforth
s
96eps
,
10|λ|3
en bij Modified Euler
s
60eps
,
10|λ|3
zodat Adams-Bashforth minder werk kost dan Modified Euler.
Discussie
Meerstaps methoden zijn minder populair dan Runge-Kutta methoden. Bij meerstaps methoden treden opstartproblemen op, omdat de oplossing op meerdere tijdsniveaus bekend dient
te zijn. Verder is de controle van de ’spurious roots’ een moeilijke zaak.
6.13
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- eenstapsmethoden (Euler, Modified Euler, Trapezium)
- impliciete, expliciete methoden
- versterkingsfactor
- afbreekfout, consistentie
- stabiliteit, convergentie
- stelsels eerste orde beginwaarde problemen
- hogere orde beginwaarde problemen
- stabiliteit stelsels, stabiliteitsgebied
- stijve stelsels, superstabiel
- Runge-Kutta methoden
- meerstapsmethode (Adams-Bashforth)
109
6.14
Opgaven
1. Gebruik de Modified Euler methode om de oplossing te benaderen van het volgende
beginwaardeprobleem: y 0 = 1 + (t − y)2 , 2 ≤ t ≤ 3, y(2) = 1, met h = 0.5. De exacte
1
oplossing wordt gegeven door y(t) = t+ 1−t
. Bepaal de fout in de numerieke benadering.
2. Laat zien dat de lokale afbreekfout bij de midpuntregel O(h 2 ) is. De midpuntregel wordt
gegeven door:
h
h
wi+1 = wi + hf (ti + , wi + f (ti , wi ))
2
2
3. Bepaal de versterkingsfactor voor de Trapeziumregel. Schat hiermee de afbreekfout
voor de testvergelijking. Laat zien dat de Trapeziumregel stabiel is voor alle h > 0, als
λ ≤0.
4. Gegeven het niet-lineaire beginwaardeprobleem: y 0 = 1 + (t − y)2 . Geef de stabiliteitsvoorwaarde voor de methode van Modified Euler in het punt t = 2 en y = 1.
5. Gegeven is de numerieke integratiemethode:
u∗ = un + βhf (tn , un ), un+1 = u∗ + (1 − β)hf (tn + βh, u∗ )
(a) Laat zien, dat de afbreekfout O(h) is voor elke waarde van β.
(b) Bepaal de versterkingsfactor van deze methode.
(c) Beschouw de niet-lineaire differentiaalvergelijking: y 0 = 2y − 4y 2 . Bepaal de maximale stapgrootte zodanig, dat de methode (met β = 21 ) stabiel is in de buurt van
y = 12 .
6. Voer een stap uit met de voorwaartse Euler methode met stapgrootte h = 0.1 voor het
stelsel:
u01 = −4u1 − 2u2 + et ,
u02 = 3u1 + u2 ,
met beginvoorwaarde u1 (0) = 0 en u2 (0) = −1.
7. Doe één stap met voorwaarts Euler voor de vergelijking y 00 − 2y 0 + y = tet − t met
y(0) = y 0 (0) = 0 met stapgrootte h = 0.1. Bepaal de fout met de echte oplossing:
y(t) = 61 t3 et − tet + 2et − t − 2.
8. Stel we hebben de vergelijking voor de mathematische slinger: φ 00 + Lg φ = 0 met φ(0) =
φ0 (0) = 0. Schrijf dit als een stelsel. Is dit stelsel stabiel?
9. Gegeven het stelsel y10 = 1195y1 − 1995y2 , y1 (0) = 2, y20 = 1197y1 − 1997y2 , y2 (0) =
−2. De exacte oplossing wordt gegeven door y 1 (t) = 10e−2t − 8e−800t , y2 (t) = 6e−2t −
8e−800t .
(a) Doe één stap met E.V. en E.A. met h = 0.1 en vergelijk met het exacte antwoord.
(b) Bepaal voor welke stapgrootte E.V. stabiel is.
(c) Doe één stap met E.V. en E.A. met h = 0.0001 en vergelijk met het exacte antwoord. Conclusie?
110
10. Gegeven de differentiaalvergelijking y 0 = y − t2 + 1 en y(0) = 21 . Benader y(0.1) =
0.6574145 met E.V. met h = 0.025 en de RK methode met h = 0.1. Welke methode
verdient de voorkeur?
111
Hoofdstuk 7
De eindige differentie methode voor
randwaarde problemen
7.1
Inleiding
Bij het simuleren van praktische problemen wordt vaak gebruik gemaakt van randwaarde problemen. Een eendimensionaal randwaarde probleem is een differentiaalvergeleijking op een
begrensd gebied, waarbij de functie en/of zijn afgeleiden gegeven zijn in beide randpunten.
Stationair warmte probleem
Als voorbeeld nemen we de temperatuurverdeling in een staaf (Figuur 7.1). De temperatuur
0
x
x+∆ x
L
Figuur 7.1: De vorm van de staaf
van de staaf geven we aan met T (x) (◦ K). We nemen aan dat de temperatuur gegeven is in
beide uiteinden: T (0) = T0 en T (L) = TL . Verder wordt er in de staaf warmte geproduceerd. Deze warmteproductie geven we aan met Q(x) (J/m 3 s). Bij dit voorbeeld zijn we
geı̈nteresseerd in de temperatuur na lange tijd. Dit betekend dat de temperatuur stationair
geworden is en dus alleen een functie is van x. Voor het afleiden van de differentiaalvergelijking maken we gebruik van de wet van behoud van energie toegepast op het controle volume
tussen x en x + ∆x (zie Figuur 7.1).
Door geleiding is er warmtetransport door de zijvlakken op x en x + ∆x. Volgens de wet van
Fourier wordt dit warmtetransport per oppervlak en per seconde gegeven door:
−λ
dT
,
dx
112
waarbij λ (J/msK) de warmtegeleidingscoëfficiënt genoemd wordt. De warmtebalans is nu:
−λA
dT
dT
(x) + λA (x + ∆x) + AQ(x)∆x = 0 .
dx
dx
Delen door A∆x geeft
(x + ∆x) − dT
dx (x)
+ Q(x) = 0 .
∆x
Na het nemen van de limiet ∆x → 0 krijgen we het volgende randwaarde probleem:
dT
−λ dx
d2 T
(x) = −Q(x) 0 < x < L ,
dx2
T (0) = T0 en T (L) = TL .
−λ
Dit voorbeeld zal vaak gebruikt worden ter illustratie van de eindige differentie methode.
In een aantal toepassingen is de warmtestroom aan één van de uiteinden gegeven in plaats
van de temperatuur. Voor x = L leidt dit via de wet van Fourier tot de randvoorwaarde
λA
dT
(L) = AqL ,
dx
waarbij de warmtestroom qL (J/m2 s) gegeven is.
7.2
De eindige differentie methode
De algemene vorm van een randwaarde probleem van de tweede orde in één dimensie wordt
gegeven door
0 0
0
−(p(x)y ) + r(x)y + q(x)y = f (x) , 0 < x < L ,
met de randvoorwaarden
0
a0 y(0) + b0 y (0) = c0
0
en
aL y(L) + bL y (L) = cL .
Hierbij is aangenomen dat p(x) > 0 en q(x) ≥ 0 voor alle x ∈ [0, L]. Deze problemen
worden Sturm-Liouville problemen genoemd. Merk op dat het gegeven randwaarde probleem
meerdere oplossingen heeft als a0 = aL = 0. Voor de randvoorwaarden worden de volgende
aanduidingen gebruikt (we beperken ons tot x = 0):
Dirichlet randvoorwaarde:
a0 y(0) = c0
0
Neumann randvoorwaarde:
b0 y (0) = c0
Robbins randvoorwaarde:
a0 6= 0
en
dus b0 = 0 ,
dus a0 = 0 ,
b0 6= 0 .
De vergelijking
We beschrijven de eindige differentie methode voor het probleem:
00
−y + q(x)y = f (x) ,
0<x<1,
y(0) = 0 en y(1) = 0 .
Discretisatie
We delen het interval [0, 1] op in n + 1 gelijke delen met lengte h =
113
1
n+1 .
De knooppunten zijn
xj = jh voor j = 0, ..., n + 1. de numerieke benadering van y j = y(xj ) geven we aan met wj .
Om de numerieke oplossing te bepalen wordt gebruik gemaakt van de differentiaalvergelijking
in het punt xj :
00
−yj + qj yj = fj 1 ≤ j ≤ n .
(7.1)
De tweede afgeleide in (7.1) benaderen we met een centrale differentie zodat geldt:
−
wj−1 − 2wj + wj+1
+ q j wj = f j
h2
1≤j≤n.
(7.2)
De waarde w0 en wn+1 in de randpunten volgen uit de randvoorwaarden
w0 = 0
en
wn+1 = 0 .
(7.3)
Het stelsel vergelijkingen
Het differentieschema (7.2) en (7.3) geeft n+2 vergelijkingen voor de onbekenden w 0 , ..., wn+1 .
Als we w0 en wn+1 elimineren uit (7.2) dan krijgen we het stelsel
Aw = f ,
(7.4)
met A = K + M , waarbij K en M gegeven worden door:
2 −1
∅

2 −1
1  −1
K= 2
−1
2 −1
h 
..
.. ..
.
.
.
∅






en


w1



De vektoren w en f zijn: w =  ...  en f = 
wn

7.3

∅
q1


M =


..

.
∅
..
.
qn−1

f1
.. .
. 


 .


fn
Herhaling van enkele lineaire algebra begrippen
In deze paragraaf worden een aantal begrippen uit de lineaire algebra opgesomd, die gebruikt
worden bij het bestuderen van het verschil tussen de numerieke u j en de exakte oplossing yj
van het randwaarde probleem.
Conditie
De geschaalde Euclidische norm van een vector is gedefinieerd als:
v
u n
u1 X
x2i .
kxk = t
n
i=1
De natuurlijke, of afgeleide, matrix norm, die gerelateerd is aan de vectornorm k.k wordt
gedefineerd als:
kAk = max kAxk.
kxk=1
We maken veel gebruik van de ongelijkheid kAxk ≤ kAk kxk.
114
Stel dat we geı̈nteresserd zijn in de vektor x, die voldoet aan Ax = b. Als het rechterlid b
verstoord wordt met een fout ∆b, dan zal tengevolge daarvan in de oplossing x een fout ∆x
optreden, zodat we in feite oplossen
A(x + ∆x) = b + ∆b .
Voor de relatieve fout geldt dan
k∆bk
k∆xk
≤ kAk kA−1 k
.
kxk
kbk
De grootheid K(A) = kAk kA−1 k wordt het conditiegetal genoemd. Voor een symmetrische
matrix met eigenwaarden λ1 , ..., λn geldt
kAk = λmax = max |λj |
1≤j≤n
en kA−1 k =
1
λmin
=
1
,
min |λj |
1≤j≤n
zodat K(A) = λλmax
. Voor een schatting van het conditiegetal van een symmetrische matrix,
min
is het van belang om de grootste en de kleinste eigenwaarden te kennen. Een handige stelling
hierbij is:
De stelling van Gershgorin
De eigenwaarden van de matrix A liggen in de vereniging van de cirkels
|z − aii | ≤
n
X
j6=i
j=1
|aij |
waarbij
z∈C.
Bewijs
Stel Avk = λk vk . Laat nu vki de in de modulus grootste component zijn van v k . Dan geldt:
(aii − λk )vki = −
zodat
|aii − λk | ≤
n
X
j6=i
j=1
n
X
aij vkj
j6=i
j=1
n
|aij |
|vkj | X
≤
|aij |,
|vki |
j6=i
j=1
waarmee de stelling bewezen is.
7.4
Consistentie, stabiliteit en convergentie
We willen laten zien dat het verschil tussen de numerieke en de exakte oplossing naar nul
gaat als de stapgrootte h naar nul gaat. Om dit aan te tonen zullen we een aantal begrippen
definiëren.
Afbreekfout
De afbreekfout ε van het schema Aw = f is gedefinieerd als
εj = (Ay − Aw)j = (Ay − f )j ,
115
j = 1, ..., n ,
waarbij de componenten van y de exacte oplossing, gegeven worden door y j = y(xj ).
−y
+2y −y
Voor het stelsel gegeven door (7.4) j−1 h2 j j+1 + qj yj = fj geldt met de foutschatting voor
de centrale differentie
00
εj = −yj + qj yj − fj + O(h2 ) .
Gecombineerd met (7.1) volgt dan:
εj = O(h2 ) .
(7.5)
De orde van de afbreekfout is gelijk aan 2 voor dit schema.
Consistentie
Een eindige differentie schema heet consistent als
lim kεεk = 0 .
h→0
Uit (7.5) volgt kεεk = O(h2 ) zodat stelsel (7.4) consistent is.
Stabiliteit
Een eindige differentie schema heet stabiel, als er een constante M bestaat, die niet afhangt
van h, zodanig dat
kA−1 k ≤ M , voor h → 0 .
Merk op dat stabiliteit impliceert dat het stelsel een eenduidige oplossing heeft. De matrix A
uit (7.4) is symmetrisch. Dit betekent dat de eigenwaarden reëel zijn en
kA−1 k =
1
.
λmin
Als 0 < qmin ≤ q(x) ≤ qmax dan volgt uit de stelling van Gershgorin
qmin ≤ λj ≤ qmax +
Hieruit volgt kA−1 k ≤
1
qmin
4
h2
voor
j = 1, ..., n .
zodat het schema stabiel is.
Als q(x) = 0 voor alle x ∈ [0, 1], dan hebben we niets aan de stelling van Gershgorin voor
het schatten van de kleinste eigenwaarde (waarom niet?). Zonder bewijs merken we op dat
de eigenwaarden van A = K gegeven worden door
λj = (2 − 2 cos(n − j)hπ)/h2 ,
j = 1, ..., n .
Dit geeft
hπ
)/h2 ≈ π 2 .
2
Dus ook voor q ≡ 0 geldt dat het schema stabiel is. Het conditiegetal van A is
λmin = (2 − 2 cos hπ)/h2 = (4 sin2
4
.
(πh)2
Convergentie
Een schema heet convergent als voor de globale fout y − w geldt
lim ky − wk = 0 .
h→0
In de volgende stelling wordt er een verband aangegeven tussen de begrippen: consistentie,
stabiliteit en convergentie.
116
Stelling 7.4.1 Als een schema stabiel en consistent is, dan is het schema convergent.
Bewijs:
De globale fout y − w voldoet aan het stelsel
A(y − w) = Ay − Aw = f + ε − f = ε ,
waar uit volgt: y − w = A−1 ε. Als we hiervan de norm nemen dan geldt:
ky − wk ≤ kA−1 k kεεk .
Uit de stabiliteit en de consistentie volgt nu direct
lim ky − wk = 0 .
h→0
Merk op dat consistentie alleen, niet voldoende is voor convergentie.
Voorbeeld (convergentie)
Stel het warmtetransport in een staaf wordt beschreven door het randwaarde probleem:
00
−y = 25e5x ,
0<x<1,
y(0) = y(1) = 0 .
Omdat er een warmtebron (25e5x ) is, verwachten we dat de temperatuur y positief is. In
Figuur 7.2 staat de grafiek van y en van de numerieke oplossingen bepaald met de stapgroot1
. Er is een snelle convergentie van de numerieke oplossing naar de exacte
ten: h = 41 , 18 en 16
1
oplossing. De behaalde nauwkeurigheid bij stapgrootte h = 16
is in een praktische situatie
waarschijnlijk voldoende.
Als een variatie op deze toepassing nemen we
00
−y + 9y = 25e5x ,
0<x<1,
y(0) = y(1) = 0 .
De term 9y beschrijft afgifte van warmte aan de omgeving, die evenredig is met de temperatuur. De exacte en numerieke oplossingen staan in Figuur 7.3. Merk op dat de maximale
temperatuur inderdaad lager is dan in het eerste voorbeeld (Figuur 7.2). Verder is er weinig
verschil tussen het convergentiegedrag van beide problemen.
7.5
De conditie van de discretisatie matrix
Voor q(x) = 0, 0 ≤ x ≤ 1 hebben we gezien dat
λmin ' π 2
en
λmax '
4
.
h2
Dit betekent dat K(A) = π24h2 . Als h naar nul gaat, dan gaat de conditie van A naar
oneindig. Dit ziet er niet zo goed uit. In de praktijk valt het gedrag van de fout vaak mee.
117
80
Exact
h=0.25
h=0.125
h=0.0625
70
60
y
50
40
30
20
10
0
0
0.1
0.2
0.3
0.4
0.5
x
0.6
0.7
0.8
0.9
1
Figuur 7.2: De exacte en numerieke oplossingen van het warmteprobleem
Bij de afleiding van de relatieve fout is uitgegaan van een pessimistische situatie. Voor een
realistischer schatting kunnen we de volgende analyse gebruiken. De numerieke oplossing
voldoet aan
Aw = f .
Bij een verstoring ∆f geldt
A(w + ∆w) = f + ∆f ,
zodat ∆w voldoet aan A∆w = ∆f. Hiermee leiden we af
k∆wk = kA−1 ∆fk ≤
1
λmin
k∆f k .
Voor de relatieve fout volgt dan
k∆wk
1 kf k k∆f k
≤
·
.
kwk
λmin kwk kf k
1 kf k
De rol van K(A) is hierbij overgenomen door het ”effectieve” conditiegetal λmin
kw k . We
kf k
weten dat λmin ' π 2 en in veel toepassingen is kwk begrensd als h naar nul gaat, zodat het
”effectieve” conditiegetal wel begrensd is.
7.6
Neumann randvoorwaarde
Tot nu toe hebben we randwaarde problemen bekeken met twee Dirichlet randvoorwaarden.
Hoe moeten we een Neumann randvoorwaarde verwerken? We zullen deze vraag beantworden
118
45
Exact
h=0.25
h=0.125
h=0.0625
40
35
30
y
25
20
15
10
5
0
0
0.1
0.2
0.3
0.4
0.5
x
0.6
0.7
0.8
0.9
1
Figuur 7.3: De exacte en numerieke oplossingen van het warmteprobleem met afkoeling
voor de voorwaarde
dy
(1) = 0 .
dx
(7.6)
Discretisatie
We introduceren een virtueel punt x n+2 = (n + 2)h = 1 + h. Voor j = n + 1 geldt
−wn + 2wn+1 − wn+2
+ qn+1 wn+1 = fn+1 .
h2
(7.7)
Discretisatie van (7.6) geeft
Hieruit volgt wn+2
wn+2 − wn
=0.
2h
= wn . Dit substitueren we in (7.7) en delen door 2:
−wn + wn+1 1
1
+ qn+1 wn+1 = fn+1 .
h2
2
2
(7.8)
Deling door 2 is uitgevoerd om een symmetrische matrix A te verkrijgen. Merk op dat de
vector w nu lengte n + 1 heeft.
Convergentie
Met Taylorontwikkeling volgt
wn+2 = wn + O(h3 ) ,
zodat de afbreekfout in (7.8) gelijk is aan O(h) en bij alle andere vergelijkingen is een afbreekfout O(h2 ). Bij Dirichlet randvoorwaarden is de lokale afbreekfout in elke vergelijking
O(h2 ). Betekent dit dat de globale fout O(h) is? Dit blijk mee te vallen, zoals we hieronder
zullen zien.
119
We nemen q(x) = 0, 0 ≤ x ≤ 1. Het is bekend dat het resulterende stelsel stabiel is. We
splitsen de afbreekfout in twee vectoren:


0
 .. 


Ay = f + h2 u + hv , met v =  .  .
 0 
vn+1
De globale fout e = y − w splitsen we ook e = e (1) + e(2) , waarbij
Ae(1) = h2 u
Ae(2) = hv .
en
Omdat A stabiel is geldt ke(1) k = O(h2 ). Voor e(2) merken we op dat
(2)
= h3 vn+1 i ,
ei
i = 1, ..., n + 1 .
Omdat hi ≤ 1 volgt ke(2) k = O(h2 ). Dus voor de globale fout geldt kek = O(h 2 ).
7.7
Het algemene probleem
Het algemene randwaarde probleem wordt gegeven door
0 0
0
−(py ) + ry + qy = f ,
0<x<1,
met randvoorwaarden
y(0) = α
0
en y (1) = β .
Discretisatie in het punt xj geeft:
−pj+ 1 (wj+1 − wj ) + pj− 1 (wj − wj−1 )
2
2
h2
+rj
wj+1 − wj−1
+qj wj = fj ,
2h
j = 1, ..., n+1 . (7.9)
Merk op als rj 6= 0 dan is de discretisatie matrix niet symmetrisch. De randvoorwaarde voor
x = 0 geeft w0 = α hetgeen gesubstitueerd kan worden in (7.9) voor j = 1. De randvoorwaarde
voor x = 1 discretiseren we als volgt:
1
wn+2 − wn+1
wn+1 − wn
(pn+ 3
+ pn+ 1
) = p(1)β .
2
2
2
h
h
Merk op dat links het gemiddelde genomen is van de benaderingen voor
pn+ 3
2
dy
1
(1 + h)
dx
2
en
pn+ 1
2
dy
1
(1 − h) .
dx
2
dy
Dit gemiddelde is een benadering voor p n+1 dx
(1) = p(1)β. Voor deze formulering is gekozen
omdat nu de term pn+ 3 (wn+2 − wn+1 ) in (7.9) voor j = n + 1 vervangen kan worden door
2
−pn+ 1 (wn+1 − wn ) + 2hp(1)β.
2
120
7.8
Niet-lineaire randwaarde problemen
Een niet-lineair randwaarde probleem kunnen we schrijven als
0 0
0
−(py ) + g(y , y, x) = 0 ,
y(0) = 0
0<x<1,
en
y(1) = 0 .
(7.10)
De algemene aanpak is dat (7.10) wordt opgelost met een iteratief proces waarin alleen lineaire
vergelijkingen opgelost worden. De lineaire randwaarde problemen lossen we op met methoden
uit Hoofdstuk 7. De iteratieve methode genereert een rij iteranden y (0) , y (1) , y (2) , ... zodanig
dat y (n) → y, n → ∞ met y de oplossing van (7.10).
Picard
De iteratiemethode van Picard werkt als volgt:
Kies een startfunctie y (0) (x)
for n = 1 step 1 until nit do
begin
y (n) uit
0 0
0
−(py ) = −g(y (n−1) , y (n−1) , x) ,
y(0) = 0 en y(1) = 0
bepaal
end
Hierbij is nit het aantal iteraties dat wordt uitgevoerd.
Newton-Raphson
Met behulp van Taylor ontwikkeling volgt:
0
0
0
0
g(y , y, x) ' g(y (n−1) , y (n−1) , x) + (y − y (n−1) )r + (y − y (n−1) )q
waarbij
r =
q =
∂g (n−1)0 (n−1)
(y
,y
, x) en
∂y 0
∂g (n−1)0 (n−1)
,y
, x) .
(y
∂y
De Newton-Raphson methode is nu:
Kies een startfunctie y (0) (x)
for n = 1 step 1 until nit do
begin
bepaal y (n) uit
0 0
0
0
0
−(py ) + ry + qy = y (n−1) r + y (n−1) q − g(y (n−1) , y (n−1) , x)
y(0) = 0 en y(1) = 0
end
121
7.9
De convectie-diffusie vergelijking
In de vorige paragraaf hebben we de discretisatie afgeleid voor het algemene randwaarde
probleem. We hebben hierbij centrale differenties toegepast. In toepassingen blijkt dit niet
altijd tot (physisch) acceptabele oplossingen te leiden. We illustreren dit aan de hand van
het randwaarde probleem:
00
0
−y + vy = 0 ,
y(0) = 1 ,
0<x<1,
y(1) = α ,
met v > 0. We kunnen dit interpreteren als een warmte transport probleem. Hierbij is er
00
0
niet alleen transport door geleiding (diffusie) −y maar ook door stroming (convectie) vy .
Bovenstaande vergelijking staat bekend als de convectie-diffusie vergelijking.
Centrale differenties
Toepassen van centrale differenties geeft als stelsel

2
1 
 −1 −
h2 
∅
vh
2
−1 +
2
..
vh
2
.
..
.
..
.





∅ 


..
.
w1
..
.
..
.
wn






1

=
 h2 



1 + vh
2
0
..
.
0
(1 − vh
2 )α




 .


Als h zo gekozen wordt dat vh = 2 dan wordt de matrix een onderdriehoeksmatrix. De oplossing is dan ui = 1, i = 1, ..., n onafhankelijk van de waarde van α. Dit kan niet goed zijn.
Het blijkt dat de oplossing acceptabel is zolang h zo klein is dat vh < 2.
Upwind differenties
Als de voorwaarde vh < 2 tot hele kleine stapgroottes leidt, is het beter om upwind discreti0
satie te gebruiken. Hierbij wordt vy j benaderd door
wj − wj−1
h
wj+1 − wj
v
h
v
als
v≥0
als
v<0.
en
Voorbeeld (convectie-diffusie)
Om het verschil van centrale en upwind discretisatie te zien, beschouwen we het randwaardeprobleem
00
0
−y + vy = 1 ,
0<x<1,
y(0) = y(1) = 0 .
Voor h = 0.1 zijn de oplossingen bepaald voor v = 10, 20 en 100 (zie Figuur 7.4, 7.5 en
7.6). Voor v = 10 geldt vh < 2 en geeft centrale discretisatie een beter resultaat dan een
upwind discretisatie. Voor v = 20 geldt vh = 2. De numerieke oplossing voor de centrale
differentie hangt nu niet af van de randvoorwaarde in x = 1. Toevallig is in dit probleem de
numerieke oplossing nog redelijk. Voor v = 100 zien we dat de oplossing bepaald via upwind
discretisatie nog steeds een goede oplossing geeft terwijl centrale discretisatie oscillaties geeft
in de oplossing. Bovendien treden er grote fouten op.
122
0.07
Exact
Centraal
Upwind
0.06
Temperatuur
0.05
0.04
0.03
0.02
0.01
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
Figuur 7.4: De oplossing van het convectie-diffusie probleem voor v = 10
0.05
Exact
Centraal
Upwind
0.04
Temperatuur
0.03
0.02
0.01
0
−0.01
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
Figuur 7.5: De oplossing van het convectie-diffusie probleem voor v = 20
7.10
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
123
0.016
Exact
Centraal
Upwind
0.014
Temperatuur
0.012
0.01
0.008
0.006
0.004
0.002
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
Figuur 7.6: De oplossing van het convectie-diffusie probleem voor v = 100
- model warmtetransport
- randwaarde probleem
- Dirichlet, Neumann, Robbins randvoorwaarde
- eindige differentie
- conditiegetal
- consistentie, afbreekfout
- stabiliteit
- convergentie, globale fout
- niet-lineair randwaarde probleem
- convectie-diffusie probleem
- upwind discretisatie
124
7.11
Opgaven
1. Gegeven de matrices A1 en A2 :
100 99
2 1
en A2 =
A1 =
99 100
1 2
Bepaal van beide matrices het conditiegetal. Bepaal de oplossing van A 2 x = b waarbij
b = (199, 199). Neem ∆b = (1, 0). Schat k∆xk met behulp van het conditiegetal.
Bepaal ∆x en vergelijk k∆xk met de schatting.
2. Gegeven het randwaarde probleem
y 00 (x) = 2(y(x) − x), x ∈ [0, 1], y(0) = 0, y(1) = 0.
(a) Discretisatie geeft een stelsel vergelijkingen A w = b. Geef A en b.
(b) Geef een schatting voor de grootste en de kleinste eigenwaarde van A.
(c) Geef een schatting van
k∆wk
kwk
als
k∆bk
kbk
≤ 10−4 .
3. Gegeven het randwaarde probleem
−y 00 (x) = sinx, x ∈ [0, π],
y(0) = 0, y(π) = 0.
Geef de exacte oplossing. Neem N = 2 en bepaal de numerieke oplossing w j . Bereken
yj − wj , j = 1, 2.
4. Gegeven het randwaarde probleem
−y 00 (x) + y(x) = 0, x ∈ [0, 1],
y(0) = 1, y 0 (1) = 0.
Discretizeer dit randwaarde probleem met de roosterpunten: x 0 = 0, x1 = 72 , x2 =
6
8
4
7 , x3 = 7 en x4 = 7 . Geef de matrix A. Is de matrix symmetrisch of niet-symmetrisch?
Zijn de eigenwaarden positief?
125
Hoofdstuk 8
De instationaire warmtevergelijking∗
8.1
Inleiding
De tijdsafhankelijke temperatuurverdeling in een staaf kan beschreven worden met een parabolische partiële differentiaalvergelijking. Om zo’n begin-, randwaarde probleem op te lossen
maken we gebruik van de methoden uit hoofdstuk 6 en 7. Omdat praktische voorbeelden aan
de orde zullen komen in het practicum, zullen we in dit hoofdstuk geen voorbeelden geven.
8.2
Afleiding van de instationaire warmtevergelijking
Als voorbeeld nemen we de temperatuurverdeling in een staaf (Figuur 8.1). De temperatuur geven we aan met T (x, t) (K). We nemen aan dat de temperatuur gegeven is in beide
0
x
x+∆ x
L
Figuur 8.1: De vorm van de staaf
uiteinden T (0, t) = Tl en T (L, t) = Tr . De warmteproductie in de staaf geven we aan met
Q(x, t) (J/m3 s). Voor het afleiden van de warmtevergelijking maken we gebruik van de wet
van behoud van energie toegepast op het controle volume tussen x en x + ∆x en van het
tijdstip t tot t + ∆t. Volgens de wet van Fourier wordt de warmtestroomdichtheid gegeven
door −λ ∂T
∂x .
De energie balans is nu
ρcT (x, t + ∆t)A∆x = ρcT (x, t)A∆x
∂T
∂T
−λ
(x)A∆t + λ
(x + ∆x)A∆t + Q(x)A∆x∆t ,
∂x
∂x
126
waarbij geldt: ρ(kg/m3 ) is de soortelijke massa, c(J/kgK) is de soortelijke warmte en λ(J/msK)
is de warmtegeleidingscoëfficiënt. Delen door A∆x∆t en herschikken van de termen geeft
ρc
∂T
(x + ∆x, t) −
T (x, t + ∆t) − T (x, t)
= λ ∂x
∆t
∆x
∂T
∂x (x, t)
+Q.
Na het nemen van de limieten ∆x → 0 en ∆t → 0 krijgen we het volgende begin-, randwaarde
probleem:
∂T
∂2T
= λ 2 +Q, 0<x<L, 0<t,
∂t
∂x
T (0, t) = Tl (t) en T (L, t) = Tr (t) , 0 ≤ t ,
ρc
T (x, 0) = T0 (x) ,
8.3
0≤x≤L.
De gediscretiseerde vergelijking
Voor een eenvoudig warmteprobleem laten we zien hoe plaats- en tijdsdiscretisatie eruit komen
te zien. Er is hierbij een duidelijk verschil tussen een expliciete (Euler voorwaarts) en een
impliciete (Euler achterwaarts) tijdsintegratie methode.
De vergelijking
Als warmteprobleem nemen we
∂2y
∂y
=
, 0<x<1, 0<t≤T
∂t
∂x2
y(0, t) = yl (t) en y(1, t) = yr (t) , 0 ≤ t ≤ T
y(x, 0) = y0 (x) ,
(8.1)
0≤x≤1.
Semi-discretisatie
We discretiseren (8.1) in de x-richting met behulp van de eindige differentie methode. Deel het
interval [0, 1] op in n gelijke delen met lengte h. De knooppunten zijn x i = ih voor i = 0, ..., n.
De numerieke benadering van y(xi , t) geven we aan met ui (t). De vector u(t) wordt gegeven
door u(t) = (u1 (t), ..., un−1 (t))T . De waarden in de randpunten zijn weggelaten, omdat deze
bekend zijn uit de randvoorwaarden. Gebruikmakend van de technieken uit hoofdstuk 7
krijgen we het volgende stelsel eerste orde differentiaalvergelijkingen
du
= Ku + r ,
dt
u(0) = y 0 .
De matrix K en vector r worden gegeven door

−2 1
 1 −2 1
∅
1 

.
.
.
.. .. ..
K= 2
h 
 ∅
1 −2 1
1 −2
0<t≤T .







1
en r = 2
h
(8.2)







yl (t)
0
..
.
0
yr (t)




 .


Men spreekt hierbij van semi-discretisatie (of methode der lijnen), omdat er (vooralsnog) wel
in x maar niet in t wordt gediscretiseerd.
127
Tijdsintegratie (Euler voorwaarts)
Het stelsel (8.2) kan in de tijd geı̈ntegreerd worden met één van de methoden uit hoofdstuk 6.
We kiezen eerst voor de voorwaartse methode van Euler. Stel we nemen m stappen in de
T
tijd ter lengte k = m
en tj = jk. De numerieke oplossing geven we aan met w ij , hetwelk
een benadering is van ui (tj ) en dus van y(xi , tj ). In inwendige roosterpunten geldt dan de
volgende vergelijking
j
ω j − 2ωij + ωi+1
ωij+1 − ωij
= i−1
.
(8.3)
k
h2
De afbreekfout van deze differentievergelijking is
τi,j =
h2 ∂ 4 u
k ∂2u
(x
,
µ
)
−
(ξi , tj ) ,
i
j
2 ∂t2
12 ∂x4
(8.4)
waarbij µj ∈ (tj , tj+1 ) en ξi ∈ (xi−1 , xi+1 ). De methode is dus O(k + h2 ). Het is verstandig
om k en h zo te kiezen dat beide componenten aan de rechterkant van (8.4) ongeveer even
groot zijn. Dit betekent dat als je de plaatsstap halveert, het voor de hand ligt om de tijdstap
4 maal zo klein te nemen.
Merk op dat we ωij+1 eenvoudig kunnen bepalen via (8.3) immers
ωij+1 = (1 −
k j
2k j
j
)ωi + 2 (ωi−1
+ ωi+1
),
2
h
h
1 ≤ i ≤ n−1 ,
(8.5)
waarbij ω0j+1 en ωnj+1 volgen uit de randvoorwaarden. Merk op dat de waarden in het roosterpunt (xi , tj+1 ) afhangt van de waarden in de roosterpunten (x i−1 , tj ), (xi , tj ) en (xi+1 , tj ).
Deze punten zijn met een × aangegeven in Figuur 8.2. De waarden, die al bekend zijn uit
de begin- en randvoorwaarden zijn aangegeven met een ◦. In matrix vectornotatie geldt
uj+1 = (I + kK)uj + kr j .
Stabiliteit
Omdat Euler voorwaarts voorwaardelijk stabiel is, is het van belang om te bepalen hoe groot
de tijdstap genomen kan worden zonder dat er instabiliteiten optreden. De matrix K uit (8.2)
is symmetrisch, dus de eigenwaarden zijn reëel. Toepassing van de stelling van Gershgorin
geeft
4
− 2 ≤ λi ≤ 0 , voor 1 ≤ i ≤ n − 1 .
h
De matrix heeft geen positieve eigenwaarden zodat het stelsel differentiaalvergelijkingen (8.2)
stabiel is. In paragraaf 7.5 hebben we een expliciete uitdrukking voor de eigenwaarden van
K gegeven. Hieruit blijkt
max |λi |
4
≈ 2 2 .
min |λi |
π h
Voor kleine waarden van h is (8.2) een stijf stelsel.
We weten dat Euler voorwaarts stabiel is als de tijdstap k voldoet aan
k≤
2
h2
≤
.
max |λi |
2
Merk op dat als de plaatsstap gehalveerd wordt, de tijdstap 4 maal zo klein genomen moet
worden om te voldoen aan de stabiliteitsvoorwaarde. Voor kleine h kan het verstandiger zijn
128
t
j+1
t
j
xi−1 xi xi+1
Figuur 8.2: De afhankelijkheid bij Euler voorwaarts
om over te stappen op de achterwaartse methode van Euler, die onvoorwaardelijk stabiel is.
Tijdsintegratie (Euler achterwaarts)
Als we Euler achterwaarts toepassen dan krijgen we de formule
j+1
ω j+1 − 2ωij+1 + ωi+1
ωij+1 − ωij
,
= i−1
k
h2
in inwendige roosterpunten. Ook hiervan is de afbreekfout O(k + h 2 ). Voor het bepalen van
ωij+1 moeten we nu het volgende lineaire stelsel oplossen
Ax = b ,
(8.6)
uj+1
uj1
1




met A = (I − kK), x =  ...  en b =  ...  +
uj+1
ujn−1
n−1




k
h2







yl (tj )
0
..
.




.


0
yr (tj )
Merk op dat A een matrix is met veel nullen. Toch kost het oplossen van (8.6) meer werk dan
het bepalen van ωi,j+1 via (8.5). Een voordeel is wel, dat Euler achterwaarts onvoorwaardelijk
stabiel is, zodat de tijdstap afgesteld kan worden op de gewenste nauwkeurigheid. Ook hierbij
is een afweging nodig: goedkoop oplossen met veel tijdstappen (Euler voorwaarts) versus duur
oplossen met weinig tijdstappen (Euler achterwaarts).
Nu hangt de waarde in het roosterpunt (x i , tj+1 ) af van de waarden in de roosterpunten
(xi , tj ), (xi−1 , tj+1 ) en (xi+1 , tj+1 ), zie Figuur 8.3.
129
t
j+1
t
j
xi−1 xi xi+1
Figuur 8.3: De afhankelijkheid bij Euler achterwaarts
Tijdsintegratie (Trapezium)
We kunnen ook de Trapezium regel gebruiken als tijdsintegratie methode. De uitwerking
hiervan gaat analoog. In de literatuur wordt de Trapeziumregel ook wel aangeduid als de
Crank-Nicolson methode.
8.4
Samenvatting
In dit hoofdstuk zijn de volgende begrippen behandeld:
- instationaire warmtevergelijking
- semi-discretisatie
- afbreekfout
- stabiliteit
- Crank-Nicolson
130
Hoofdstuk 9
Optimization problems ∗
Optimization problems arise in all areas of science and engineering and are perhaps even
more common in business and industry. Any design problem usually involves optimizing
some figure, such as cost or efficiency. Among all possible designs (i.e. configurations), one
usually aims at the configuration that best achieves some desired objective. Of course, the
result depends on the particular objective. We mention a few examples:
• Find the smooth curve between two points in space such that its length is minimal.
(this is a straight line)
• Design the industrial process for the manufacturing of slabs made of steel such that the
cost are minimal.
• Given some measurements on the voltage over a resistor and the current through this
resistor, find the resistence which suits the measurements best.
• Given a ’cloud’ of data-points, which third order polynomial fits best to these datapoints?
• Find the thermodynamic setting of a system such that the potential energy of this
system is minimal.
• Find the configuration of an optical set-up such that the light beam in this optical set-up
has the shortest path.
Often the designer formulates an optimization problem in mathematical terms. For some
applications one looks for a certain optimum subject to a constraint. As an example: a
dietitian might minimize the number of calories of a diet subject to meeting other nutritional
requirements (such as for the amount of salt and sugar). The additional constraints may
complicate matters considerably. This class of ’constrained optimization problems’ will not
be treated in the present text. This chapter is devoted to a mathematical formulation of
optimization problems (without any constraints) and some classical numerical procedures to
solve optimization problems.
First a general mathematical formulation of an optimization problem is presented. Let x be
an n dimensional vector, i.e. x = [x1 . . . xn ] and f be a function of x. For problems without
any constraints we will consider the following type
Given V ⊂ Rn , find x ∈ V such that f (x) ≤ f (y) for all y ∈ V.
131
(9.1)
A typical example is the following
Find x ∈ R such that f (x) = x2 ≤ y 2 = f (y) for all y ∈ R.
(9.2)
It is immediately clear that x = 0 is the answer and that V = R in this example.
For problems in which a function involves the sum of squares, we will consider least squares
solutions. An important class here is the fitting of measured data-points to a polymial relation.
Then we will deal with some basic techniques for more general optimization problems.
We note here that there is a great variety in numerical methods for optimization problems.
The interested reader is referred to the work of Heath 1 . Furthermore, mathematical details
on conditions for existence and uniqueness are omitted. We also remark that a maximization
problem is based on the same principles as minimization problems just under replacing f (x)
by −f (x).
9.1
Least squares for linear problems
Suppose that we have a table with measured values for the voltage (V ) and electric current
(I), see Table 1. From this table and Ohm’s Law, which is V = IR, we want to determine
the resistance R such that its value agrees best with the data in Table 1.
V(V)
I(A)
100
1.10
200
2.15
300
3.25
400
4.30
500
5.45
V = IR R =?
Table 1: Input data for least squares problem.
The data in Table 1 imply the following set of linear equations:
1.10R − 100 = 0
2.15R − 200 = 0
3.25R − 300 = 0
4.30R − 400 = 0
5.45R − 500 = 0.
(9.3)
Of course, the above system is inconsistent: there is no value for R for which all the equations
are satisfied. For the sake of illustration and for convenience of notation, the above system is
replaced by the following set of relations
1.10R − 100 = r1
2.15R − 200 = r2
3.25R − 300 = r3
4.30R − 400 = r4
5.45R − 500 = r5 .
1
(9.4)
M.T. Heath, Scientific computing: an introductory survey, Mc Graw Hill, New York, second edition,
(2002).
132
the quantities r1 , . . . , r5 are called the residuals. Let us try to determine R such that the sum
of the squares of the residuals is minimal. Mathematically, this is formulated as follows
Let ψ(R) :=
5
X
ri2 , find R such that ψ(R) is minimized.
(9.5)
i=1
To achieve this minimum, we require
dψ(R)
= 0.
dR
(9.6)
Using the Chain Rule for differentiation, we obtain:
5
5
d X 2 X
dψ(R)
dri
=
.
ri =
2ri
dR
dR
dR
i=1
In our application we have
division by 2 gives
dr1
dR
= 1.10,
dr2
dR
(9.7)
i=1
= 2.15, etc. Substitution into equation (9.7) and
1.10(1.10R − 100) + 2.15(2.15R − 200) + . . . + 5.45(5.45R − 500) = 0.
(9.8)
This linear equation is solved for R to obtain R = 92.28Ω. This solution is referred to as the
least squares solution because the sum of the squares of the residuals is minimized.
2
d ψ
Exercise 1 Show that dR
2 > 0. This implies that indeed the minimum of the sum of the
squares of the residuals is found.
Exercise 2 Given the following table
M(kg) V(m3 )
992
1
2008
2
2989
3
Table 2: Input data for least squares problem.
Let M = ρV , determine the least squares solution for the density ρ from Table 2.
9.1.1
n linear equations with m unknowns (n > m)
Now we consider a more general case n linear equations with m unknowns where n > m
(hence more equations than unknowns)

 a11 x1 + . . . + a1n xm = b1
...
(9.9)

an1 x1 + . . . + anm xm = bn
A compact notation, where A is the matrix with the coefficients and x ∈ R n the solution
vector and b ∈ Rm the right hand side vector, is given by
Ax = b.
133
(9.10)
We will look for the least squares solution of equation (9.9). First, we introduce some notation.
We define the inner product of two vectors in R n by
(v, w) := v T w =
n
X
i=1
vi wi ⇒ (v, w) = (w, v).
(9.11)
Further, for a matrix B ∈ Rn×n , we have
(v, Bw) = v T Bw = (B T v)T w = (B T v, w).
(9.12)
In the above equation we used (AB)T = B T AT for two matrices A and B. Further, we define
the norm of the real-valued vector x ∈ R n by
p
||x|| = (x, x).
(9.13)
We turn back to the least squares solution of problem (9.9) and rewrite the problem as
Find x ∈ Rn such that ||Ax − b|| ≤ ||Ay − b|| for all y ∈ R n .
(9.14)
Here y is an arbitrary vector in Rn . The vector y is replaced by y = x + tv where v is an
arbitrary vector and t ∈ R. Then from equation (9.14) follows that
(A(x + tv) − b, A(x + tv) − b) ≥ (Ax − b, Ax − b).
(9.15)
for every t. Working out the left hand side gives
t2 (Av, Av) + 2t(Av, Ax − b) + (Ax − b, Ax − b) ≥ (Ax − b, Ax − b).
(9.16)
t2 (Av, Av) + 2t(Av, Ax − b) ≥ 0 for all t and v.
(9.17)
Hence
Suppose that t > 0, then t(Av, Av) + 2(Av, Ax − b) ≥ 0 for all v and hence (Av, Ax − b) ≥
0 for all v.
Similarly if t < 0, then (Av, Ax − b) ≤ 0 for all v and t. Combination of the above equation
with equation (9.9) yields
(v, AT (Ax − b)) = 0, for all v ∈ Rn .
(9.18)
This implies that the vector AT (Ax − b) is orthogonal to all vectors in R n . This implies that
AT (Ax − b) = AT Ax − AT b = 0. By this we proved:
Theorem 9.1.1 A least squares solution of the m × n system Ax = b satisfies the m × m
system AT Ax = AT b.
The system AT Ax = AT b is commonly referred to as the normal equations of the least squares
problem.
134
9.1.2
Application to fitting data on polynomials
An important application is fitting experimental data to a polynomial. Suppose that a physical quantity is known to behave like an m th degree polynomial in some variable. This
quantity is measured for several values of the independent variable such that the number of
measurements is (much) larger than the polynomial degree. The goal is to determine the
coefficients of the polynomial such that this approximates the set of measured data points as
well as possible. Let the physical quantity be given by y and the independent variable be t,
then we require that
y(t) = p0 + p1 t + p2 t2 + . . . + pm tm ,
(9.19)
approximates as well as possible the measurements hypothetically given by Table 3.
y0
t0
y1
t1
...
...
yn
tn
This amounts to finding p0 , . . . , pm such that the polynomial y coincides with the measured
data from Table 3 as well as possible. Substitution of these measured data into (9.19) yields
y0 = p 0 + p 1 t0 + . . . + p m tm
0
y1 = p 0 + p 1 t1 + . . . + p m tm
1
...
yn = p 0 + p 1 tn + . . . + p m tm
n.
(9.20)
This represents a system of n equations with 
m + 1 unknownsp = [p 0 . . . pm ]T . In vector1 t0 . . . t m
0
 , n > m, where p is to be
notation this reads as Qp = y, where Q = 1 t1 . . . tm
1
m
1 tn . . . t n
determined. According to the previous section (Theorem 9.1.1) the least squares solution is
given by the solution of
QT Qp = QT y.
(9.21)
9.2
Optimization of non linear problems
First an introduction into non-linear optimization problems is given in terms of conditions
for the nature of minima or maxima. Subsequently the steepest descent method is described
and then a link with Newton’s method is presented.
9.2.1
Critical points
Let f (x1 , . . . , xn ) be a smooth function of the independent variables x 1 , . . . , xn ∈ R. Suppose
that x̂1 , . . . , x̂n gives the minimum value of f (x1 , . . . , xn ). In this section the following type
of problem is addressed:
Find x̂1 , . . . , x̂n ∈ R such that f (x̂1 , . . . , x̂n ) ≤ f (x1 , . . . , xn ) for all x1 , . . . , xn ∈ R. (9.22)
Here f (x1 , . . . , xn ) is sometimes referred to as the object function. For ease of notation a
vector notation is used, where
x = [x1 . . . xn ]T .
(9.23)
135
From calculus it is known that the gradient of f (∇f ) gives the direction of the maximum
increase of f (x1 , . . . , xn ) and that the magnitude of the gradient of f gives the value of the
maximum increase. Then, it is clear that −∇f gives the direction of the maximum decrease of
f . This motivates that if x̂ represents a value at which f has a (local) maximum or minimum
then we need to look for
∇f (x̂) = 0.
(9.24)
A more formal way to derive this is based on the use of the directional derivative. Note
that the point x̂ where ∇f (x̂) = 0 is called a critical point of f and can either be a (local)
maximum, minimum or a saddle point. To determine the nature of the critical point, a second
order Taylor expansion around point x̂ is developed:
f (x) ≈ f (x̂) + (x − x̂)T ∇f (x̂) +
2
1
(x − x̂)T ∇ f (x̂) =
2
∂2f
1
∂2f
= f (x̂) + (x − x̂)T ∇f (x̂) + {(x1 − x̂1 )2 2 (x̂) + . . . + (xn − x̂n )2 2 (x̂)+
2
∂xn
∂x1
+2(x1 − x̂1 )(x2 − x̂2 )
(9.25)
∂2f
∂2f
(x̂) + . . . + 2(xn−1 − x̂n−1 )(xn − x̂n )
(x̂)}.
∂x1 ∂x2
∂xn−1 ∂xn
The last terms of the above equation involve the second order partial derivatives of the
function f at the point x̂. It is interpreted as a quadratic form which contains the Hessian
matrix (or briefly the ’Hessian’) with all the second order partial derivatives of the function
f at x̂. Note further that in the above expression, terms of x − x̂ of third and higher order
have been neglected. Further, let H(x̂) denote the Hessian of f at x̂, i.e.

 ∂2f
2f
(x̂)
. . . ∂x∂1 ∂x
(x̂)
∂x21
n


(9.26)
H(x̂) = 
...
...
...
.
∂2f
∂2f
(x̂)
∂xn ∂x1 (x̂) . . .
∂x2
n
then, equation (9.25) is written in a more compact form by
1
f (x) ≈ f (x̂) + (x − x̂)T ∇f (x̂) + (x − x̂)T H(x̂)(x − x̂).
2
2
(9.27)
2
f
f
(x̂) = ∂x∂j ∂x
(x̂) (we assume f to be a smooth function so that the second order
Since ∂x∂i ∂x
j
i
partial derivatives are continuous), we immediately see that H(x̂) is a symmetric matrix.
At this point some elementary properties from linear algebra of symmetric matrices are shortly
reviewed. Let A be a general symmetric matrix. A symmetric matrix is called positive definite
if and only if xT Ax > 0 for all x 6= 0. A symmetric matrix is always diagonalizable, i.e. one
can write A = P DP T where P and D respectively represent a matrix whose columns consist
of the eigenvectors of A and a diagonal matrix whose entries in the main diagonal represent
the eigenvalues of A (see linear algebra). Further, by the use of a diagonalization argument,
we show that a symmetric positive matrix has (real-valued) positive eigenvalues only:
xT Ax = xT P DP T x = P T xT DP T x = y T Dy = λ1 y12 + . . . + λn yn2 ,
(9.28)
where y := P T x. It can be seen easily that if λi > 0 for all i ∈ {1, . . . , n} then xT Ax > 0
for all x 6= 0. It can be shown by a similar argument that a negative definite matrix, i.e.
136
xT Ax < 0 for all x 6= 0, has negative eigenvalues only. Further, if the eigenvalues of A differ
in sign, the matrix is called indefinite: the expression x T Ax can either be positive, negative
or zero for x 6= 0. Later these properties of symmetric matrices will be used for the Hessian
H.
Further, since ∇f (x̂) = 0, equation (9.25) turns into
1
f (x) = f (x̂) + (x − x̂)T H(x̂)(x − x̂).
2
(9.29)
This implies that if (x − x̂)T H(x̂)(x − x̂) > 0 for all x near x̂ then f (x) is a local minimum
and if (x − x̂)T H(x̂)(x − x̂) < 0 for all x near x̂ then f (x) is a local maximum. With x near x̂
it is meant that there is an > 0 for which ||x − x̂|| < . This means the following: Suppose
that ∇f (x̂) = 0 then x̂ is a critical point of f for which
1. If (x − x̂)T H(x̂)(x − x̂) > 0 for all x such that x 6= x̂ (i.e. H(x̂) is positive definite) then
f (x̂) is a local minimum;
2. If (x − x̂)T H(x̂)(x − x̂) < 0 for all x such that x 6= x̂ (i.e. H(x̂) is negative definite)
then f (x̂) is a local maximum;
3. If (x − x̂)T H(x̂)(x − x̂) changes sign, then f (x̂) is a saddle point.
Since H(x̂) or shortly H is symmetric, it is clear that
1. If all eigenvalues of H are positive, then H is positive definite;
2. If all eigenvalues of H are negative, then H is negative definite;
3. If the eigenvalues of H differ in sign, then H is indefinite.
This gives us the following important conclusion for critical points of smooth functions:
Let f be a smooth function, then, at a critical point x̂, where ∇f (x̂) = 0, if H is
1. positive definite (all eigenvalues positive), then f (x̂) is a minimum;
2. negative definite (all eigenvalues negative), then f (x̂) is a maximum;
3. indefinite (eigenvalues differ in sign), then f (x̂) is a saddle point;
4. singular (at least one eigenvalue zero), then the test is inconclusive.
Voorbeeld 9.2.1 Let f (x1 , x2 ) = x21 + x22 then it is immediately clear that (x 1 , x2 ) = (0, 0)
T
gives a minimum. Now we
use the test: ∇f = [2x 1 , 2x2 ] = 0 ⇔ x1 = 0 and x2 = 0. The
2 0
. The eigenvalues of H are both equal to 2, hence positive.
Hessian is given by H =
0 2
According to the above test it is concluded that x 1 = 0 and x2 = 0 gives a minimum.
In the coming sections two classical numerical methods are presented and discussed for finding
a (local) minimum of a function of n variables.
137
9.2.2
The method of steepest descent
As mentioned earlier the negative gradient gives the direction of the largest decrease of the
function f . Therefore, we use this largest decrease, i.e. the steepest descent, of the function
f at consecutive iterates xk . Since the steepest descent method is based on the determination
of a minimum along a search direction, a minimization problem along a given search direction
is formulated. Let s be a given search direction, then one seeks the minimum along the line
of this search direction containing the point x, i.e.
Find α̂ ∈ R such that f (x + α̂s) ≤ f (x + αs) for all α ∈ R.
(9.30)
The minimization is commonly referred to as a line-search. The value of α̂ is determined by
a single variable minimization, i.e. φ(α) = f (x + αs) then φ 0 (α̂) = 0. The maximum benefit
from downhill movement of f is obtained by the use of the direction of the negative gradient,
i.e. s = −∇f . Therewith, the following algorithm is constructed:
x0 = initial guess.
for k = 1, 2, . . .
sk = −∇f (xk−1)
(compute direction of steepest descent)
(9.31)
Choose αk to minimize f (xk−1 + αk sk )
(do line search)
xk = xk−1 + αk sk
end
The steepest descent method is very reliable provided the gradient ∇f is nonzero. However,
the method only has a first order convergence, so that
||xk − x̂|| ≤ C||xk−1 − x̂||,
(9.32)
where x̂ is the minimum of f and C is a positive constant. For cases where C is large,
convergence may be slow. For some cases the iterates ’zigzag’ towards the solution very
slowly. This is shown in the following example.
Voorbeeld 9.2.2 Given f (x1 , x2 ) = 0.5x21 + 2.5x22 , then at first glance (x1 , x2 ) = (0, 0)
is the global minimum. Let x0 = [5 1]T and sk = −∇f = [−x1 − 5x2 ]T , then xk =
xk−1 − [x1 5x2 ]T αk . This implies that x1 = [5 1]T − α[5 5]T , where α is to be found. Let
φ(α) := f (x + αs), then φ(α) = 0.5(5 − 5α) 2 + 2.5(1 − 5α)2 hence φ0 (α) = (−5)(5 − 5α) +
5(1 − 5α)(−5) = 150α − 50 = 0. This means that α = 31 and herewith
10
2
1
− ]T .
1]T − [5 5]T = [
3
3
3
A qualitative sketch of the convergence of consecutive iterations is shown in Figure 9.1.
x1 = [5
Although convergence is slow, the method of steepest descent is robust for smooth functions.
The speed of convergence is improved by the use of the conjugate gradient method, which
is based on the same principle as the method of steepest descent, except that the obtained
consecutive search directions are corrected such that the components in the direction of the
previous search directions are removed. We do not treat the conjugate gradient method
any further. A faster converging, but unfortunately less robust, method is dealt with in the
next section. Finally, it is noted that the method converges to a (local) minimum and hence
convergence to the absolute minimum is obtained depending on the choice of the initial guess.
One should choose the initial value sufficiently close to desired minimum. Often this should
be done with care.
138
Figuur 9.1: Illustration of the ’zigzag’ behaviour of the convergence of the method of the
method of the steepest descent.
9.2.3
Newton’s method for optimization
We saw that determining a maximum or minimum of a given smooth function f implies the
determination of a critical point, i.e.
Find x̂ ∈ Rn such that ∇f (x̂) = 0.
(9.33)
This is a determination of a zero of a set of (nonlinear) functions, let F (x) = ∇f (x), then
∇f (x̂) = 0 ⇔ F (x̂) = 0.
(9.34)
Here we determine x̂ by the use of Newton’s method. Let x k be the iterates generated by
Newton’s method for which limk→∞ ||xk − x̂|| = 0, then
J(xk−1 )(xk − xk−1 ) = −F (xk−1 ),
(9.35)
for a suitable start-vector x0 . Here J(xk−1 ) denotes the Jacobian of F evaluated at x k−1 , i.e.
 ∂F1
∂x1 (xk−1 )
...

...
...
J(xk−1 ) =
∂Fn
(x
)
...
k−1
∂x1
Since Fi (xk−1 ) =
∂f
∂xi (xk−1 ),

∂F1
∂xn (xk−1 )
...
∂Fn
∂xn (xk−1 )
.
(9.36)
equation (9.35) is rewritten using equation (9.36) to yield
H(xk−1 )(xk − xk−1 ) = −∇f (xk−1 ),
(9.37)
where H(xk−1 ) is the Hessian of f containing the second derivatives evaluated at x k−1 . Equation (9.37) is a system of linear equations (a matrix equation) which has to be solved. For
existence and uniqueness of a solution of the above linear equation, it is necessary that H is
nonsingular. In an algorithmic form we have the following (we define s = x k − xk−1 ):
x0 = initial guess
for k = 1, 2, . . .
Solve H(xk−1 )sk = −∇f (xk−1 ) for sk
xk = xk−1 + sk (update solution)
end
139
(9.38)
Newton’s method is known to have a quadratic convergence, i.e.
||xk − x̂|| ≤ C||xk−1 − x̂||2 ,
(9.39)
for a positive constant C. Since the convergence of the steepest descent method is known to
be linear (see preceeding section), Newton’s method is faster. A disadvantage of Newton’s
method is that the initial guess should often be close to the extremal point (i.e. the solution).
How close it should be is often hard to determine. Therefore, for many cases one better
starts with an other method (such as the steepest descent method) and then at the later
stages continue with Newton’s method, using its nice convergence properties. Examples of
such hybrid methods are beyond the scope of this course. Further, one would try to avoid
the determination of the Hessian matrix. Often, the choice between the several optimization
methods comes down to a judgement of the various drawbacks and assets of the methods. We
refer to Heath to find a more comprehensive view over (deterministic) optimization strategies.
Exercise 3 Given f (x1 , x2 ) = 0.5x21 + 2.5x22 . Perform one step of the Newton iteration for
finding the mimimum of f . Take x0 = [5 1]T as the initial value. Compare your results
to the results in Example 2, what do you observe. Explain your observations (what is the
error?).
140
Index
Lipschitz continu, 63
goed gesteld probleem, 63
Gershgorin, 115
global error, 82
globale afbreekfout, 72, 82
stabiliteitsvoorwaarde, 75
Hermite interpolatie, 17
hogere orde beginwaarde, 93
absolute fout, 3
absolutely stable, 76
achterwaartse differentie, 27
Adams-Bashforth, 107
afbreekfout, 26, 115
afkappen, 4
afrondfout, 3, 28
amplification factor, 76
impliciet, 68
interpolatie, 11
Jacobiaan, 46
kwadratisch convergent, 45
Lagrange interpolatie, 13, 31
lineair convergent, 44
lineaire interpolatie, 11
lokale afbreekfout, 73, 79
Bisectie, 38
centrale differentie, 27, 30, 32
cijferverlies, 6
conditiegetal, 115
consistent, 80, 116
convectie-diffusie vergelijking, 122
convergent, 82
convergentie, 116
Crank-Nicolson, 130
cubische spline, 21
matrix norm, 114
meerstaps methoden, 107
Middelwaardestelling, 8
Modified Euler, 70
Neumann, 113, 118
Newton-Cotes, 58
Newton-Raphson, 42
niet-lineair stelsel, 45
niet-lineaire vergelijking, 38
nonlinear problem, 78
differentievergelijking, 107
Dirichlet, 113
eindige differentie, 113
Euclidische norm, 114
Euler Achterwaarts, 68
Euler Voorwaarts, 64
expliciet, 70
extrapolatie, 16
extrapoleren, 13
O-symbool, 7
onbetrouwbaarheidsinterval, 39
principal root, 108
quasi-Newton, 46
randwaarde probleem, 112
Regula Falsi, 45
relatieve fout, 3
Richardson’s extrapolatie, 33
floating point getal, 3
functie evaluatie, 83
Gauss formules, 58
141
Robbins, 113
Rolle, 8
Secant, 45
semi-discretisatie, 127
splines, 20
spurious root, 108
stabiliteit, 116
stable, 76
stelsels differentiaalvergelijkingen, 91
stopcriterium, 39
superstabiel, 106
Taylorpolynoom, 8, 16
test equation, 76
Trapeziumregel, 69
truncation error, 82
Tussenwaardestelling, 8
upwind discretisatie, 122
vast punt probleem, 40
versterkingsfactor, 74
versterkingsmatrix, 94
voorwaartse differentie, 26, 31
warmtevergelijking, 126
142
Download