stefan@it.uu.se Exempel x f ( x = e + x = 1 5 3 f ( x = x + x x+ 5= 0 f ( x, y = cos( x sin ( x + y = 1 Kan endast i undantagsfall lösas exakt Kan sakna lösning, ha en lösning, ett visst antal lösningar eller oändligt många lösningar Löses genom att formulera om till f ( x = ex + x 1= 0 f ( x, y = cos( x sin( x + y 1= 0 och beräkna nollställen Direkta och iterativa metoder En direkt metod är en metod där man med ändligt antal steg hittar exakt lösning om man räknar för hand (i exakt aritmetik När man räknar på dator blir det exakt upp till noggrannhet i indata eller ε M Exempel på en direkt är Gausselimination 1
Direkta och iterativa metoder För icke-linjära ekvationer finns inga direkta metoder! Istället iterativa metoder Börja med en startgissning x 0 och använd någon metod för att successivt leta sig fram närmare och närmare lösningen x Ger en sekvens av approximationer 1, x, x3, till den exakta lösningen x Om x k närmar sig lösningen och x = x så säger man att lösningen konvergerar, annars divergerar den Ickelinjära ekvationer => iterativa metoder Felet vid iteration k e = x x k k eller x x e = k k x absolut fel relativt fel Problem Exakta lösningen x inte känd! Istället används vanligen ek = x x k 1 eller e k k = 1 dvs man använder två på varandra följande steg Viktigt med snabb konvergens. Konvergenshastighet definieras e r lim k+ 1 = C lim e r k+ 1 = C ek, C konstant k ek k - r = 1, C<1 => linjär konvergens - r > 1 => superlinjär konvergens - r = => kvadratisk konvergens -
Tolkning? Exempel Iteration nr 1 3 4 5 Uppmätt fel e k Linjär konv Kvadratisk konv 10-1 0.05 0.05 0.015 0.0063 10-1 10-10 -4 10-8 10-16 Aldrig så rena siffror som i exemplet Gäller dessutom egentligen då k, dvs när man börjar närma sig roten. Kan ta lite tid innan metoden börjar konvergera alltså inte säkert det konvergerar på det sättet i början. Ett par metoder Bisektionsmetoden Exempel f ( x 0 < 0 Bestäm startintervall t ex x 0 =1 x 1 = Obs måste vara olika f ( x tecken på, 1 > 0 f ( x 0 f ( x 1 Vet då att det finns ett nollställe på intervallet x 1 3
x x 1 Halvera + x x 1 = = 1.5 Välj det intervall som innehåller teckenbyte: f ( x 1 > 0 f ( x < 0 Välj högra intervallet. Vet då att x [ x 1, x ] x x 3 x 1 Halvera x + x x 1 3 = = 1.75 Välj det intervall som innehåller teckenbyte: f ( x 3 > 0 f ( x < 0 Välj vänstra intervallet. Vet då att x [ x, x 3] x x 3 x 1 x 4 Halvera x + x x 3 4 = = 1.65 Välj det intervall som innehåller teckenbyte: f ( x 3 > 0 f ( x 4 < 0 Välj högra intervallet. Vet då att x [ x 3, x 4] 4
Upprepa tills tillräckligt nära Bisektionsmetoden är säker (hittar alltid en rot förutsatt att det finns en i startintervallet långsam Linjär konvergens med C = 1/ Newton-Raphsons metod Exempel f ( x 0 Börja med startgissning t ex x 0 =1. Beräkna nollstället till tangenten i f ( x 0 => x 1 x 1 f ( x 1 Beräkna nollstället till tangenten i f ( x 1 => x x x 1 5
f ( x Beräkna nollstället till tangenten i f ( x => x 3 Ligger nu mycket nära nollstället xx 3 x 1 Newton Raphsons metod säker? f ( x 0 x 0 Newton Raphsons metod är osäker Antag startgissning x 0 =1 Hamnar långt från roten snabb kvadratisk konvergens (ibland kubisk Härledning Newton-Raphsons metod Taylorutveckla kring x k och ta med termer upp till 1:a derivata (linjära termer Hitta nollstället till detta uttryck f ( + h = f ( + hf ( x + h k f ( x + = 0 k f ( + hf ( = 0 f ( + ( + 1 f ( = 0 h f ( x k + x 1 k+ 1= f ( f ( x k 6
Newton-Raphsons metod Ganska mycket kan gå fel Hamnar nära eller i extrempunkt => f ( x k blir 0 eller nästan 0 Svårt att förutse vilket nollställe som hittas, någon punkt hamnar på en plats så att tangenten skjuter iväg till ett annat nollställe Kan även hamna i cykliska förlopp studsar hela tiden mellan samma sekvens av värden f ( = 0 Newton-Raphsons metod Man kan visa att N-R konvergerar om är tillräckligt nära lösningen Hur kommer man tillräckligt nära? Koppla in Bisektionsmetoden: 1. Bestäm ett intervall där nollstället finns. Kör N-R 3. om konvergens så klart annars (N-R t ex hamnat utanför intervallet koppla in Bisektion några steg för att minska intervallet 4. Gå till punkt 1 med nytt intervall Kombinerar N-R snabbhet och Bisektions säkerhet Hur ska man avgöra konvergens? x Stoppvillkor vanligen k + 1 < tol x tol ges av användaren k+ 1 där Bör även kolla att fx ( k 0 I pseudokod blir det fel = 1; while (fel > tol utför f ( + 1 f ( fel = abs( + 1 end 7
Finns mer striktare uppskattningar av fel, t ex f ( x x x k k min f ( ζ på sin beräknade lösning, där ζ väljs i ett intervall där både x och x k ingår. Räcker vanligen med en grov uppskattning av f (ζ Uppskattningen säger att om diffus skärning så kan felet vara stort (derivatan blir liten Detta motsvarar stort konditionstal för linjära system 8