Tentamen, del Lösningar DN140 Numeriska metoder gk II F och CL Lördag 17 december 011 kl 9 1 DEL : Inga hjälpmedel Rättas ast om del 1 är godkänd Betygsgränser inkl bonuspoäng: 10p D, 0p C, 30p B, 40p A 1 Skriv en detaljerad algoritm gärna i MATLAB som använder Newtons metod för att lösa det olinjära ekvationssystemet lnx + siny 1/ = 0, x exp x 1 = 0, z sinx + y cosz = 0, med ett fel i varje komponent av lösningen som är mindre än 10 10 Använd startgissningen x = y = z = 1 1 p Vi vill alltså lösa Fx = 0, med x lnx + siny 1/ x = y, F x = x exp x 1 z z sinx + y cosz Newtons metod för system är f 1 x f x f 3 x f 1 y f y f 3 y x n+1 = x n Jx n 1 Fx n, där J är jakobianen till F = f 1,f,f 3 T, dvs 1 x cosy 0 J = = 1 + e x x 0 z z 3 cosx + y cosx + y sinz f 1 z f z f 3 z En detaljerad algoritm i MATLAB med startgissningen x 0 = 1,1,1 T som beräknar lösningen med ett fel på max 10 10 i varje komponent, skulle därför kunna se ut såhär: 1 6 DN140 Numeriska metoder, grundkurs II HT 011
X = [1; 1; 1]; % Startgissning TOL = 1e-10; % Feltolerans r = X; % Dummy, vadsomhelst större än TOL while normr, inf >TOL % inf ger maxnorm-fel x=x1; y=x; z=x3; f1 = logx+siny-1/; f = x/z^-exp-*x-1; f3 = sinx+y-cosz; F = [f1; f; f3]; J = [1/x cosy 0; 1/z^+*exp-*x 0 -*x/z^3; cosx+y cosx+y sinz]; r = -J\F; X=X+r; disp x,y,z = dispx ; Algoritmen avbryter när x n+1 x n = r är mindre än TOL varför felet också kommer vara mindre än TOL, i detta fall 10 10 Lösningen blir x 0608318, y 1647533, z 0685055 Givet funktionen yx a Bestäm ett tredjegradspolynom som interpolerar yx i punkterna x = 0, 1,, 3 Redovisa det linjära ekvationssystem som erhålles och specificera hur polynomet är relaterat till systemets lösning Inga beräkningar behöver genomföras 5 p Ansätt px = c 0 + c 1 x + c x + c 3 x 3 1 Newtons ansats är egentligen bättre, men i det här enkla fallet duger den naiva ansatsen Låt interpolationspunkterna vara x j = j, j = 0,,3 Polynomets koefficienter bestäms genom att lösa det linjära ekvationssystemet 1 x 0 x 0 x 3 0 c 0 yx 0 1 0 0 0 c 0 y0 yx 1 1 1 1 1 y1 1 x 1 x 1 x 3 1 1 x x x 3 1 x 3 x 3 x 3 3 c 1 c c 3 = yx yx 3 1 4 8 1 3 9 7 Relationen mellan c j och polynomet är som givet i ansatsen 1 c 1 c c 3 = y y3 6 DN140 Numeriska metoder, grundkurs II HT 011
b Bestäm en styckvis polynom- funktion Sx med egenskapen i Sx interpolerar yx i punkterna x = 0, 1,, 3, ii Sx är ett förstagradspolynom i intervallet [0,1], iii Sx är ett tredjegradspolynom i intervallet [1,], iv Sx är ett förstagradspolynom i intervallet [,3], v S x kontinuerlig på hela intervallet [0,3] Redovisa det linjära ekvationssystem som erhålles och specificera hur Sx är relaterat till systemets lösning Inga beräkningar behöver genomföras 5 p Funktionen Sx definieras av tre polynom, p 1 x, 0 x 1, Sx = p x, 1 x, p 3 x, x 3 Vi vet polynomens gradtal och vi kan göra följande ansatser p 1 x = a 0 + a 1 x, p x = b 0 + b 1 x + b x + b 3 x 3, p 3 x = c 0 + c 1 x 3 Interpolationsvillkoren för polynomen kan nu skrivas p 1 0 = y0, a 0 = y0, p 1 1 = y1, a 0 + a 1 = y1, p 1 = y1, b 0 + b 1 + b + b 3 = y1, p = y, b 0 + b 1 + 4b + 8b 3 = y, p 3 = y, c 0 + c 1 = y, p 3 3 = y3, c 0 + 3c 1 = y3 Villkoret att S x är kontinuerlig ger slutligen där vi utnyttjat att p 11 = p 1, a 1 = b 1 + b + 3b 3, p = p 3, b 1 + 4b + 1b 3 = c 1, p 1x = a 1, p x = b 1 + b x + 3b 3 x, p 3x = c 1 I matrisform blir det linjära system som bildas av villkoren ovan, 1 0 0 0 0 0 0 0 a 0 y0 1 1 0 0 0 0 0 0 a 1 y1 0 0 1 1 1 1 0 0 b 0 y1 0 0 1 4 8 0 0 b 1 0 0 0 0 0 0 1 b = y y 0 0 0 0 0 0 1 3 b 3 y3 0 1 0 1 3 0 0 c 0 0 0 0 0 1 4 1 0 1 c 1 0 Relationen mellan koefficienterna a j, b j, c j och Sx ges av 3 och 3 6 DN140 Numeriska metoder, grundkurs II HT 011
4 6 3 En variant av Van der Pol-generatorn beskrivs av den ordinära differentialekvationen d x dt 1 x dx + sinx = 0 dt a Skriv en detaljerad algoritm gärna i MATLAB som beräknar lösningen x vid t = 5 för begynnelsedata x0 = 1 och x 0 = 0 Algoritmen ska vara baserad på Framåt Euler-metoden med steglängden h = 001 10 p Skriv först om ekvationen som ett första ordningens system genom att sätta x u1 u = x =: Då får vi du dt Använd sedan Framåt Euler, I MATLAB blir det h = 001; u = [1 0] ; u = Fu =: 1 u 1 u, u0 = sinu 1 u u n+1 = u n + hfu n 1 0 for t=0:h:5-h/ % -h/ för att undvika avrundningsproblem F = [u; 1-u1^*u-sinu1]; u = u + h*f; disp x, xp = dispu ; b Modifiera din algoritm så att den istället använder den implicita Bakåt Euler-metoden, u n+1 = u n + hft n+1,u n+1 Nya element kan behöva introduceras i algoritmen 6 p Eftersom Bakåt Euler är en implicit metod måste vi nu lösa ett olinjärt ekvationssystem för att stega fram från u n till u n+1 Systemet är u n+1 = u n + hfu n+1, i vilket u n är given och u n+1 är okänd Med andra ord, vi behöver lösa Gx = 0 med Gx = x u n hf x Ekvationen kan tex lösas med Newtons metod som i uppgift 1, x k+1 = x k Jx k 1 Gx k, DN140 Numeriska metoder, grundkurs II HT 011
där jakobianen Jx, med x = x,y är given av Jx = G x = I h F x = 1 h hxy + cosx 1 h1 x Startgissningen kan tex väljas som lösningen i förra tidssteget: x 0 = u n Ett lite noggrannare alternativ är att välja startgissningen som resultatet av ett steg med Framåt Euler, dvs x 0 = u n + hfu n Notera att vi nu alltså får två nivåer av iteration: den yttre tidsstegning n = 0, 1, och den inre ekvationslösningsiterationen k = 0,1, som görs i varje tidssteg I MATLAB blir det tex h = 001; u = [1 0] ; TOL=1e-10; % Feltolerans for t=0:h:5-h/ % -h/ för att undvika avrudningsproblem % Lös GX=0 med Newtons metod och startgissningen X=u_n r = [1; 1]; % Dummy, vadsomhelst större än TOL X = u; while normr, inf >TOL % inf ger maxnorm-fel x=x1; y=x; F = [y; 1-x^*y-sinx]; G = [x-u1-h*f1; y-u-h*f]; J = [1 -h; h**x*y+cosx 1-h*1-x^]; r = -J\G; X=X+r; u = X; % u_{n+1} är lösningen disp x, xp = dispu ; 4 Formulera finita differensmetoden för randvärdesproblemet u xx + xu x sinxu = 0, u0 = 0, uπ = Visa hur metoden leder till ett linjärt ekvationssystem Au = b Specificera elementen i A-matrisen och högerledet b Var noga med att definiera alla variabler du använder och förklara innebörden av elementen i lösningsvektorn u Inga räkningar behöver genomföras dock 1 p 5 6 DN140 Numeriska metoder, grundkurs II HT 011
Börja med att diskretisera problemet och introducera notation för detta Dela in intervallet [0,π] i n + 1 delar med längden h = π/n + 1 och kalla delningspunkterna x j = jh Låt u j approximera exakta lösningen i dessa punkter, dvs u j ux j I varje inre punkt, j = 1,,n, approximerar vi sedan derivatorna i ekvationen med andra ordningens differenskvoter, Det ger u xx x j u j 1 u j + u j+1 h, u x x j u j+1 u j 1 h u j 1 u j + u j+1 h + x j u j+1 u j 1 h sinx j u j = 0, j = 1,,n Multiplicera med h och samla ihop termerna u j 1 1 hx j + u j h sinx j + u j+1 1 + hx j = 0, 4 där j = 1,,n Vi har nu n ekvationer men n + obekanta Utnyttja randvillkoren för att eliminera u 0 och u n+1 : u 0 = 0, u n+1 = Detta ger för j = 1, u 1 h sinx 1 + u 1 + hx 1 = 0, 5 och för j = n, u n 1 1 hx n + u n h sinx n = 1 + hx n, 6 Tillsammans ger 4,5,6 det linjära ekvationssystemet Au = b med u = u 1,,u n T, a 1 b 1 c a b A =, c n 1 a n 1 b n 1 c n a n där och högerledet a j = h sinx j, b = b j = 1 + hx j, c j = 1 hx j, 0 0 1 + hxn 6 6 DN140 Numeriska metoder, grundkurs II HT 011