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 unknownsp = [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