NUMPROG, 2D1212, vt 2006 Föreläsning 7, Numme

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