Icke-lieära ekvatioer Exempel: Rote till ekvatioe x = cos( x) är lika med x -koordiate för skärigspukte mella kurvora y = x och y = cos( x). Vi ka plotta kurvora på itervallet [,] med följade Matlabkommado x=:.:;plot(x,x,x,cos(x)).9.8.7.6.5.4.3.....3.4.5.6.7.8.9 Vi ser ur figure att ekvatioe har e rot i itervallet [.7,.8]. Vi skall i detta avsitt studera olika sätt att bestämma dea rot mera oggrat. Mer allmät skall vi studera metoder för att lösa ekvatioer av type f ( x ) =, där f atas vara e kotiuerlig reellvärd fuktio av e reell variabel. När så är lämpligt, kräver vi ytterligare regularitetsegeskaper (t.ex. att f är deriverbar) eller att de sökta rote x är e ekelrot (vilket iebär att f '( x ) ). I regel ka e icke-lieär ekvatio f ( x ) = ite lösas aalytiskt dvs. lösige ka ite ages explicit i e formel, som förutom de elemetära räkeoperatioera edast iehåller rotutdragigar. Algebraiska ekvatioer (dvs. ekvatioer där f ( x ) är polyom) ka lösas aalytiskt då gradtalet är midre ä lika med fyra, me ma ka visa, att detta i allmähet ite är möjligt för ekvatioer av högre gradtal. Ite heller lösigar x till trascedeta ekvatioer (som iehåller trascedeta fuktioer som e,si( x ) etc.) ka i allmähet ages explicit. Fuktioe f ( x ) behöver för övrigt ite es vara käd geom ett aalytiskt uttryck, uta ka t.ex. vara defiierad som lösige till e differetialekvatio. I alla dessa fall måste ma aväda umeriska metoder för att lösa ekvatioe.
De grudidé, som de flesta umeriska metoder för ekvatioslösig bygger på, är att först bestämma e grov approximatio x till rote x. Med utgågspukt frå x kostrueras seda e talföljd { } tidigare beräkade tale xk, k x, där varje tal x = i talföljde beräkas utifrå de <. Uder lämpliga förutsättigar kovergerar talföljde mot x (dvs. lim x = x ) och ma erhåller därför sucessivt bättre approximatioer till " rote geom att beräka x, =,,3,..., tills öskad oggrahet uppåtts. E metod som ger e såda talföljd kallas e iteratiosmetod. Vi skall eda beskriva ågra iteratiosmetoder och studera villkor för att talföljdera skall kovergera mot rote. Det är i måga sammahag också öskvärt att talföljde kovergerar sabbt. Vi defiierar därför begreppet kovergeshastighet och udersöker ågra metoder med avseede på detta. Vi diskuterar också feluppskattig och de oggrahet som ka uppås då ma räkar med begräsad precisio. Grovlokaliserig När ma skall lösa e ekvatio måste ma först grovlokalisera rote för att bestämma e begyelseapproximatio x. Detta ka göras i två steg. Geom att plotta grafe y = f ( x) ka vi bestämma ett itervall i vilket rote ligger. Vi ka seda systematiskt förbättra dea grova approximatio med de s.k. itervallhalverigsmetode. Dea metod bygger på att ma succesivt iesluter rote i midre och midre itervall. Exempel: Låt oss betrakta ekvatioe i föregåede exempel. Ekvatioe ka skrivas på forme f ( x ) =, där f ( x) = x cos( x). Vi plottar grafe till f ( x ) i itervallet [,] med Matlabkommadot x=:.:;plot(x,x-cos(x)),grid.5 -.5 -...3.4.5.6.7.8.9
Vi ser att fuktioe f ( x ) har ett ollställe (dvs. att ekvatioe f ( x ) = har e rot) i itervallet [.7,.8]. Detta bekräftas om vi beräkar fuktiosvärdea i ädpuktera på detta itervall. Vi får att f (.7) ".6 < och f (.8). >. Eftersom f ( x ) är kotiuerlig så följer det av satse om mellaliggade värde att det måste fias mist ett ollställe x i itervallet [.7,.8]. Geom att beräka fuktiosvärdet i mittpukte på detta itervall dvs.i x =.75 ka vi u bestämma rote ärmare. Eftersom f (.75). > så måste x ligga i itervallet [.7,.75]. Vi ka seda upprepa dea procedur till öskad oggrahet erhållits. Mittpukte på itervallet [.7,.75] är.75 och eftersom f (.75) ". < så måste x ligga i itervallet [.75,.75] etc. Följade Matlabkod implemeterar itervallhalverig fuctio [a,b]=ithalv(f,a,b,tol) a=a;b=b;fb=feval(f,b);fa=feval(f,a); if fafb> error('f(a) och f(b) måste ha olika tecke') ed while b-a>tol disp([a b]) x=(a+b)/; if feval(f,x)fb> b=x; else a=x; ed ed Om vi sparar ovaståede programrader i e m-fil med amet ithalv.m så ka itervallhalverige utföras med följade kommadorader: f=ilie('x-cos(x)');ithalv(f,.7,.8,.).7.8.7.75.75.75.7375.75.7375.7438.7375.746.739.746 as =.739 Ma iser omedelbart att dea metod alltid kovergerar, me kovergeshastighete är låg. Efter steg med metode så har rote ieslutits i ett itervall av lägde
gåger lägde av ursprugsitervallet. Då vi i vårt exempel startar med itervallet [.7,.8] måste vi t.ex. halvera itervallet 7 gåger för att få ett itervall som är kortare 6 ä (mittpukte i det itervallet är rote med sex korrekta decimaler). Iteratiosmetoder På grud av de lågsamma kovergese bör ma edast aväda itervallhalverigsmetode för att grovlokalisera rote. De metoder vi u skall beskriva har sabbare koverges, vi ka kalla dem iteratiosmetoder för fijusterig. De bygger på att ma med hjälp av dittills beräkad iformatio om fuktioe f och om rotes approximativa läge beräkar e y och oggraare approximatio. Allmät ka ma säga att ju mer iformatio om fuktioe ma aväder desto sabbare koverges ka uppås. Ett aturligt sätt att approximera fuktioe f ( x ) är att dra e taget till kurva y = f ( x). Atag att vi har ett ärmevärde x till rote. Vi drar då tagete till kurva i pukte ( x, f ( x ) och låter tagetes skärigspukt med x -axel vara ästa approximatio x till rote Tagetes ekvatio är y f ( x ) = f '( x )( x x ). Dess skärigspukt med x -axel får f ( x ) vi geom att sätta y = och lösa ut x ur dea ekvatio. Vi får då att x = x f '( x ). Om vi u på samma sätt fortsätter att beräka e y approximatio till rote med f ( x ) utgågspukt frå x så får vi x = x f '( x ). Vi ka seda upprepa dea process till öskad oggrahet har uppåtts. Detta sätt att erhålla approximativa lösigar på ekvatioer kallas för Newto-Raphsos metod. Newto-Raphsos metod f ( x ) x = x,,,,... + f '( x ) = I Newto-Raphsos metod aväder vi alltså både fuktiosvärdet och derivatavärdet är vi beräkar e y approximatio till rote. Vi ka därför förväta oss att metode ger e sabbt kovergerade talföljd. Exempel: Kvadratrote a (där a ) ka bestämmas geom att lösa ekvatioe x a =. Newto-Rahsos metod tillämpad på dea ekvatio ger talföljde a x = + ( x ) + x. Med a = 3 och x = så får vi
= : 3 7 x = ( + ) = 4 = : 7 3 97 x = ( + ) = 4 7 / 4 56 = : 97 3 887 x3 = ( + ) =.7358 56 97 / 56 864 vilket är 3 med 7 korrekta decimaler. Exempel: Låt oss lösa vår illustratiosekvatio x cos( x) = med Newto-Raphsos metod. Med f ( x) = x cos( x) så har vi f '( x) = + si( x). Följade Matlabkod implemeterar Newto-Raphsos metod fuctio xut=nr(f,x,tol) h=.; fx=feval(f,x); fprimx=(feval(f,x+h)-feval(f,x))/h; format log disp(' x_ f(x_) f/fprim') disp([x fx fx/fprimx]) while abs(fx/fprimx)>tol x=x-fx/fprimx; fx=feval(f,x); fprimx=(feval(f,x+h)-feval(f,x))/h; disp([x fx fx/fprimx]) ed format short Om vi sparar ovaståede programrader i e m-fil med amet NR.m så ka Newto- Raphsos metod utföras med följade kommadorader: f=ilie('x-cos(x)');nr(f,.74,^(-9)) x_ f(x_) f/fprim.74.534474.94669858.7398533884.3476.479873.7398533969.758.453 Vi ser att metode i detta fall ger e sabbt kovergerade talföljd. Det är aturligt att fråga sig om metode alltid fugerar lika bra som i detta fall. Ma ka också fudera över hur stor oggrahete är i approximatioe.7398533969. Vi skall återkomma till dessa frågor lite lägre fram.
I ästa avsitt skall vi studera kovergesvillkor och kovergeshastighet hos iteratiosmetoder. För de diskusioe är det praktiskt att skriva Newto-Raphsos metod på forme x = + F( x ), där iteratiosfuktioe är f ( x) F( x) = x f '( x). Observera att ekvatioe x = F( x) är e ekvivalet omskrivig av ekvatioe f ( x ) = (dvs. ekvatioe f ( x ) = ka brigas på forme x = F( x) geom elemetära matematiska operatioer, och tvärtom). Eftersom x är e rot till ekvatioe f ( x ) = så gäller att x = F( x ). Ma säger därför att x är e fixpukt till fuktioe F( x) och iteratiosmetode x = F( x ) kallas för e fixpuktiteratio. + Fixpuktiteratioer ka fås geom att göra adra ekvivaleta omskrivigar ä de som leder till Newto-Raphsos metod. Ekvatioe i exemple ova ka t.ex. skrivas x = cos( x) och motsvarade iteratiosmetod är x cos( x ) = + Följade Matlabkod implemeterar fixpuktiteratio fuctio xut=fixit(f,x,tol) =; format log disp(' x_ x_-f(x_)') while abs(x-feval(f,x))>tol =+; x=feval(f,x); disp(), disp([x x-feval(f,x)]) ed format short Om vi sparar ovaståede programrader i e m-fil med amet fixit.m så ka fixpukiteratioe utföras med följade kommadorader: F=ilie('cos(x)');fixit(F,.74,^(-8)) x_ x_-f(x_).7384685587959 -.3765968.739534694.694933459 3.73885395465 -.468557 4.73973546477.353357353 5.7389585985 -.4789 8
.739854756884.449 9.73985354635 -.6884 3.7398539789.98 3.739858879 -.73456 Det ser ut som de geererade talföljde kovergerar och att skillade frå ett steg till ett aat dvs. x F( x ) reduceras med e faktor som är ugefär.7 i varje iteratio. E aa ekvivalet omskrivig av ekvatioe x cos( x) = är x = arccos( x). Iteratioe x+ = arccos( x ) divergerar emellertid, vilket framgår tydligt av edaståede beräkigar F=ilie('acos(x)');fixit(F,.74,.) x_ x_-f(x_).737759684535 -.3374663978.7463443.558466 3.736883967 -.7435379448 4.743535339.5333738 5.734788658 -.63779443875 6.7488577456.437944344 7.744798945 -.365873573 8.765976444.5386995854 9.76667793487 -.7935999784.7868793.956486367678 Uppebarlige behöver vi aalysera villkore på fuktioe F( x ) i fixpuktiteratioe x+ = F( x ), uder vilka de geererade talföljde kovergerar. Detta görs i ästa avsitt. Kovergesvillkor och kovergeshastighet Ett grudläggade kovergesvillkor för fixpuktiteratioer ges i följade sats.
Sats: Atag att x = F( x ), =,,,..., och att F ( x ) har e reell fixpukt x. Atag + vidare att det fis tal m och sådaa att F '( x) m Om x J så gäller då att <,för alla x " J = { x : x # x $ } a) x J, =,,3,... b) c) lim x = x " x är de eda rote till ekvatioe x F( x) = i itervallet J Bevis: Vi börjar med att bevisa påståedet i a) med iduktio. Atag att x " k J. Medlevärdessatse ger då att x " x = F( x ) " F( x ) = F '( )( x " x ), där k är ett tal mella x k och x. Eftersom x k och Av förutsättigara följer därför att k k " k k " x ligger i itervallet J så ligger äve k i J. x # x = F '( )( x # x ) $ m x # x $ m" < ", k k k # k # så vi har äve xk J. Vi har därmed visat att xk " J # xk " J, för alla k. Eftersom x J så följer det med iduktio att x J, för alla. Låt oss u bevisa påståedet i b). Ur beviset av a) ova så fick vi att xk x " m xk x, för alla k. Upprepad avädig av dea olikhet, med först k = och seda successivt med k =, k =, k = 3 etc., får vi att 3 x x " m x x " m x x " m x 3 x " " m x x "#"$ "#"$ Eftersom m < så följer det att 3 " m x x m x x x x " då ", och vi har därmed visat b). Etydighete i c) visas med ett motsägelsebevis. Atag att x är e aa fixpukt till F( x) i itervallet J dvs. att x J, x x och x = F( x ). Medelvärdessatse och atagadea ger då att x " x = F( x ) " F( x ) = F( )( x " x ) # m x " x < x " x vilket är e motsägelse. Exempel: Låt oss udersöka de två fixpuktiteratioera x = + cos( x ) och x+ = arccos( x ), för ekvatioe x = cos( x ) (se tidigare exempel). I det första fallet har vi F( x) = cos( x). Nära rote x.73985 så är F '( x) = si( x) " si(.73985) ".6736 <. Det följer därför av satse ova att iteratioe kovergerar, vilket vi äve kostaterade experimetellt i föregåede avsitt. I det adra fallet har vi F( x) = arccos( x). Nära rote x.73985 så är F '( x) = " " x.73985
.48 >, vilket iebär att det fis ett itervall I = { x : x " x < } krig rote vilket F '( x ) >. Talföljde kommer därmed ite att kovergera mot rote ises med ett motsägelseargumet: Om det vore så att ågot tal sådat att k lim x " x för x. Detta ka = x så skulle det fias x " x < x " x < för alla k. Detta stämmer emellertid ite ty x " x = F( x ) " F( x ) = F '( ) x " + x > x " x. Som exemplet ova visar så är villkoret F '( x) m <, i e omgivig av rote x, ite bara ett tillräckligt villkor, uta äve ett ödvädigt villkor, för att e fixpuktiteratio skall kovergera mot rote. Ur beviset av satse ser vi också att ju midre talet m är, desto sabbare kovergerar iteratioe. För de första metode i exemplet ova var m.7. Dea metod bör därför ge ågot lågsammare koverges ä itervallhalverigsmetode, vilket också ka utläsas ur resultate i föregåede avsitt. Låt oss u aalysera kovergeshastighete hos Newto-Raphsos metod. I de metode f ( x) är F( x) = x f '( x) och därmed f ( x) f ''( x) F '( x) = ( f '( x)). Om ma käer till ett litet itervall där rote ligger är det ofta lätt att verifiera att kovergesvillkoret för Newto- Raphsos metod är uppfyllt: f ( x) f ''( x) F '( x) = m ( f '( x)) < Eftersom f ( x ) = så är äve F '( x ) =, så Newto-Raphsos metod bör kovergera mycket sabbt är ma väl kommit ära rote. Låt oss udersöka kovergese hos metode i mer detalj. Som tidigare har vi x+ x = F( x ) F( x ). Istället för att aväda medelvärdessatse så ka vi Taylorutveckla F( x ) krig x : F ''( ) F( x ) = F( x ) + F '( x )( x " x ) + ( x " x ) där ligger mella x och x. Eftersom F '( x ) = så följer att F ''( ) x " x = F( x ) " F( x ) = + ( x x ) C x x " # ", för ågot C. Detta visar att felet i Newto-Raphsos metod i pricip kvadreras i varje steg. Speciellt kovergerar Newto-Raphsos metod sabbare ä fixpukiteratioer i allmähet. För att jämföra kovergeshastighete hos olika iteratiosmetoder iför vi följade defiitio. Defiitio: Låt { } x vara e talföljd som kovergerar mot ett tal x, och sätt = = x " x. Talföljdes kovergesordig sägs vara p, om p är det största tal + som är sådat att lim = C < #. Talet C kallas för de asymptotiska "# p
felkostate. Om p = sägs kovergese vara lieär och om p = kovergese vara kvadratisk. sägs Ofta säger vi att e iteratiosmetod har kovergesordige p om de geererar kovergeta talföljder med dea kovergesordig. Fixpuktiteratioer i allmähet har lieär koverges med asymptotisk felkostat F '( x ). Newto-Raphsos metod har kvadratisk koverges och dess asymptotiska felkostat är F x = f x. ''( ) ''( ) f '( x ) Exempel: Atag att e iteratiosmetod geererat e talföljd där x = + x,,,3,... 3 = med x =. Vi ser direkt att x så x =. Låt oss u udersöka kovergeshastighete hos dea talföljd. Vi har / 3 p om p + x+ " x " $ # > = = = x p p p % &, då " x " x 3 ' / 3 om p = så kovergese är lieär med asymptotisk felkostat 3. Det skall avslutigsvis påpekas att i praktike bryr ma sig ite om att kotrollera kovergesvillkoret F '( x) m < i förväg, eftersom ma upptäcker evetuell diverges vid själva iteratioe. Feluppskattig När ma beräkar approximatioer till e rot x med hjälp av ågo iteratiosmetod, görs avrudigsfel. Det framgår dock av fixpuktsatse ova att så läge som ma ite gör stora fel (så att ma hamar utaför itervallet J ) så har dessa fel ige iverka alls på de slutliga oggrahete. Ma brukar säga att iteratiosmetoder är självkorrigerade. Kovergesordige hos e iteratiosmetod ger e uppfattig om felets uppförade asymptotiskt, dvs. efter ett stort atal steg. I praktike måste ma dock avbryta iteratioe efter ett ädligt atal steg, och varke kovergesordige eller de asymptotiska felkostate ger oss upplysig om hur stort felet är. Ett sätt att uppskatta felet i e approximatio x till e rot medelvärdessatse. Medelvärdessatse ger ämlige att f ( x ) = f ( x ) " f ( x ) = f '( )( x " x ) där ligger mella x och ära x. Om x är e ekelrot så är x erhåller vi ur f '( x ), och om x ligger x så är äve f '( ) " ( f ' förutsättes kotiuerlig). Vi får således att
Om u f '( x) M för alla x ära f ( x ) x " x = f '( ) x så får vi följade feluppskattig f ( x ) x x " M Dea feluppskattig gäller oberoede av vilke metod som aväts för att beräka ärmevärdet och kallas därför för metodoberoede feluppskattig. Exempel: Vi har löst ekvatioe f ( x ) =, där f ( x) = x cos( x), med olika metoder i tidigare avsitt och kommit fram till att rote bör vara ugefär.739856. Vi skall u udersöka hur oggra dea approximatio är. Med x =.739856 så har vi 8 f ( x ) " 4.5# och f '( x ) = + si( x ).67. Nära rote är därför f '( x ).6 så de metodoberoede feluppskattige ger att 8 4.5" 8 7 x x # #.9" #.5".6 dvs. x =.739856 är e approximatio till rote x med 7 korrekta decimaler. Om ma avät fixpuktiteratio för att erhålla ett ärmevärde till e rot så ka ma uppskatta felet på ytterligare ett sätt. Ur beviset av fixpuktsatse framgår ämlige att x x " m x x. Exempel: I ett tidigare avsitt löste vi t.ex. ekvatioe x cos( x) = geom att utföra fixpukiteratioe x = F( x ), där F ( x ) = cos( x ) och x =.74. Vi vet frå + itervallhalverigsmetode att x [.75,.75]. Eftersom F '( x) = si( x) si(.76).7, för alla x [.75,.76], så följer det att F '( x ).7, för alla { :. } x J = x x " x <. Startapproximatioe x =.74 ligger i J så vi får uppskattige x x ".7.74 x ".7 #.. Efter 3 iteratioer erhöll vi tidigare ärmevärdet x =.73985. Vi ser u att felet i dea approximatio är 3 5 4 ".7 #. ".58# ".5# så x =.73985 är ett ärmevärde till rote x med 4 korrekta decimaler.
Laboratioe med Matlab( Java) Aväd )itervallhalverigsmetode ) fixpuktiteratiosmetod 3)ewtosraphsos metod För att lösa följade ekvatioer a)x 4 = 4 x b) cos x = x c) x + 3 = x d)e x = l x + Glöm ite att rita via Matlab Kommetera dia resultat t.ex vilke metode som är lämplig ( sabbbast, hur stor är felet)