Kapitel 5 Fixpunktsiteration 5.1 Fixpunktsekvation En algebraisk ekvation kan skrivas på följande två ekvivalenta sätt (vilket innebär att lösningarna är desamma). 1. f(x) = 0. En lösning x kallas en rot till ekvationen eller ett nollställe till f. Exempel. Funktionen f(x) = x har två nollställen x 1 =, x =. Algoritm: För ekvationer på denna form har vi bisektionsalgoritmen.. x = g(x). En lösning x kallas för en fixpunkt till g. Ekvationen kallas för en fixpunktsekvation. Exempel. Funktionen g(x) = /x har två fixpunkter, x 1 =, x =, eftersom ± = ± = ±. Algoritm: en naturlig algoritm för en fixpunktsekvation är att välja en startpunkt x 0 och därefter beräkna x i enligt rekursionen x i = g(x i 1 ). Detta kallas fixpunktsiteration. Vår förhoppning är att följden x i konvergerar mot en fixpunkt. Detta fungerar ibland och ibland inte. Exempel. Med g(x) = x/+1/x och x 0 = 1 får vi x 1 = g(x 0 ) = 3/, x = 17/1 och så vidare. Detta är enkelt att utföra i Matlab: >> format long >> x=1 >> x=x/+1/x >> x=x/+1/x >> x=x/+1/x >> x=x/+1/x Prova detta!! Konvergerar det? Känner du igen en viss decimalutveckling? Se Figur 5.1. Exempel. Med g(x) = /x och x 0 = 1 får vi x 1 = g(x 0 ) =, x = 1, x 3 =, dvs., vi får den divergenta följden {1,,1,,...}. Notera att ekvationerna x = 0, x = x/+1/x, och x = /x är ekvivalenta (multiplicera de två sista ekvationerna med x för att se detta). Vi kan omvandla ekvationer mellan de två formerna på många sätt. Som ett exempel, x = g(x) kan skrivas x g(x) = 0. Å andra sidan, f(x) = 0 kan 1
KAPITEL 5. FIXPUNKTSITERATION 1.5 1 0.5 0 0 0.5 1 1.5 Figur 5.1: Funktionerna y = x/+1/x och y = x. skrivas x = x+αf(x) där α eller α(x) är ett godtyckligt nollskilt tal eller funktion. Utmaningen är att göra ett bra val av α så att fixpunktsiterationen konvergerar. Senare, när vi studerar Newtons metod, kommer vi att finna ett optimalt val av α. I själva verket så har x = x/+1/x erhållits ur ekvationen x = 0 genom att använda α(x) = 1/(x) och vi kommer att lära oss varför detta är ett bra val. Så, när fungerar fixpunktsiterationen? Det visar sig att en viktig förutsättning är att Lipschitzkonstanten L = L g för g är strängt mindre än 1. Mer precist, kommer vi att anta att g är Lipschitz på ett intervall I med konstant L < 1, dvs., g(x) g(y) L x y för x,y I och med L < 1. En sådan funktion kallas för en kontraktionsavbildning (eller bara en kontraktion). Notera att avståndet mellan g(x) och g(y) är mindre än avståndet mellan x och y. Exempel. Med g(x) = /x får vi g(x) g(y) = y x = xy x y x y 1 x y, x,y, så g är en kontraktion med L = 1/ på I = [, ). Notera att vi använt att z = xy [4, ) så x y = z (0, 1 ]. Exempel. Med g(x) = x/+1/x får vi g(x) g(y) = x y + y x xy = 1 1 xy x y. Låt oss nu som ett exempel betrakta x,y [1,]. Sätt z = xy. Då fås z [1,4] och 1 1 1 1 z [ 1, 1 4 ] med absolutbelopp 1 1 xy 1. Därmed fås g(x) g(y) = 1 1 x y 1 x y, x,y [1,], xy så g är en kontraktion med L = 1/ på I = [1,]. 5. Kontraktionsavbildningssatsen xy = Kom ihåg att bisektionsalgoritmen leder till Bolzanos sats. Fixpunktsiteration leder också till en sats.
5.. KONTRAKTIONSAVBILDNINGSSATSEN 3 Kom ihåg att ett slutet intervall I är ett intervall som innehåller sina ändpunkter (om det har några). Ett slutet intervall kan vara av följande typer: I = [a, b] (slutet och begränsat intervall) I = [a, ), I = (,b], I = (, ) = R, (slutna och obegränsade intervall) Sats. (Kontraktionsavbildningssatsen) Antag att I är ett slutet intervall och att g : I I är en kontraktionsavbildning. Då har g en entydig fixpunkt x I. Fixpunkten fås som gränsvärdet av fixpunktsiterationen, x i = g(x i 1 ), för en godtycklig startpunkt x 0 I. Det är viktigt att målmängden I är densamma som definitionsmängden, g : I I; detta garanterar att följden ej hoppar ut ur intervallet I där g är en kontraktion. Det är också viktigt att I är slutet; detta garanterar att x = limx i I. Bevis. Beviset följer de fyra stegen för ett konstruktivt bevis som vi tidigare nämnt. Steg 1. En algoritm: vi använder fixpunktsiteration. Tag en godtycklig punkt x 0 I och beräkna x i = g(x i 1 ). Steg. Ettbevis avatt {x i } ären Cauchy-följd.Vi måste uppskatta x i x j för j > i. Betrakta först avståndet mellan två på varandra följande tal i följden: x k+1 x k = g(x k ) g(x k 1 ) L x k x k 1. Här har vi utnyttjat att talen x k stannar kvar i I och att g är en kontraktion på I. Därmed fås x k+1 x k L x k x k 1. Eftersom L < 1 innebär detta att x k+1,x k ligger närmare varandra än x k,x k 1. På samma sätt: Genom att upprepa detta får vi dvs. x k x k 1 L x k 1 x k. x k+1 x k L x k x k 1 L x k 1 x k L 3 x k x k 3 L k x 1 x 0, (5.1) x k+1 x k L k x 1 x 0. Betrakta nu x i x j för j > i. Vi får x i x j = x i x i+1 +x i+1 x i+ +x i+ x j +x j x j 1 +x j 1 x j = (x k x k+1 ). En sådan summa kallas för en teleskopsumma eftersom alla termer tar ut varandra utom den första och den sista. Genom att tillämpa triangelolikheten på summan samt använda (5.1) får vi x i x j x i x i+1 + + x j 1 x j = x k x k+1 x 1 x 0 L k. Detta är en geometrisk summa vilken kan beräknas med den välkända formeln: L k = L i (1+L+ +L j i 1 ) = L i1 Lj i 1 L.
4 KAPITEL 5. FIXPUNKTSITERATION Därmed fås (5.) x i x j x 1 x 0 L i1 Lj i 1 L x 1 x 0 L i 1 1 L, eftersom 0 < 1 L j i 1 för j > i. Eftersom L < 1 fås att L i 0 och därmed x i x j 0 då i med j > i. Alltså är x i en Cauchy-följd och vi erhåller en decimalutveckling (reellt tal) x = lim x i, som tillhör I eftersom I är slutet. Steg 3. Bevis av att x är en fixpunkt. Vi ser att g(x i ) g(x j ) L x i x j 0, i,j, så att g(x i ) är en Cauchy-följd. Vi får ett reellt tal som vi betecknar g( x): g( x) = lim g(x i ). Vi måste visa att lim g(x i ) = x så att g( x) = x. Men x g(x i ) = x x i+1 0, i. Detta innebär att lim g(x i ) = x och därmed g( x) = x. Steg 4. Entydighet. Antag att det finns två fixpunkter x 1, x I. Då gäller vilket medför att x 1 x = g( x 1 ) g( x ) L x 1 x. (1 L) x 1 x 0. Men 1 L > 0 så den enda möjligheten är x 1 x = 0. Med andra ord: x 1 = x. Så det finns bara en fixpunkt i I. Notera att entydigheten hos x medför att vi erhåller samma gränsvärde oavsett vilken startpunkt x 0 vi väljer. Exempel. Vi har sett att g(x) = /x är en kontraktion på det slutna intervallet I = [, ). Men x 0 = 3 ger x 1 = /3 I så följden hoppar ut. Följden hoppar fram och tillbaka mellan 3 och /3; den konvergerar inte. Exempel. Vi har sett att g(x) = x/ + 1/x är en kontraktion med L = 1/ på I = [1,]. Vi visar att g : I I. Om x I = [1,], dvs., 1 x, så är x/ 1 och 1/x 1 så x/+1/x 1+1 =. Dessutom så är x/ 1/ och 1/x 1/ så x/+1/x 1. Därmed har vi visat att g(x) I = [1,]. Kontraktionsavbildningssatsen säger att g har en entydig fixpunkt i I = [1,]. Vilken är det? 5.3 När avbryter vi iterationen? Vi avbryter iterationen när avståndet mellan två på varandra följande tal är mindre än en given tolerans, x i x i+1 TOL. Vi förväntar oss då att ett visst antal decimaler har fixerats i decimalutvecklingen x. Som ett exempel, med x i x i+1 10 N 1 förväntar vi oss att approximativt N decimaler fixerats.
5.4. HUR SNABB ÄR KONVERGENSEN? 5 Detta rättfärdigas genom beräkningen (med j > i som vanligt) x i x j x k x k+1 x i x i+1 L k i = 1 Lj i 1 L x i x i+1 1 1 L x i x i+1, vilken görs på samma sätt som (5.) men utnyttjar x k+1 x k L k i x i x i+1 istället för (5.1). Därmed fås eller, genom att låta j x i x j 1 1 L x i x i+1 1 1 L TOL, j > i. x i x 1 1 L x i x i+1 1 1 L TOL. Så antalet fixerade decimaler efter i steg bestäms av 1 1 L TOL. Notera att detta tal är större än TOL, mycket större om L är nära 1, så vi får färre decimaler än TOL på egen hand indikerar. Anledningen till detta är att vi betraktar residualen x i x i+1 = x i g(x i ) vilken mäter hur väl x i satisfierar ekvationen x g(x) = 0. Storleken hos residualen förstoras sedan med faktorn 1 1 L när vi använder den för att uppskatta felet i x i. 5.4 Hur snabb är konvergensen? Från konstruktionen av följden x i fås x i x = g(x i 1 ) g( x) L x i 1 x. Felet minskar därmedmed faktornl < 1ivarje steg.ju mindre L är,ju snabbareärkonvergensen. Detta kallas linjär konvergens. Bisektionsalgoritmen konvergerar också linjärt: felet minskar med faktorn 1/ i varje steg. Exempel. För g(x) = x x /+1 på I = [1,3/] har vi L = 1/. Detta följer ur g(x) g(y) = (1 1 (x+y))(x y). Här är x+y 3 så att 1 1 1 (x+y) 0 med absolutbelopp 1 1 (x+y) 1/. Om vi beräknar ett antal iterationer i Matlab med x 0 = 1 och för varje iteration beräknar x i så ser vi att felet minskar approximativt med en faktor 1/ i varje steg. Detta är vad jag fick. Den första kolumnen innehåller x i och den andra x i. 1.00000000000000 0.414135637310 1.50000000000000 0.0857864376690 1.37500000000000 0.039135637310 1.4968750000000 0.0154739376690 1.4076843617188 0.006593601 1.41689674509689 0.00683187380 1.41309855196381 0.0011150104099 1.4146747931870 0.0004613080961 1.414040794944 0.0001911544365 1.4149785787 0.00007916048478 Notera att beräknas med Matlab-funktionen sqrt() vilket också är en approximation men med cirka 16 korrekta decimaler. Så vi kan använda den för att testa noggrannheten hos vår beräkning.
6 KAPITEL 5. FIXPUNKTSITERATION Konvergensen är ibland mycket snabbare än detta. Som exemplet g(x) = x/ + 1/x visar. Beräkna och testa detta själv!! Detta är vad jag fick: som ovan så innehåller den första kolumnen x i och den andra x i. 1.00000000000000 0.414135637310 1.50000000000000 0.0857864376690 1.41666666666667 0.004531049357 1.414156867451 0.000001390141 1.414135637469 0.00000000000159 1.414135637309 0.00000000000000 1.414135637309 0.00000000000000 1.414135637309 0.00000000000000 1.414135637309 0.00000000000000 1.414135637309 0.00000000000000 Det går i själva verket att visa att i detta fall x i x K x i 1 x, där K är ett tal. Detta kallas kvadratisk konvergens och innebär att felet minskar med en faktor somärproportionellmotfeletsjälvt.såkonvergenshastighetenökardåx i närmarsig x.vikommer att lära oss längre fram varför konvergensenblir så snabb i detta fall. Se Kapitel 6 Newtons metod. 5.5 Fördelar och nackdelar En nackdel med fixpunktsiteration är att det ofta är svårt att hitta ett lämpligt intervall I där iterationen konvergerar. Detta är vanligen mycket enkelt för bisektionsalgoritmen: plotta bara funktionen och välj två punkter där funktionen har motsatt tecken. Det finns två fördelar: 1. fixpunktsiteration kan konvergera mycket snabbt. Bisektionsalgoritmen konvergerar alltid linjärt och aldrig snabbare än det.. fixpunktsiteration fungerar också för system av ekvationer. Detta gäller ej för bisektionsalgoritmen. Vi kommer att återkomma till dessa fördelar längre fram. Övningar 1. Skriv om ekvationen f(x) = x x +1 = 0 som en fixpunktsekvation på tre olika sätt.. Ekvationen f(x) = x 5x+5 = 0 kan skrivas som en fixpunktsekvation x = g(x) = x 5 +1. Visa att g : I I är en kontraktionsavbildning på I = [1,]. Notera att du måste visa två saker: i) g(x) I då x I ii) g(x) g(y) L x y, x,y I, där L < 1 3. Ekvationen f(x) = x 3 7x+ = 0 kan skrivas som en fixpunktsekvation x = g(x) = x3 + 7. Visa att g : I I är en kontraktionsavbildning på I = [0,1]. 4. Antag att vi vill beräkna 3 A. Vi kan då lösa ekvationen f(x) = x 3 A = 0. a) Visa att ekvationen kan skrivas om som en fixpunktsekvation x = g(x) = x+a/x 3. b) Betrakta fallet A = 10. Visa att g : I I är en kontraktionsavbildning på I = [,3]. c) Kan du generalisera a) till beräkning av n A, för ett godtyckligt naturligt tal n?
5.5. FÖRDELAR OCH NACKDELAR 7 Svar 1. T.ex. x = g 1 (x) = x 1, x = g (x) = x+1, x = g 3(x) = x.. L = 4 5 3. L = 3 7 4. b) L = 3 går bra c) x = g(x) = (n 1)x+A/xn 1 n