Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018
1. Inledning Inom matematiken är det ofta intressant att finna nollställen till en ekvation f(x), det vill säga värden på x sådana att f(x)=0. Då f(x) är ett polynom av lägre gradtal går detta att göra analytiskt, men för polynom av högre gradtal eller mer komplexa funktioner som tex funktioner av e x eller trigonometriska funktioner är det ofta inte möjligt. Därför finns ett antal numeriska metoder för att uppskatta rötterna. Det generella konceptet som de flesta numeriska metoder för ekvationslösning bygger på är att utgå ifrån en eller flera startgissningar, för att sedan med olika tillvägagångssätt förfina gissningen så att ett värde närmre och närmre den verkliga roten uppnås. Med andra ord säger man att de numeriska värdena konvergerar mot det analytiska värdet med ökande värde på antalet iterationer n. Här talar man också om konvergenshastighet och konvergensordning, som är mått på hur snabbt metodens uppskattade värden konvergerar mot det verkliga värdet. Ett exempel på en numerisk metod för ekvationslösning är Sekantmetoden. Det är denna metod som skall undersökas i denna rapport. 2. Frågeställning Sekantmetoden kommer att undersökas genom att skriva en MATLAB-kod för metoden. Syftet med rapporten är att besvara följande fråga: - Är konvergensordningen som förväntad? 3. Teori 3.1 Sekantmetoden Sekantmetoden utgår ifrån två startgissningar x0 och x1 för att beräkna ett numeriskt värde till ekvationen f(x)=0. Metoden har följande utseende: x x "#$ = x " f(x " ) " x "+$ f(x " ) f(x "+$ ) med konvergensordning $# - 1,6.. Ändamålet med sekantmetoden är att ta de två startvärdena och dra en sekant genom dem. Sedan väljs nästa punkt som sekantens skärningspunkt med x-axeln (se bild 1). Därefter utförs en ny iteration med x1 och x2 som startvärden. Iterationerna upprepas tills en lösning med önskad noggrannhet uppnås. Bild 1: Grafisk illustration av Sekantmetoden 2
3.2 Metodoberoende feluppskattning För att avgöra noggrannhet för en metod kan Metodoberoende feluppskattning användas. Förutsatt att f(x) är kontinuerligt deriverbar på (a, b) och x, x (a, b), finns en punkt ξ (a, b) sådan att x x = 9(: ) 9;(<). 3.3 Jämförelse av Sekantmetoden med Newton-Raphsons metod Fördelen med Sekantmetoden är att det inte är nödvändigt att beräkna derivatan till funktionen, och att den är relativt snabb. Metoden kan ses som en förenklad version av systermetoden Newton-Raphsons metod, som använder sig av derivatan. Det är intressant att jämföra de två metoderna, och därför presenteras även formeln för Newton-Raphsons metod här nedan: x "#$ = x " f(x ") f (x " ) Vid jämförelse av de två metoderna framgår det att kvoten i Sekantmetoden således är en approximation av derivatatermen i Newton-Raphsonmetoden, det vill säga 3.4 Konvergensordning x " x "+$ f(x " ) f(x "+$ ) 1 f (x " ) En talföljd {x " } med gränsvärde x* då i har konvergensordning p om x "#$ x < C x " x F 4. Lösning För att avgöra noggrannheten har metodoberoende feluppskattning använts. Som framgår av teorin använder sig dock metodoberoende feluppskattning av funktionens derivata. Då en av Sekantmetodens stora fördelar är att derivatan inte behöver beräknas, har det för den metodoberoende feluppskattningen gjorts samma uppskattning av derivata som i avsnitt 3.3. Önskad noggrannhetsordning låts sedan vara en inparameter i MATLAB-funktionen. x x x " x "+$ f(x ) G f(x " ) f(x "+$ ) G För att kontrollera konvergensordningen har man som utgångspunkt använt formeln presenterad i föregående kapitel. För att undersöka konvergensordningen har tre olika funktioner betraktats: f $ (x) = x. 6x + 5 Hf. (x) = x - + x 2 f L (x) = x. 2x + 1 Det är känt analytiskt att f $ (x) har en enkelrot i x = 5, att f. (x) har en enkelrot i x = 1 och att f L (x) har en dubbelrot i x = 1. 3
Den egenskrivna MATLAB-funktionen mysol har använts för att finna nollställen till de tre ovanstående ekvationerna. För samtliga har noggrannheten angetts som 10 +-. För f $ (x) valdes startgissningarna x N = 4 och x $ = 4,2. För f. (x) och f L (x) användes startgissningarna x N = 0,5 och x $ = 0,6. Felen e Q = x Q x beräknades sedan för k = 2, 3,... Utifrån definitionen av konvergensordning i avsnitt 3.4 kan det antas att det finns konstanter C och p, där p är konvergensordningen, sådana att e Q#$ C e Q F. Genom att logaritmera båda led erhålls log e Q#$ log C + p log e Q. För att uppskatta konvergensordningen plottades log e Q#$ som funktion av log e Q och med hjälp av MATLAB:s inbyggda funktionalitet Basic Fitting anpassades en rät linje till dessa funktionsvärden. Konvergensordningen p bestämdes som riktningskoefficienten för denna linje. 5. MATLAB-kod Koden för MATLAB-funktionen mysol som finner ett nollställe till funktionen f(x) med önskad noggrannhet tol utifrån startgissningarna x N och x $ presenteras i Figur 1. MATLAB-skript för att finna nollställen till funktionerna f $ (x), f. (x) och f L (x) med startgissning och noggrannhet enligt kapitel 4 samt beräkna och plotta felen e Q som beskrivet i kapitel 4 presenteras i Figur 2-4., Figur 1. MATLAB-kod för funktionen mysol 4
Figur 2. Figur 3. Figur 4. 5
6. Resultat Resultatet för f $ (x) ses i figur 5. Med hjälp av Basic Fitting erhölls konvergensordningen p = 1,6143. Figur 5. Uppskattning av konvergensordningen med f 1 Resultatet för f. (x) ses i Figur 6. Den erhållna konvergensordningen är p = 1,6065. Figur 6. Uppskattning av konvergensordningen med f 2 Resultatet för f L (x) ses i Figur 7. Konvergensordningen som erhölls är p = 1,0004. 6
Figur 7. Uppskattning av konvergensordningen med f 3 7. Diskussion Konvergensordningen som erhållits för f $ och f. stämmer mycket väl med den förväntade konvergensordningen p 1,6. För f L blev konvergensen endast linjär. Eftersom f L till skillnad från de två övriga funktionerna inte har en enkelrot utan en dubbelrot är det rimligt och väntat att konvergensordningen är lägre i detta fall. Detta därför att derivatan i en dubbelrot alltid är noll. För att undersöka om konvergensen alltid är linjär då skulle fler fall behöva undersökas. Trots att samma noggrannhet använts i alla tre testfall är det stor skillnad i hur många iterationer som krävts för att uppnå den noggrannheten. För f $ finns endast fyra mätpunkter att utgå ifrån för att bestämma konvergensordningen, medan det för f L finns 24. För att uppnå större säkerhet i resultaten kan nya tester genomföras där noggrannheten och/eller startgissningarna anpassas för att få fler mätvärden. Även tester av andra funktioner kan genomföras för att verifiera resultaten. Till exempel vore det intressant att undersöka funktioner av andra typer än polynom. 8. Svar Undersökningen ger stöd för att konvergensordningen för sekantmetoden, när den appliceras på enkelrötter, är p 1,6. 7