Teknisk Beräkningsvetenskap I Tema 3: Styvhetsmodellering av mjuk mark med icke-linjära ekvationer Eddie Wadbro 18 november, 2015 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (1 : 37) Innehåll I Icke-linjära ekvationer och system I Anonyma funktioner Matlab I Konvergenshastighet I Newtons metod I Fixpunktsiteration I Minstakvadratproblem Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (2 : 37) Icke-linjära ekvationer I Många beräkningsproblem är till sin natur icke-linjära I Ex.: Eulers ekvationer i gasdynamiken (det aerodynamiska problem som diskuterades i inledningen av första föreläsningen) blir, efter diskretisering, ett mycket stort system av icke-linjära ekvationer som beskriver tryck, densitet och hastigheter i noderna I Linjära ekvationssystem kan i princip lösas för hand. För stora problem behövs datorer I Icke-linjära ekvationer kan sällan lösas exakt för hand. Det finns ingen “formel” för lösningen i allmänhet. Det behövs numeriska metoder även i det skalära fallet. Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (3 : 37) Icke-linjära system, exempel x2 Exempel, sid. 94 i kursboken: 4x12 + 9x22 − 36 = 0 16x12 − 9x22 − 36 = 0 ska lösas för x1 ≥ 0, x2 ≥ 0 x1 Ovanligt exempel: kan lösas för hand! Observera att problemet är linjärt i y1 = x12 , y2 = x22 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (4 : 37) Icke-linjära system Ett system med n ekvationer och n okända skrivs generellt f1 (x1 , . . . , xn ) = 0 f2 (x1 , . . . , xn ) = 0 .. . fn (x1 , . . . , xn ) = 0 System ovan kan skrivas i vektorform som f(x) = 0, där x1 .. x=. f1 .. f =. fn och xn Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (5 : 37) Icke-linjära system För icke-linjära system så är Jacobimatrisen eller Jacobianen J av central betydelse. Jacobianens komponenter är Jij = ∂fi ∂xj vilket ger ∂f 1 ∂x ∂f 1 2 ∂x1 J= . .. ∂fn ∂x1 ∂f1 ∂x2 ∂f2 ∂x2 ∂fn ∂x2 ... ... ... ∂f1 ∂xn ∂f2 ∂xn ∂fn ∂xn För det inledande exemplet är Jacobianen 8x1 18x2 J= 32x1 −18x2 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (6 : 37) Linjär kontra icke-linjär I Linjära system har entydig lösning om systemmatrisen är inverterbar I För icke-linjära ekvationer är det svårt att verifiera om de har en lösning innan någon beräkning har utförts I Icke-linjära system har ofta mer än en lösning f (x) 2 1 Figuren till vänster illustrerar att funktionen f (x) = cos(3x)e −x − x x har tre rötter (lösningar till f (x) = 0) i intervallet [−2, 2] 0 −1 −2 −2 −1 0 1 2 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (7 : 37) Icke-linjära ekvationer Ex.: Lös den icke-linjära ekvationen cos(3x)e −x − x = 0. Denna ekvation kan inte lösas “analytiskt,” så vi försöker beräkna en numerisk lösning För att hitta en lösning x med utgånspunkt 0.5 i Matlab kan man skriva >> format long >> f = @(x) cos(3*x).*exp(-x)-x f = @(x)cos(3*x).*exp(-x)-x >> x0 = 0.5; >> fzero(f,x0) ans = 0.350198594439993 I I Matlab kan man definiera funktioner antingen i m-filer eller genom att använda anonyma funktioner som ovan I @(x) i ovanstående kod instruerar Matlab att f är en funktion (och inte ett tal eller en matris) och att x är den oberoende variabeln i denna funktion Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (8 : 37) Anonyma funktioner i Matlab Att skapa en anonym funktion är ett alternativ till att skriva och spara en m-fil Syntaxen för att skapa en anonym funktion är fhandle = @(arglist) expr Elementen i högerledet är I I I @ är Matlab operatorn som skapar funktionshandtaget arglist är en kommaseparerad lista om innehåller inargumenten till funktionen expr representerar funktionskroppen, d.v.s., den kod som kommer att köras när funktionen anropas Observera. Funktionshandtag ger inte bara tillgång till anonyma funktioner. Genom att använda en något modifierad syntax kan man skapa ett funktionshandtag till godtyckliga Matlab funktioner. Ex.: fhandle = @exp Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (9 : 37) Anonyma funktioner i Matlab Anonyma funktioner innehåller vanligen variabler av två olika “sorter” I Variabler som specificeras i inargumentlistan I Variabler som anges i själva uttrycket. Matlab fångar dessa variables när funktionen skapas och håller dem konstanta under hela livslängden för funktionshandtaget >> a=2; >> f = @(x) cos(a*x).*exp(-x)-x; >> f(1) ans = -1.153091865674226 >> a=3; >> f(1) ans = -1.153091865674226 >> f = @(x) cos(a*x).*exp(-x)-x; >> f(1) ans = -1.364197886413293 Sätt a till 2 Låt f vara ett funktionshandtag till cos(ax)e −x − x, med nuvarande a, (a = 2) evaluera f(1) ändra a evaluera f(1) Låt f vara ett funktionshandtag till cos(ax)e −x − x, med nuvarande a, (a = 3) evaluera f(1) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (10 : 37) Direkta kontra iterativa metoder Numeriska metoder för ekvationslösning är antingen direkta eller iterativa I Direkta metoder: den exakta lösningen (upp till avrudningfel) hittas efter ett fixt (känt i förväg) antal aritmetiska operationer. Ex.: Gausselimination för att lösa ett system av linjära ekvationer I Iterativa metoder: algoritmen producerar en sekvens av approximationer x1 , x2 , . . . som (förhoppningsvis) närmar sig den (okända) exakta lösningen x. Behöver avsluta algoritmen när kxk − xk är tillräckligt liten; vilket introducerar ytterligare fel I För att lösa Icke-linjära ekvationer behövs generellt iterativa metoder I Iterativa metoder är nödvändiga även för att lösa mycket stora linjära system, när direkta metoder är alltför tids och minneskrävande Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (11 : 37) Icke-linjära lösare i Matlab I fzero hittar ett nollställe till en kontinuerlig funktion av en variabel I Det finns ingen lösare för icke-linjära system i “grund” Matlab I fsolve löser icke-linjära ekvationssystem med hjälp av Newtons metod, den mest använda metoden för att lösa små till medelstora icke-linjära ekvationssystem. Denna funtion finns i Matlabs optimization toolbox vilken säljs separat (ingår i universitetets licens och finns tillgänglig i datasalarna) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (12 : 37) Iterativa metoder Tumregel: icke-linjära ekvationer eller mycket stora linjära ekvationssystem ⇒ iterativa metoder En generell iterativ metod: Vanligtvis: x = startgissning x 0 = startgissning while stoppkriterium inte mött while stoppkriterium inte mött Hitta en riktning p k och en steglängd αk x = ny gissning Sätt x k+1 = x k + αk p k end end Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (13 : 37) Konvergenshastighet För linjära system så kan vi hitta den entydiga lösningen i ett ändligt antal steg Vanligtvis så producerar iterativa metoder enbart approximativa lösningar ⇒ Avsluta när lösningen är tillräckligt bra Viktigt: Konvergenshastighet Hur snabbt x k (approximationen vid steg k) närmar sig den exakta lösningen x ∗ Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (14 : 37) Konvergenshastighet Definition ∗ Följden {x k }∞ k=1 konvergerar mot x med konvergensordning (Eng. convergence rate) p och asymptotisk felkonstant (Eng. rate constant) C < ∞ om x k → x ∗ och kx k+1 − x ∗ k lim =C k→∞ kx k − x ∗ kp I Linjär: p = 1 och 0 < C < 1. Felet multipliceras essentiellt med C varje iteration I Kvadratisk: p = 2. Ungefär en fördubbling av antalet korrekta siffror varje iteration I Superlinjär: p = 1 och C = 0. “Snabbare än linjär”. Inkluderar kvadratisk konvergens men även“mellanliggande” konvergensordningar Observera: definitionen gäller asymptotisk konvergenshastighet Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (15 : 37) Iterativa metoder: konvergenshastighet Ex.: Linjär konvergens Antag att kx 0 − x ∗ k = 0.5 och kx k+1 − x ∗ k = 0.3kx k − x ∗ k för varje k > 0 100 • I x ∗k 0.3n , kx n − = 0.5 · alltså, felet avtar exponentiellt Fel I • 10−1 Då gäller, Felet blir aldrig noll! 10 −2 10 −3 • • • 10−4 • 0 1 2 3 Iteration Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 4 5 (16 : 37) Iterativa metoder: konvergenshastighet Ex.: Kvadratisk konvergens Antag att kx 0 − x ∗ k = 0.5 och kx k+1 − x ∗ k = kx k − x ∗ k2 för varje k > 0 100 • 10 I I n kx n − x ∗ k = 0.52 , alltså, antalet korrekta siffror dubbleras i stort sett varje iteration Fel Då gäller, Felet blir aldrig noll! • • −2 • 10−4 • 10−6 10−8 10−10 • 0 1 2 3 Iteration 4 5 Observera: Värdet på konstanten C spelar inte någon roll i definitionen av kvadratisk konvergens, medan C < 1 är ett krav i definitionen av linjär konvergens Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (17 : 37) Newtons metod för icke-linjära ekvationer Vi vill lösa ekvationen f (x) = 0 där f är kontinuerligt deriverbar Vidare, anta att vi är vid iteration k och att vår nuvarande gissning xk inte löser vårt problem (f (xk ) 6= 0) Vi vill hitta ett steg sk så att f (xk + sk ) ≈ 0 Genom att Taylor utveckla f kring xk får vi f (xk + sk ) = f (xk ) + f 0 (xk )sk + O(|sk |2 ) Ide: välj sk = −f (xk )/f 0 (xk ) så att de två första termerna ovan tar ur varandra. Sätt xk+1 = xk + sk Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (18 : 37) Newtons metod för en icke-linjär ekvation: Alternativ tolkning Taylor utveckling ger f (xk + sk ) = f (xk ) + f 0 (xk )sk + O(|sk |2 ) Vilket ger att funktionen fˆ(x) = f (xk ) + f 0 (xk )(x − xk ) approximerar f kring xk Vi kan lösa den linjära ekvationen fˆ(x) = 0 för att hitta nästa gissning xk+1 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (19 : 37) Newtons metod för icke-linjära ekvationer n ekvationer fi (x) = 0, i = 1, . . . , n, i n okända x = (x1 , . . . , xn ) Vi antar att varje fi är kontinuerligt differentierbar Antag att vid iteration k så har vi fi (xk ) 6= 0. Vi vill hitta ett steg (k) (k) sk = (s1 , . . . , sn ) så att fi (xk + sk ) ≈ 0 för alla i Taylor utveckling ger fi (xk + s) = fi (xk ) + n X ∂fi (xk )sj + . . . ∂xj j=1 Ide: Välj s så att de två första termerna ovan tar ut varandra för varje i fi (xk ) + n X ∂fi (k) (xk )sj = 0, ∂xj i = 1, . . . , n j=1 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (20 : 37) Newtons metod för icke-linjära ekvationer Grundalgoritmen: 1. Välj en startgissning x0 2. For k = 0, 1, . . . 2.1 Lös det linjära ekvationssystemet J(x k )s k = −f (x k ), där J(x k ) är Jacobimatrisen för f evaluerad i punkten x k 2.2 Sätt x k+1 = x k + s k Newtons metod omvandlar problemet att lösa ett icke-linjärt system till problemet att lösa en sekvens av linjära system Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (21 : 37) Newtons metod för icke-linjära ekvationer I Som ovan, låt f : Rn → Rn vara en kontinuerligt differentierbar funktion I Antag att det finns en lösning till det icke-linjära systemet fi (x) = 0. (f (x ∗ ) = 0 för något x ∗ ∈ Rn ) Sats Följden x 0 , x 1 , . . . som genereras av Newtons metod konvergerar kvadratiskt mot x ∗ om 1. J(x ∗ ) är inverterbar och 2. kx 0 − x ∗ k är tillräckligt liten Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (22 : 37) Egenskaper hos Newtons metod I Fördel: Kan konvergera extremt snabbt I Begänsningar: 1. 2. 3. 4. Vi Vi Vi Vi behöver beräkna Jacobianen varje iteration behöver lösa ett linjärt ekvationssystem varje iteration behöver starta tillräckligt nära lösningen kan få problem om Jacobianen är singular vid någon iteration Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (23 : 37) Jacobianberäkningar I En vanlig situation: funktionsvärdena beräknas med hjälp av någon kommersiell mjukvara som inte ger tillgång till källkoden. Speciellt är Jacobianen inte tillgänglig! I Jacobianen kan approximeras med finita differenser: ∂fi (x1 , . . . , xn ) ∂xj fi (x1 , . . . , xj + h, . . . , xn ) − fi (x1 , . . . , xj , . . . , xn ) ≈ h Jij (x1 , . . . , xn ) = I h ska inte vara alltför stor (dålig approximation av derivaten) eller för liten (kancellering av signifikanta siffror). Bästa värdet på h är √ problemberoende. Tumregel: h ∼ M Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (24 : 37) Jacobianberäkningar Beräkning av Jacobimatrisen med finita differenser kräver n2 + 1 evalueringar av f . I Kan vara mycket kostsamt för stora problem I (speciellt om en evaluering av f innefattar en numerisk lösning av exempelvis en partiell differentialekvation) Ett vanligt tillvägagånssätt I Börja med finita differensapproximationer av Jacobianen I Använd sedan sekantapproximationer, baserade på funktionsvärdena f (x k+1 ) och f (x k ) samt gissningarna x k+1 och x k , för att uppdatera Jacobianapproximationen (Begränsning 1). I Användning av sekantapproximationer istället för den exakta Jacobianen reducerar konvergensordningen något (metoden konvergerar superlinjärt istället för kvadratiskt) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (25 : 37) Andra problem med Newtons metod I Behovet av en startgissning nära lösningen kan tas bort genom användning av globaliseringstekniker, vilket medför att metoden konvergerar oavsett startgissning. I I Globaliseringen modifierar steglängden och/eller stegriktningen när man är långt från lösningen, vilket är typiskt under de första stegen. (Begränsning 3) Det finns också tekniker för att ta hand om singulära Jacobianer (Begränsning 4) Spjutspetsimplementationer av Newtons metod är mycket mer komplicerade än grundalgoritmen! Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (26 : 37) Fixpunktsiterationer I En klass av iterativa metoder som undviker lösning av linjära system (Begränsning 2) I De är därför extra intressanta för lösning av mycket stora problem I Vanligtvis mycket långsammare än Newtons metod Obervera: konstruktionen av en bra fixpunktsmetod är problemberoende Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (27 : 37) Fixpunktsiterationer Ide: I Skriv f (x) = 0 som ett fixpunktsproblem x = g (x) I I Det går alltid att göra en sådan omskrivning, exempelvis x = x − f (x) Definiera det iterativa schemat x n+1 = g (x n ) och “hoppas” att det konvergerar mot en fixpunkt till g , vilket per konstruktion är en lösning till f (x) = 0 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (28 : 37) Fixpunktsiterationer I Iterationerna konvergerar om g är en kontraktion; alltså om det finns ett C < 1 så att kg (x) − g (y )k ≤ C kx − y k för varje x, y i en (konvex) delmängd av Rn I Eller i ord, om g (x) och g (y ) är strikt närmare varandra än x och y så är g en kontraktion Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (29 : 37) Fixpunktsiterationer I Inte alltid enkelt att se om en avbildning är en kontraktion! I Ett tillräckligt villkor för att en kontinuerligt differentierbar funktion g ska vara en kontraktion är att kJ(x)k < 1 för varje x i ett område, där J är Jacobianen för g (Observera: matrisnorm) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (30 : 37) Fixpunktsiterationer I Enkelt, vi behöver inte lösa några linjära ekvationssystem I För extremt stora problem kan de vara den enda möjliga lösningsvägen I Att konstruera en lämplig kontraktiv funktion g är i hög grad problemberoende I Robusta versioner av Newtons metod är (om tillämpliga) vanligtvis mycket snabbare Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 ∗ (31 : 37) Minstakvadratproblem Antag att vi har observationer yi i = 1, 2, . . . . , m vid tiderna ti i = 1, 2, . . . . , m ◦ och en model y (t, x) ◦ ◦ ◦ ◦ ◦ Ex1: y (t, x) = x1 + x2 t + x3 t 2 Ex2: y (t, x) = x1 e x2 t Vi vill bestämma de “bästa” x1 , x2 , . . . , xn så att y (ti , x) ≈ yi (Vanligtvis m >> n) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 ∗ (32 : 37) Minstakvadratproblem Vanligtvis (på grund av mätfel, modelleringsfel, brus, etcetera), yi − y (ti , x) 6= 0 även för det “bästa” parametervalet x Här betyder “bästa” parametervalet x det x som är bäst i minstakvadratmening Vi vill alltså: Hitta det x ∈ Rn som minimerar M 1X [yi − y (ti , x)]2 2 i=1 Definition Linjärt minstakvadratproblem: y är linjär i x (Ex1) Icke-linjärt minstakvadratproblem: y är icke-linjär i x (Ex2) Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (33 : 37) ∗ Linjära minstakvadratproblem Låt oss först titta på fallet m 1X minn f (x) = fi (x)2 x∈R 2 i=1 där fi är linjär i x, vilket betyder att 2 1 1 1 1 f (x) = Ax−b = (Ax−b)(Ax−b)T = x T AT Ax−x T AT b+ b T b, 2 2 2 2 där A är en m × n matris och b är en m kolonnvektor Om AT A är positivt definit så har minimeringsproblemet ovan lösningen x ∗ , som uppfyller normalekvationerna AT Ax ∗ = AT b Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 ∗ (34 : 37) Icke-linjära minstakvadratproblem m minn f (x) = x∈R 1X fi (x)2 2 i=1 I detta fall kan vi skriva gradienten och Hessianen av f som ∇f (x) = ∇2 f (x) = m X ∇fi (x)fi (x) i=1 m h X ∇fi (x) ∇fi (x) T i + ∇2 fi (x)fi (x) i=1 Vi kan exempelvis använda oss av Newtons metod för att lösa ∇f = 0 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 ∗ (35 : 37) Icke-linjära minstakvadratproblem m minn f (x) = x∈R 1X fi (x)2 2 i=1 Det är dock vanligtvis bättre att använda den struktur som problemet har Taylor utveckling ger 1 f (x + s) = f (x) + ∇f (x)T s + s T ∇2 f (ξ)s 2 där ξ = x + αs för något α ∈ [0, 1] Ide: vid iteration k, approximera Hessianen ∇2 f i den okända punkten ξ m h med i X T Bk = ∇fi (x k ) ∇fi (x k ) + någonting enkelt i=1 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (36 : 37) ∗ Icke-linjära minstakvadratproblem Vad är “någonting enkelt”? I 0 (noll) rimligt om redidualen är liten samt för svagt olinjära problem I (annars använd λI , där I är identitetsmatrisen och λ > 0) Approximera f med 1 fˆ(x) = f (x k ) + ∇f (x k )T (x − x k ) + (x − x k )T Bk (x − x k ) 2 ta fram steget s k genom att lösa Bk s k = −∇f Observera: Ekvivalent till att lösa det linjära minstakvadratproblemet ∇F (∇F )T s = −(∇F )F där F = [f1 , f2 , . . . , fn ] och ∇F = [∇f1 ∇f2 . . . ∇fn ]T Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (37 : 37)
© Copyright 2024