NUMPROG, 2D1212, vt 2006 Föreläsning 7, Numme-delen för M1 Numerisk lösning av icke-linjära ekvationer Ekvationer kan delas in i linjära/icke-linjära, skalära/system. Kap 3 i PP behandlar skalära icke-linjära ekvationer, vilka kan formuleras f (x) = 0, där f är en deriverbar funktion Lösningen till denna ekvation kallas roten α eller nollstället till funktionen f . En ekvation kan ha flera rötter Exempel: x2 + 2x − 5 = 0 (polynomekvation) sin (x) + cos (x) = √1 2 Ovanstående två ekvationer kan lösas exakt. Nedanstående ekvationer kan inte lösas exakt: ex − 2x2 = 0 (1) 4k sin (ϕ) − cos (ϕ) 5 − 4 cos (ϕ) = 0, 0≤k<∞ (2) Hur många rötter har ekvationerna? Hur beräknar vi approximationer till rötterna? 1 Numeriska Metoder för lösning av f (x) = 0 Newtons metod, Fixpunktsmetoden, Intervallhalveringsmetoden Newtons metod, PP 3.3B Geometrisk härledning ger följande iterationsformel, (iteration betyder upprepning): xk+1 = xk − hk , där hk = f (xk ) , f (xk ) x0 är ett givet startvärde Samma formel kan härledas med ett analytiskt resonemang Vi visar med handräkning formelns tillämpning på ekvationen (1). Lämpligt är att först plotta funktionen för att se ungefär var roten (rötterna) ligger. Ett Matlab-program för lösning av samma problem kan se ut på följande sätt: x=1;h=1; while abs(h)>1e-5 h=(exp(x)-2*x*x)/(exp(x)-4*x); x=x-h end Genom att utvidga ovanstående program kan vi få ut mer information om metodens egenskaper I en tabell skriver vi ut 1) iterationsindex k, 2) iteraten xk , 3) korrektionerna hk och 4) felet, dvs ek = α − xk , där α har bestämts noggrannt. 2 Ur tabellen ser vi att ek+1 ≈ Ke2k , dvs från en iteration till nästa får vi nästan dubbelt så många siffrors noggrannhet. Denna snabba konvergens kallas kvadratisk konvergens, vilket är en egenskap som Newtons metod har. Genom att variera startvärde x0 ser vi också att antalet iterationer som krävs för att uppnå en viss noggrannhet, blir färre ju närmare x0 ligger den sökta roten α. Fixpunktsiteration, PP 3:3D En ekvation på formen f (x) = 0 kan skrivas om på formen x = φ(x) på oändligt många olika sätt. Exempel: ex − 2x2 = 0 kan t ex skrivas på formen 1) 2x2 = ex , ⇒ x = ex /2 2) ex = 2x2, ⇒ x = ln(2x2) Fixpunktsmetoden är baserad på denna omskrivning, som definierar en iterationsformel, där φ kallas iterationsfunktionen: xk+1 = φ(xk ), x0 givet startvärde Vi testar denna metod på den första av de två omskrivningarna ovan x0=1;differens=1; while abs(differens)>1e-5 x1=sqrt(exp(x0/2)); differens=abs(x1-x0); x0=x1 end Vi får en talföljd som konvergerar mot en av rötterna. Metoden konvergerar inte lika snabbt som Newtons metod. Fixpunktsiteration är linjärt konvergent. När konvergerar denna talföljd mot en rot α? Jo, när derivatan av φ uppfyller villkoret |φ(x)| < 1 i närheten av roten α. Bevis för detta ges i 3 läroboken PP. Bevis ges även för att Newtons metod konvergerar kvadratiskt. Intervallhalveringsmetoden, PP 3:3A Denna metod kan användas för att bestämma ett startvärde till Newtons metod eller Fixpunktsiteration. Enklast är dock att först plotta funktionen y = f (x) och se var nollställena ligger. Funktioner i Matlabs bibliotek som bestämmer rötter till en ekvation Funktionen fzero bestämmer en rot till en ekvation f (x) = 0 Samtliga rötter till en polynomekvation bestäms av funktionen roots. Om ekvationen är av gradtal n och skrivs på formen c1 xn + c2 xn−1 + ..... + cn x + cn+1 = 0 så kallas c1 , c2 , ..., cn+1 polynomets koefficienter. Exempel: Polynomet x3 − 2x + 1 = 0 är givet. Dess koefficienter kan lagras i en Matlab-vektor, som sedan används av funktionen roots coeff=[1 0 -2 1]; roots(coeff ) 4