Linjärisering, Jacobimatris och Newtons metod Analys och Linjär Algebra, del C, K/Kf/Bt, vt0 Inledning Vi skall lösa system av icke-linjära ekvationer Som exempel kan vi ta, x = 0, x = 0, som är ett system av två ekvationer i två obekanta Exempel, Adams 36 Om vi inför de två funktionerna kan ekvationssystemet skrivas f x,x = x, f x,x = x, f x,x = 0, f x,x = 0 Med f = f,f, x = x,x, och 0 = 0,0, ser vi att f : R R och vi kan skriva ekvationerna på den kompakta formen f = 0 I denna studio-övning skall vi använda Newtons metod för att lösa sådana ekvationer och vi skall använda våra kunskaper från tidigare studio-övning för att göra grafiska bilder av noll-nivåkurvor Vi börjar med att rita upp noll-nivåkurvorna till f respektive f 3 5 f x, x = 0 5 f x, x = 0 05 0 05 05 0 05 5 5 3 Vi ser lösningen till f = 0 som den punkt där noll-nivåkurvorna till f och f skär varandra Vi kan grafiskt läsa av en första approximation av lösningen för att sedan förbättra denna med Newtons metod Innan vi kan komma till Newtons metod måste vi dock först se på linjäriseringar av funktioner i flera variabler
Linjärisering och Jacobimatris Redan i ALA-A såg vi på linjärisering av en differentierbar deriverbar funktion i en variabel f : R R Linjäriseringen av f runt punkten a ges av Definition 8, Adams 49 L = fa + f ax a Nära punkten a har vi f L Vi påminner oss om att den räta linjen y = L är tangenten till kurvan y = f vid a En funktion i två variabler, f : R R Låt fx,x vara en differentierbar funktion i två variabler, f : R R Linjäriseringen av f runt punkten a,a ges av Adams 6 Lx,x = fa,a + a,a x a + x a,a x a och nära punkten a,a har vi fx,x Lx,x Det räta planet z = Lx,x är tangentplanet till ytan z = fx,x vid punkten a,a Vi låter x = x,x, f = fx,x och a = a,a Använder vi gradienten [ ] [ ] f f = x f f x = x x,x f x x,x kan vi skriva linjäriseringen L = fa + fa T x a Lägg märke till att fa och x a är kolonnvektorer så fa T x a är skalärprodukten fa x a Låt oss som exempel ta f = x Då gäller =, x = x x, och därmed f T = [ ] x x Linjäriseringen vid a =, blir L = fa + fa T x a = 3 + [ 4 ] [ ] x x Övning Linjärisera f = x cosx sinx runt a = 3, Rita upp funktionsytan tillsammans med tangentplanet i a
Två funktioner i två variabler, f : R R Låt f x,x och f x,x vara två differentierbara funktioner i två variabler, f : R R och f : R R Linjäriseringen av f respektive f runt punkten a,a ges av L x,x = f a,a + a,a x a + x a,a x a, L x,x = f a,a + a,a x a + x a,a x a, Låter vi x = x,x, f = f, f och a = a,a kan vi skriva eller med matrisbeteckningar där L = L,L och L = f a + f a T x a, L = f a + f a T x a, L = fa + Dfax a, Df = x, x är Jacobimatrisen Låt oss som exempel ta f = x,x Då gäller =, x = x x, och därmed Linjäriseringen vid a =, blir = x x, x =, [ ] Df = x x x x L = fa + Dfax a = [ ] 3 + [ 4 4 ] [ ] x x Övning Linjärisera f = x 3,e x x + x runt a =, Flera funktioner i flera variabler, f : R n R m Vi generaliserar nu till godtyckligt antal funktioner i godtyckligt många variabler Låt f i beteckna m funktioner i n variabler, dvs f : R n R m Vi låter x f x,,x n x =, f =, f m x,,x n x n 3
och x n Df = m m x n Här är m n matrisen Df Jacobimatrisen av f i x Linjäriseringen av f i punkten a blir L = fa + Dfax a Övning 3 Linjärisera ft = cost, sint,t, 0 t 6π, runt a = 4 Rita bild! 3 Newtons metod Låt f : R R vara en deriverbar funktion Vi skall lösa ekvationen f = 0 med Newtons metod Det här gjorde vi redan i ALA-A så detta blir lite repetition Antag att vi har en approximativ lösning x k och vi vill hitta en bättre approximation x k+ Vi bildar linjäriseringen av f i x k : och löser L = 0 istället för f = 0 Lösningen får bli nästa approximation: L = fx k + f x k x x k fx k + f x k x x k = 0 x k+ = x k fx k f x k Detta är Newtons metod Geometriskt betyder att vi följer tangenten och hittar x k+ där denna skär x-axeln y = fx k + f x k x x k y = f Som stoppvillkor för iterationen tar vi x k x k+ x k+ x k tol Det betyder att vi accepterar x k+ om ändringen i sista iteration är mindre än toleransen Vi tillåter maximalt k max iterationer k max = 0 är rimligt Som ett litet exempel tar vi f = cos x och vi skall lösa f = 0 En graf rita den gärna visar att vi har ett nollställe och vi tar x 0 = som startapproximation 4
>> f = @ cos-x; Df = @ -sin-; >> x = ; >> kmax = 0; tol = 05e-8; >> for k = : kmax h = -f / Df; x = x + h; disp[x h] if absh < tol, break, end end 075036386784044-049636359756 0739890936-00509769888 07390853338584-00000775756078 07390853356-0000000000703 System av ekvationer Nu är det dags för system av n ekvationer i n obekanta Om vi låter x x = x n f x,,x n = 0, f n x,,x n = 0, f = f f n, 0 = så har vi f : R n R n, och vi kan skriva systemet på formen f = 0 0, 0 Antag att vi har en approximativ lösning x k och vi vill hitta en bättre approximation x k+ Vi bildar linjäriseringen av f i x k : L = fx k + Dfx k x x k = 0 och löser L = 0 istället för f = 0 Om vi låter h = x x k så kan L = 0 skrivas som ekvationen Dfx k h = fx k Detta är ett linjärt ekvationssystem, Jacobimatrisen Dfx k är en n n-matris, som vi löser med avseende på h Nu bildar vi nästa approximation av lösningen till f = 0: Som stoppvillkor för iterationen tar vi x k+ = x k + h x k+ x k tol 5
Vi avbryter när vi har tillräcklig noggrannhet och vi tillåter maximalt k max iterationer k max = 0 är rimligt Nu ser vi åter på exemplet från inledningen Exempel, Adams 36 Vi har alltså f = [ x x ], Df = [ ] x x x x, och skall lösa f = 0 Från bilden med noll-nivåkurvorna ser vi att x 0 = 05, nog är en bra startapproximation >> f = @ [x*+x^-; x*+x^-]; >> Df = @ [+x^ *x*x;*x*x +x^]; >> x = [05; ]; >> kmax = 0; tol=05e-8; >> for k = : kmax h = -Df \ f; x = x + h; disp[x normh] if normh < tol, break, end end 073930434786 9304347860870 00986960597364 048967077 97880335968 000855484777347 0489369496 97688990568 0000099868985 0489368084 97688998807 00000000000668 Övning 4 Låt f = x 3,e x x + x Lös ekvationssystemet f = 0 Rita upp noll-nivåkurvorna till f och f för att se var ungefär lösningarna skärningspunkterna ligger Hur många lösningar finns det? Läs av i grafiken en första approximation av en lösning för att sedan förbättra denna med Newtons metod Rita ut lösningen med en liten ring Upprepa tills du beräknat alla lösningar till systemet 4 Modifiering av Newtons metod En dålig startapproximation kan leda till att Newtons metod divergerar inte konvergerar, då är det lämpligt med dämpad Newton x k+ = x k + α k h k, k = 0,,, Dfx k h k = fx k Dämpningsfaktorn α k väljs så att fx k+ < fx k Man kan tex börja med α k =, på försök ta ett steg i iterationen, om vi har fått en minskning av f accepterar vi steget I annat fall halverar vi successivt α k och gör nya försök, tills vi har en en minskning av f Om vi inte vill beräkna derivator, dvs Jacobimatrisen, så kan vi approximera den kolonnvis med differenskvoter, fx + δe j fx δe j, x j δ 6
för lämpligt valt litet positivt δ, där e j är j:te enhetsvektorn Gå tillbaka och kontrollera att x j är den j:te kolonnen i Df! I Matlab Optimization Toolbox finner vi fsolve som använder dessa modifieringar För en sista gång ser vi på exemplet från inledningen Vi har alltså [ ] x f = x = 0, och i Matlab löser vi med samma startapproximation som tidigare >> f = @ [x*+x^-; x*+x^-]; >> x0 = [05; ]; >> x=fsolvef,x0 x = 048936945 97688990538 Newton och Jacobimatris i jämviktsprojektet För jämviktsprojektet finns det ett färdigt program jacobim som används enligt A=jacobif,x Detta program beräknar en approximation av Jacobimatrisen till funktionen f i punkten x Vidare finns det ett färdigt program newtonm som används enligt x=newtonf,x0,tol och som löser ekvationssystemet f = 0 Båda programmen finner du från kurshemsidan Där finner du även programmet Newtonprotolysm som du kan modifiera och använda för att lösa projektuppgiften Övning 5 Genomför jämviktsprojektet 7