6 Numeriske likningsløsere TMA415 våren 019 Andregradslikningen kan vi løse med formelen a + b + c 0 b ± b 4ac a Men i mange anvendelser dukker det opp likninger ikke kan løses analytisk Et klassisk eksempel er cos I disse tilfellene må vi velge blant forskjellige numeriske løsere istedet En løsning r av en likning kalles gjerne en rot Halveringsmetoden Vi søker r slik at fr 0 Dersom f er kontinuerlig bytter fortegn i r, kan vi benytte denne informasjonen til å finne en approksimasjon n til r La oss anta at vi kjenner a b slik at r [a, b] er den eneste roten til f i [a, b] Vi definerer nå 1 a, b, a+b Fortegnet til f vil fortelle oss om < r eller > r, følgelig vil vi kunne si med sikkerhet om r [ 1, ] eller r [, ] Intervallene [ 1, ] [, ] er akkurat halvparten så lange som [ 1, ], så etter å ha utført denne prosessen, har vi en mer nøyaktig ide om hvor r befinner seg Vi setter så eller 1, alt etter fortegnet til f, repeterer prosedyren Dersom vi gjør dette n ganger, ender vi opp med et intervall med lengde b a n, hvis vi til slutt setter r n 1+, vet vi at r n b a n+1 Teorem 61 Dersom f er en kontinuerlig funksjon med en rot i intervallet a, b, produserer n steg med halveringsmetoden et estimat som tilfredsstiller Fikspunktmetoden r n b a n+1 Anta at vi har en likning på formen Iterasjonen r gr n+1 g n vil konvergere mot r under noen omstendigheter Det kommer litt an på g Vi begynner med et eksempel Eksempel 6 Vi løser polynomlikningen + 0 Dette polynomet kan spaltes i + + 1 +, vi skal se hvordan fikspunkmetoden leter etter de forskjellige løsningene Likningen kan skrives om til g på flere måter, men vi skal begynne med å skrive 1 +, slik at g 1 n+1 1 +, n + n Vi prøver å finne løsningen r 17050807568877, starter derfor en kjøring i 0 15 Vi får: 0 1500000000000000 5-09957055671977 10-0999985515417 15-09999999819986 0-099999999970454 5-0999999999998784 0-0999999999999995 5-1000000000000000 Også nå ønsker metoden heller å finne r 1 Eksemplet over er kjørt med en kodesnutt som ser slik ut: import numpy as np import time #initialgjetning -15 #denne koden er basert paa at vi overskriver en enkelt variabel istedet for aa lagre hele rekken av iterasjoner derfor trenger vi en ekstra variabel for aa holde styr paa avstanden mellom iterasjonene y-1 #hvor tett skal det vaere mellom iterasjonene foer vi er fornoyde? tol10**-16 #fikspunkt for -cos 0 while npabsy- > tol: # vi holder paa saa lenge avstanden mellom iterasjonene er storre en tol y # y er naa forrige iterasjon **+**-/ #dette er fikspunktiterasjonen timesleep5 #en liten pause, slik at vi skal faa tid til aa nyte synet av den nye iterasjonen print, npabs-y #som printes her 1
Fikspunktmetoden i forrige eksempel viste en sterk preferanse på hvilken rot den hadde lyst til å finne Men man kan skrive om likningen til g på mange måter Eksempel 6 Vi skriver nå om likningen + 0 til + Starter vi i 0 15, får vi 0-1500000000000000 5-170044011461 10-170508045849 15-1705080756851 0-17050807568878 5-17050807568877 Denne fikspunktmetoden klarte fint å finne roten r Som vi ser av de to foregående eksemplene, kan fikspunktmetoden konvergere mot forskjellige røtter avhengig av hvordan vi skriver om likningen Den kan så ikke konvergere i det hele tatt Eksempel 64 Vi prøver igjen + Starter vi i 0 15, i håp om å finne r, får vi 0-1500000000000000 1 0867469877551 68701588518744 4-04997811546809 5 50078841967099 6-08116180067 7 6454116990940 8-08815585764740 9-0541641177714 10 68709596074 Denne fikspunktmetoden klarte ikke å finne noe som helst når vi startet i 0 15 For å skjønne hva som skjer, kan vi taylorutvikler g om r: g n gr + g r n r+ skrive g r n+1 r g n gr n r + g r n r +! g r n r + g r n r + da har vi en likning som sier noe om størrelsen på n+1 r som en funksjon av n r, altså hvor mye feilen minker fra iterasjon til iterasjon For fikspunktiterasjonen ser vi at det blir best konvergens om g er så liten som mulig Vi tar med et konvergensteorem Teorem 65 La g være en kontinuerlig deriverbar funksjon Dersom både a < g < b g L < 1 på på [a, b], finnes et entydig punkt r slik at Fikspunktmetoden r gr n+1 g n konvergerer mot r dersom 0 [a, b] Eksempel 66 I eksemplene over er g + g + Hvis du deriverer disse evaluerer i røttene til polynomet +, vil du se et tydelig mønster Fikspunktmetoden greier ikke finne r dersom g r > 1 Til slutt kan nevnes at fikspunktmetoden så kan brukes på systemer på formen G der R n G : R n R n Iterasjonen er n+1 G n Å analysere konvergensen til denne iterasjonen blir for hardt for oss, men vi skal få bruk for selve iterasjonen i kapitlet om numeriske metoder for ordinære differensiallikninger Newtons metode Anta at likningen er på formen fr 0 Prosedyren for Newtons metode er som følger: slå tangenten til funksjonen f i iterasjonen n Punktet der tangenten skjærer -aksen er den nye iterasjonen n Hvis vi setter opp likningen for tangenten y f n f n n, sier at iterasjonen n+1 er den -verdien slik at y 0: f n f n n+1 n, blir iterasjonen n+1 n f n f n Eksempel 67 Vi søker løsningene til 4 10 + 5 50 + 4 0
Som Ingrid Espelid Hovig har vi jukset litt, valgt et polynom som faktoriseres pent: 4 10 +5 50+4 1 4 Newtons metode blir: n+1 n 4 n 10 n + 5 n 50 n + 4 4 n 0 n + 70 n 50 La oss lete etter r 1 Vi starter i 0 05, får: 0 0500000000000000 1 079895454545455 09508175998688 0996068041 4 099997187651984 5 0999999998549667 6 1000000000000000 Konvergerer fort dette her Som du ser i eksemplet over, dobles antall korrekte desimaler etter hver iterasjon For å analysere konvergensen til Newtons metode må vi se den som en fikspunktiterasjon, der Vi beregner g f f g 1 f ff f ff f Husk at fr 0 Dersom f r 0, får vi slik at n+1 r g n gr g r g r frf r f r 0, n r + g r n r +! Dette kalles kvadratisk konvergens - feilen etter n + 1 iterasjoner er proporsjonal med kvadratet av feilen etter n iterasjoner Da konvergerer det fort Eksempel 68 Nå prøver vi å finne løsningene til 4 9 + 7 1 + 1 0 Nok en gang er det et lettfaktorisert polynom: 4 9 + 7 1 + 1 1 4 Newtons metode blir: n+1 n 4 n 9 n + 7 n 1 n + 1 4 n 7 n + 54 n 1 Nok en gang leter vi etter r 1, ved å starte i 0 05: 0 0500000000000000 1 0714146414641 0849487847971 091697117796 4 0957159106705 5 0978194606194 6 09889994651411 7 09944747550580 8 0997104719 9 09986190094898 10 0999065657084 Det ser ut til å konvergere, men mye saktere enn i sted Hva skjedde? I eksemplet over er f 1 0 Dette betyr at g 1 f1f 1 f 1 ikke er bestemt, grensen lim 1 g trenger ikke være null Eksemplet demonstrerer tydelig at den kvadratiske konvergensen ikke kan garanteres dersom f r 0 Sekantmetoden Denne ligner på Newton, men vi slår sekanten til f gjennom iterasjonene n i 1, istedet for tangenten i i Punktet der sekanten skjærer -aksen er den nye iterasjonen n Iterasjonen blir n i 1 n+1 n f n f n f i 1 Merk at her må man ha to initialgjetninger 1 0, siden man trenger to punkter for å slå en sekant Når det gjelder sekantmetoden, kan det vises at n+1 r C n r 16, men det er et svineri, du må taylorutvikle noe ut av det hinsidige Konvergens kalles superlineær, altså kjappere enn fikspunkt, men treigere enn Newton Newtons metode i to dimensjoner Anta at vi har to funksjoner f, y g, y Vi leter etter et punkt a, b slik at både likningene fa, b 0 ga, b 0 f, y 0 g, y 0 angir nivåkurver for funksjonene f g Punktet a, b må ligge på skjæringspunktet mellom disse
y f, y 0 a, b vi skriver fn, y n g n, y n f n, y n f y n, y n n+1 n g n, y n g y n, y n y n+1 y n g, y 0 Nå kan vi gange med f n, y n f y n, y n g n, y n g y n, y n 1 Anta at du har en iterasjon n, y n Vi setter opp tangentplanene til f g i n, y n z f n, y n f n, y n n + f y n, y n y y n z g n, y n g n, y n n + g y n, y n y y n Hvis vi krever at z 0, får vi likninger for skjæringslinjene mellom disse tangentplanene, y-planet f n, y n f n,y n n + f y n, y n y y n g n, y n g n,y n n + g y n, y n y y n Iterasjonen n+1, y n+1 defineres som skjæringen mellom disse linjene Altså er y f n, y n a, b n, y n n+1, y n+1 f n,y n n+1 n + f y n, y n y n+1 y n g n, y n g n,y n n+1 n + g y n, y n y n+1 y n, et lineært likningssystem som definerer n+1, y n+1 Matrisen er f n, y n f y n, y n g n, y n g y n, y n fra venstre, legge til n, y n på begge sider, få Newtons metode for systemer n+1 n y n+1 y n 1 f n, y n f y n, y n fn, y n g n, y n g y n, y n g n, y n Jeg gadd ikke skrive ut hva f n, y n f y n, y n g n, y n g y n, y n er, men du kan regne det ut ved å huske fra lineæralgebraen at 1 a b 1 d b c d ad bc c a Eksempel 69 Vi leter etter løsninger til systemet + y 1 4 + y 1 Som du husker fra M er den første likningen for enhetssirkelen, mens den andre er likningen for en ellipse med halvakser 1 Trekker man to ganger den første fra den andre, kan man regne ut at skjæringspunktet mellom disse kurvene i første kvadrant er, 075598946018454, 065465670707977 7 7 La oss se om Newtons metode finner dette punktet Siden f, y + y 1 blir g, y 4 + y 1 f n, y n f y n, y n g n, y n g y n, y n som har invers Metoden blir n+1 y n+1 n 1 7y 4y y y n 1 7y starter vi i 1, 1, får vi: 4y y 1 y 4y fn, y n g n, y n, 4
n n y n 1 1000000000000000 1000000000000000 07857148571486 07148571485714 07564950649507 06571485714857 4 0755991566800 06546588509168 5 075598946018484 0654656707495 6 075598946018454 065465670707977 7 075598946018455 065465670707977 Maskinpresisjon etter syv iterasjoner Bra greier det her 5