TANA09 Föreläsning 3 Tillämpning - Ry Trcing och Bézier Ytor z = B(x, y) q o Ekvtionslösning Tillämpning Existens Itertion Konvergens Intervllhlveringsmetoden Fixpuntsitertion Newton-Rphsons metod Anlys och Feluppskttning Tillämpning - Kvdrtrots implementering x y En ljusstråle med ursprung i o och med riktning q belyser en polygon Vr skär linjen p(t) = o+t q ytn z = B(x, y)? 8 november 2016 Sid 1 / 23 8 november 2016 Sid 2 / 23 Algoritm Vi löser problemet med följnde steg Det ytvsnitt som hör till en viss polygon beskrivs v ett tredjegrdspolynom z = B(x, y), där x, y, och z är de lokl koordintern Uttryck vektorern o och p i de lokl koordintern Icke-Linjär Ekvtioner Vi vill lös en icke-linjär ekvtion f(x) = 0 f(x) x Lös en tredjegrdsekvtion, f(t) = o z + tq z B(o x + tq x, o y + tq y ) = 0 Spline ytor och kurvor kommer sist i kursen! Exmensrbete, Jokim Löv, 2006 Implementerde dett på GPU Frågor Existens och Entydighet? Br numerisk metoder? Feluppskttning? Vi ntr tt vi kn beräkn f(x) och eventuellt f (x) 8 november 2016 Sid 3 / 23 8 november 2016 Sid 4 / 23
Existens Ekvtionslösning och Itertionsmetoder Sts Om f(x) är kontinuerlig på intervllet [, b] och c [f(), f(b)] då finns det ett x [, b] sådnt tt f(x) = c Metod Givet en strt pproximtion x 0 konstruerr vi en följd {x k } k=1 Metoden är konvergent om f() f(x) = 0 b f(b) x k x, s k, där x är en rot till ekvtionen f(x) = 0 Lemm Antg tt f(x) är kontinuerlig Om f()f(b) < 0 så finns det en rot x till ekvtionen f(x) = 0 i intervllet (, b) En strt pproximtion fås genom grovloklisering Andrgrds ekvtioner x 2 + x+c = 0 kn löss med en explicit formel Det går inte för de llr flest ekvtioner Dett ger ett br kriterium för existens v lösning till f(x) = 0 8 november 2016 Sid 5 / 23 8 november 2016 Sid 6 / 23 Intervllhlveringsmetoden Exempel Lös ekvtionen f(x) = x e x = 0 med intervllhlveringsmetoden Vi vet tt 055 < x < 06 f() c f(c) b f(b) k k b k c k f(c k ) 0 055 060 0575 123 10 2 1 055 0575 05625 728 10 3 2 05625 0575 056875 25 10 3 20 0567143250 056714344 0567143345 85 10 8 Det finns säkert en rot i intervllet (, b) om f()f(b) < 0 Dett är ett strt villkor I vrje steg beräknr vi c = 1 2 (+b) och f(c) Fortsätt itertionen med ntigen (, c) eller (c, b) 8 november 2016 Sid 7 / 23 Välj x = c 20 ± 20+b 20 2 = 0567143345 ± 95 10 8 Metoden konvergerr lltid men är långsm! Lämplig tt nvänd för grovloklisering v en rot x Antlet itertioner beror inte på funktionen Br på noggrnheten 8 november 2016 Sid 8 / 23
Fixpuntsitertion (i) Metod: x k+1 = e x k (ii) Metod: x k+1 = log(x k ) Definition En fixpunktsitertion kn skrivs på formen x k+1 = ϕ(x k ), k = 0, 1, 2, En fixpunkt x till itertionsfunktionen ϕ(x) stisfierr x = ϕ(x ) Helst skll en fixpunkt x vr en rot till ekvtionen f(x) = 0 Exempel Vi vill lös f(x) = x e x = 0 och prövr metodern (i) x k+1 = e x k = ϕ 1 (x k ) (ii) x k+1 = log(x k ) = ϕ 2 (x k ) Vd händer? 8 november 2016 Sid 9 / 23 k x k 1 057694981 2 056160877 3 057029086 4 056536097 5 056815502 10 056708395 20 056714309 30 056714329 Vi får en rot x 056714329 k x k 1 059783700 2 051443714 3 066468192 4 040844668 5 089539391 6 011049153 7 220281638 8-078973671 Vi får divergens! Hur skll vi vgör om en metod konvergerr eller ej? Konvergenshstigheten? 8 november 2016 Sid 10 / 23 Fixpunktsteori Sts Antg ttϕ(x) hr en reell fixpunkt x smt tt ϕ (x) m < 1 i en omgivning v x Då gäller, om x 0 väljs tillräckligt när x, tt lim x k = x k Sts För en konvergent fixpunktsitertion x k+1 = ϕ(x k ) gäller tt x k+1 x m x k x där x är fixpunkten Dett klls linjär konvergens Bättre med en mindre konstnt m 8 november 2016 Sid 11 / 23 Exempel Vi vill lös ett ekvtionssystem ( ) ( f1 (x f(x) = 1, x 2 ) x = 2 1 + x2 2 1 f 2 (x 1, x 2 ) (x 1 05) 2 + x 2 2 1 och prövr följnde fixpunktsitertion ) = x (k+1) = x (k) f(x (k) ), med x 0 = (04, 12) T k x (k) 1 x (k) 2 x (k) x 0 04000 12000 276 10 1 1-02000 07500 500 10 1 5 02661 08528 117 10 1 10 02034 09652 467 10 2 15 02581 09686 810 10 3 20 02486 09682 143 10 3 Oftst enkelt tt hitt fixpunktsitertioner som konvergerr ( 0 0 ) 8 november 2016 Sid 12 / 23
Newton-Rphsons metod f 0 Exempel Lös ekvtionen f(x) = x e x = 0 Här är f (x) = 1+e x f 1 x 2 x 1 x 0 x k x k f(x k ) 0 0550000000 269 10 2 1 0567089834 838 10 5 2 0567143290 810 10 10 Mycket snbb konvergens Konvergerr lltid mot en enkelrot om strt pproximtionen är br nog Newton-Rphsons metod Givet x 0 beräknr vi en tlföljd x k+1 = x k f(x k) f, k = 0, 1, 2 (x k ) I vrje steg behövs två funktionsnrop (både f(x) och f (x)) Kräver tt vi kn beräkn f (x) 8 november 2016 Sid 13 / 23 8 november 2016 Sid 14 / 23 Konvergenshstighet Seknt metoden Sts Låt{x k } vr den tlföljd som beräkns med Newton-Rphsons metod I det fllet tt metoden konvergerr mot en enkel rot x gäller tt x k+1 x C x k x 2, Vi säger tt konvergensordningen är p = 2 Om det är svårt tt beräkn derivtn f (x) kn vi pproximer med en differenskvot f (x k ) f(x k) f(x k 1 ) x k x k 1 Vi får då Seknt metoden x k+1 = x k f(x k ) f(x k ) f(x k 1 ) x k x k 1 Exempel Antg tt x k+1 x 35 x k x 2 och x 0 x < 05 10 2 Vd betyder det prktiskt? Vd händer om vi hr en dubbel rot? Konvergensordning ungefär p = 17 men br en ny funktionsberäkning i vrje steg Konvergerr mot en enkelrot om strt pproximtionen är br nog 8 november 2016 Sid 15 / 23 8 november 2016 Sid 16 / 23
Feluppskttning Låt x vr en pproximtion v roten x Hur skll felet x x uppsktts? Metodoberoende feluppskttning x x f( x) + f M där f (x) M när roten x Tillämpning - Kvdrtrotsberäkning på dtor Vi vill implementer så effektivt som möjligt på dtor en dtor med IEEE dubbel precisions ritmetik Hur skll vi gör? Lös ekvtionen f(x) = x 2 med Newton-Rphsons metod Välj strt pproximtion x 0 Utnyttj tt är ett normlisert flyttl så 1 < 4 och 1 x < 2 Välj ntl itertioner Vill hfor-loop och intewhile-loop Felet f uppsktts med mximlfelsuppskttningen Oft försummbrt Kontroller hur br noggrnheten blev Vill helst h reltivt fel µ Exempel Vi hr tidigre bestämt en rot x = 056714335 till ekvtionen f(x) = x e x Gör en feluppskttning 8 november 2016 Sid 17 / 23 8 november 2016 Sid 18 / 23 Sts För vrje 0 < x 0 < genererr itertionen en konvergent följd och x k+1 = 1 2 (x k + x k ) lim k x k = Sts Konvergensen är kvdrtisk och x k+1 1 2 (x k ) 2 Strt pproximtion x 0 = 15 ger ett fel x 0 1 2 Alterntivt gör en tbell 10 1000000000000000 15 1224744871391589 20 1414213562373095 25 1581138830084190 30 1732050807568877 35 1870828693386971 Nu blir strtfelet högst x 0 < 012 Större tbell ger färre itertioner Enklre i C++ än i Mtlb Tillgång till bitopertioner 8 november 2016 Sid 19 / 23 8 november 2016 Sid 20 / 23
Mtlb Implementtion Experimentell Felnlys function [x]=squreroot() tble=[1000000000000000 1224744871391589 1414213562373095 1581138830084190 1732050807568877 1870828693386971 2000000000000000]; x=tble(round(2*(-1)+1)); for k=1:4,x=(x+/x)/2;,end; Totlt 4 divisioner och 4 dditioner för tt beräkn Hur stort blir felet? Finns ändligt mång flyttl 1 < 4 Kn test ll fll! 8 november 2016 Sid 21 / 23 x 4 sqrt() [*µ] 2 18 16 14 12 1 08 06 04 02 0 1 15 2 25 3 35 4 Skillnden bs(kvdrtrot()-sqrt()) för 1000 jämt utspridd värden melln 1 och 4 Likhet i 751 fll och skillnd 2µ 249 fll För tt gör en bättre kontroll måste vi kunn beräkn med utökd precision Eller lit på nlysen! 8 november 2016 Sid 22 / 23 Smmnfttning Ekvtionslösning är en viktig del v fler tillämpningr Kn vi beräkn f(x) och f (x) är nästn lltid Newton-Rphsons metod bäst Seknt metoden nästn lik snbb och kräver inte f (x) Mtlbs fzero kombinerr seknt metoden med intervllhlvering (och kvdrtisk interpoltion) Fixpunkts itertion är enkelt tt nvänd men långsmt Används främst då det är svårt tt nvänd ndr metoder 8 november 2016 Sid 23 / 23