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 Icke-linjära ekvationer och system Anonyma funktioner Matlab Konvergenshastighet Newtons metod Fixpunktsiteration Minstakvadratproblem Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (2 : 37) Icke-linjära ekvationer Många beräkningsproblem är till sin natur icke-linjära 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 Linjära ekvationssystem kan i princip lösas för hand. För stora problem behövs datorer 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 x 2 Exempel, sid. 94 i kursboken: 4x1 2 + 9x2 2 36 = 0 16x1 2 9x2 2 36 = 0 ska lösas för x 1 0, x 2 0 x 1 Ovanligt exempel: kan lösas för hand! Observera att problemet är linjärt i y 1 = x 2 1, y 2 = x 2 2 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 f 1 (x 1,..., x n ) = 0 f 2 (x 1,..., x n ) = 0. f n (x 1,..., x n ) = 0 System ovan kan skrivas i vektorform som f(x) = 0, där x 1 x =. x n och f = f 1. f n 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 vilket ger J =. J ij = f i x j f 1 f 1 x 1 f 2 f 2 x 1 f n x 1 x 2... x 2... f n x 2... f 1 x n f 2 x n f n x n För det inledande exemplet är Jacobianen ( ) 8x1 18x J = 2 32x 1 18x 2 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (6 : 37)
Linjär kontra icke-linjär Linjära system har entydig lösning om systemmatrisen är inverterbar 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 Icke-linjära system har ofta mer än en lösning 2 f (x) 1 0 1 x Figuren till vänster illustrerar att funktionen f (x) = cos(3x)e x x har tre rötter (lösningar till f (x) = 0) i intervallet [ 2, 2] 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 Matlab kan man definiera funktioner antingen i m-filer eller genom att använda anonyma funktioner som ovan @(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 @ ä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 Variabler som specificeras i inargumentlistan 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 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 Iterativa metoder: algoritmen producerar en sekvens av approximationer x 1, x 2,... som (förhoppningsvis) närmar sig den (okända) exakta lösningen x. Behöver avsluta algoritmen när x k x är tillräckligt liten; vilket introducerar ytterligare fel För att lösa Icke-linjära ekvationer behövs generellt iterativa metoder 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 fzero hittar ett nollställe till en kontinuerlig funktion av en variabel Det finns ingen lösare för icke-linjära system i grund Matlab 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: x = startgissning while stoppkriterium inte mött x = ny gissning end Vanligtvis: x 0 = startgissning while stoppkriterium inte mött end Hitta en riktning p k och en steglängd α k Sätt x k+1 = x k + α k p k 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 x k+1 x lim k x k x p = C Linjär: p = 1 och 0 < C < 1. Felet multipliceras essentiellt med C varje iteration Kvadratisk: p = 2. Ungefär en fördubbling av antalet korrekta siffror varje iteration 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 x 0 x = 0.5 och x k+1 x = 0.3 x k x för varje k > 0 Då gäller, x n x = 0.5 0.3 n, alltså, felet avtar exponentiellt Felet blir aldrig noll! Fel 10 0 10 1 10 2 10 3 10 4 0 1 2 3 4 Iteration 5 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (16 : 37) Iterativa metoder: konvergenshastighet Ex.: Kvadratisk konvergens Antag att x 0 x = 0.5 och x k+1 x = x k x 2 för varje k > 0 Då gäller, x n x = 0.5 2n, alltså, antalet korrekta siffror dubbleras i stort sett varje iteration Felet blir aldrig noll! Fel 10 0 10 2 10 4 10 6 10 8 10 10 0 1 2 3 4 Iteration 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 x k inte löser vårt problem (f (x k ) 0) Vi vill hitta ett steg s k så att f (x k + s k ) 0 Genom att Taylor utveckla f kring x k får vi f (x k + s k ) = f (x k ) + f (x k )s k + O( s k 2 ) Ide: välj s k = f (x k )/f (x k ) så att de två första termerna ovan tar ur varandra. Sätt x k+1 = x k + s k 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 (x k + s k ) = f (x k ) + f (x k )s k + O( s k 2 ) Vilket ger att funktionen ˆf (x) = f (x k ) + f (x k )(x x k ) approximerar f kring x k Vi kan lösa den linjära ekvationen ˆf (x) = 0 för att hitta nästa gissning x k+1 Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (19 : 37) Newtons metod för icke-linjära ekvationer n ekvationer f i (x) = 0, i = 1,..., n, i n okända x = (x 1,..., x n ) Vi antar att varje f i är kontinuerligt differentierbar Antag att vid iteration k så har vi f i (x k ) 0. Vi vill hitta ett steg s k = (s (k) 1,..., s n (k) ) så att f i (x k + s k ) 0 för alla i Taylor utveckling ger f i (x k + s) = f i (x k ) + n j=1 f i x j (x k )s j +... Ide: Välj s så att de två första termerna ovan tar ut varandra för varje i f i (x k ) + n j=1 f i x j (x k )s (k) j = 0, i = 1,..., n 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 x 0 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 Som ovan, låt f : R n R n vara en kontinuerligt differentierbar funktion Antag att det finns en lösning till det icke-linjära systemet f i (x) = 0. (f (x ) = 0 för något x R n ) Sats Följden x 0, x 1,... som genereras av Newtons metod konvergerar kvadratiskt mot x om 1. J(x ) är inverterbar och 2. x 0 x är tillräckligt liten Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (22 : 37) Egenskaper hos Newtons metod Fördel: Kan konvergera extremt snabbt Begänsningar: 1. Vi behöver beräkna Jacobianen varje iteration 2. Vi behöver lösa ett linjärt ekvationssystem varje iteration 3. Vi behöver starta tillräckligt nära lösningen 4. Vi 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 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! Jacobianen kan approximeras med finita differenser: J ij (x 1,..., x n ) = f i x j (x 1,..., x n ) f i(x 1,..., x j + h,..., x n ) f i (x 1,..., x j,..., x n ) h 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 n 2 + 1 evalueringar av f. Kan vara mycket kostsamt för stora problem (speciellt om en evaluering av f innefattar en numerisk lösning av exempelvis en partiell differentialekvation) Ett vanligt tillvägagånssätt Börja med finita differensapproximationer av Jacobianen 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). 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 Behovet av en startgissning nära lösningen kan tas bort genom användning av globaliseringstekniker, vilket medför att metoden konvergerar oavsett startgissning. 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 En klass av iterativa metoder som undviker lösning av linjära system (Begränsning 2) De är därför extra intressanta för lösning av mycket stora problem 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: Skriv f (x) = 0 som ett fixpunktsproblem x = g(x) 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 Iterationerna konvergerar om g är en kontraktion; alltså om det finns ett C < 1 så att g(x) g(y) C x y för varje x, y i en (konvex) delmängd av R n 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 Inte alltid enkelt att se om en avbildning är en kontraktion! Ett tillräckligt villkor för att en kontinuerligt differentierbar funktion g ska vara en kontraktion är att J(x) < 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 Enkelt, vi behöver inte lösa några linjära ekvationssystem För extremt stora problem kan de vara den enda möjliga lösningsvägen Att konstruera en lämplig kontraktiv funktion g är i hög grad problemberoende 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 y i t i i = 1, 2,...., m vid tiderna i = 1, 2,...., m och en model y(t, x) Ex1: y(t, x) = x 1 + x 2 t + x 3 t 2 Ex2: y(t, x) = x 1 e x 2t Vi vill bestämma de bästa x 1, x 2,..., x n så att y(t i, x) y i (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), y i y(t i, x) 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 R n som minimerar 1 M [y i y(t i, x)] 2 2 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 min x R n f (x) = 1 2 där f i är linjär i x, vilket betyder att m f i (x) 2 f (x) = 1 Ax b 2 = 1 2 2 (Ax b)(ax b)t = 1 2 x T A T Ax x T A T b+ 1 2 bt b, där A är en m n matris och b är en m kolonnvektor Om A T A är positivt definit så har minimeringsproblemet ovan lösningen x, som uppfyller normalekvationerna A T Ax = A T b Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (34 : 37) Icke-linjära minstakvadratproblem min x R n f (x) = 1 2 m f i (x) 2 I detta fall kan vi skriva gradienten och Hessianen av f som f (x) = 2 f (x) = m f i (x)f i (x) m [ f i (x) ( f i (x) ) ] T + 2 f i (x)f i (x) 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 min x R n f (x) = 1 2 m f i (x) 2 Det är dock vanligtvis bättre att använda den struktur som problemet har Taylor utveckling ger f (x + s) = f (x) + f (x) T s + 1 2 st 2 f (ξ)s där ξ = x + αs för något α [0, 1] Ide: vid iteration k, approximera Hessianen 2 f i den okända punkten ξ med m B k = [ f i (x k ) ( f i (x k ) ) ] T + någonting enkelt Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (36 : 37)
Icke-linjära minstakvadratproblem Vad är någonting enkelt? 0 (noll) rimligt om redidualen är liten samt för svagt olinjära problem (annars använd λi, där I är identitetsmatrisen och λ > 0) Approximera f med ˆf (x) = f (x k ) + f (x k ) T (x x k ) + 1 2 (x x k) T B k (x x k ) ta fram steget s k genom att lösa B k s k = f Observera: Ekvivalent till att lösa det linjära minstakvadratproblemet F ( F ) T s = ( F )F där F = [f 1, f 2,..., f n ] och F = [ f 1 f 2... f n ] T Eddie Wadbro, Tema 3: Icke-linjära ekvationer, 18 november, 2015 (37 : 37)