SF545, Numeriska Metoder, I, HT0, Ninni Carlsund Levin, Föreläsning 8 Föreläsning 8, Numme i, 0 GKN Kap - Differentialekvationer GNM kap 7-7), S Ch Dagens termer Riktningsfält Standardform Begynnelsevärdesproblem Lokal linearisering Eulers metod Grafisk tolkning av Euler Runge-Kuttas metod Richardson-extrapolation Metodens ordning DE:s ordning System av DE av första ordningen Lokalt trunkeringsfel Globalt trunkeringsfel Adaptiv steglängd odeul odrk ode3 ode45 Standardform, GKN sid 0 GNM sid 7)3), S p8: y = fx,y) ya) = c Exempel : Skatta y0) då y = +x y och y0) = y Allmän idé yx i ) y i och n+ = y n +h y n} x n+ = x n +h Eulers metod GKN sid GNM sid 7)9, Sp83 yn+ = y n +h fx n,y n ) x n+ = x n +h I exempel har vi y = fx,y) = +x y Först provar jag h = 0 vilket innebär steg: y0 = x 0 = 0 y = y 0 +h+x 0 y 0 } = +0+0 } = x = x 0 +h = 0+0 = 0 Sedan provar jag h = 0 vilket innebär y0 = x 0 = 0 steg: y = y 0 +h+x 0 y 0 } = +0+0 } = x = x 0 +h = 0+0 = 0 y = y +h+x y } = +0+0 } = 0 x = x +h = 0+0 = 0 Sedan provar jag h = 005 vilket innebär steg: y0 = y = y 0 +h+x 0 y 0 } = y = y +h+x y } = x 0 = 0 = +005+0 } = = +005+005 } = 005 x = x 0 +h = 0+005 = 005 x = x +h = 005+005 = 00 y 3 = y +h+x y } = y 4 = y 3 +h+x 3 y 3 } = = +005+00 005}= 007375 = 04505 x 3 = x +h = 00+005 = 05 x 4 = x 3 +h = 05+005 = 00 Valt värde för y0) blir 04505 Jag skattar E trunk = 04505 0 = 0004505 Inga mellanresultatharavrundatssåe ber = 0 Jagsvararfyradecimaler, E pres = 045 04505 = 0000005 Ger felgränsen 0004505 + 0000005 = 000455 och slutsvaret y0) = 045 ± 0004 Trunkeringsfelet i Eulers metod är c h+c h + Med halverat steg skall alltså E trunk avta en faktor : y0,h = 0) y0,h = 0) y0,h = 0) y0,h = 005) = 0) =, 0 04505) OK! Vi tror på vår skattning! y0) fyra korrekta decimaler är 087 som ju ligger i det angivna intervallet!) Med Richardson-extrapolation på Euler-siffrorna ovan får vi 090 ± 0000, se tabell på nästnästa sida)
SF545, Numeriska Metoder, I, HT0, Ninni Carlsund Levin, Föreläsning 8 Metodenär av ordning pomyx;h) yx) ch p därcinteberoravhmenvälavx,y ochf)gkns,sp85) Euler är av ordning E trunk avtar faktor = när steget halveras Runge-Kutta är av ordning 4 E trunk avtar faktor 4 = när steget halveras Runge Kuttas metod GKN s 9 GNM 7)4 S p3 y n+ = y n + k +k +k 3 +k 4 x n+ = x n +h där k = h fx n,y n ) k = h fx n + h,y n + k ) k 3 = h fx n + h,y n + k ) k 4 = h fx n +h,y n +k 3 ) Trots att den ser jobbigare ut så krävs totalt mindre arbete RK än Euler om man önskar en viss noggrannhet Runge-Kuttas metod steget h = 0 på exempel ger x = 0 och y0) y och y0 = x 0 = 0 k = h f x 0,y 0 ) = h+x 0 y 0 } = 0+0 } = 0 k = h f x 0 + h,y 0 + k ) = h + x 0 + h ) = 0+0 } = 00 k 3 = h f x 0 + h,y 0 + k ) = h + x 0 + h ) = 0+0 0} = 008 k 4 = h f x 0 +h,y 0 +k 3 ) = h+x 0 +h) y 0 +k 3 )} = 0+0 08}= 0034 y = y 0 + k +k +k 3 +k 4 = 08733333 x = x 0 +h = 0+0 = 0 Runge-Kuttas metod steget h = 0 på exempel ger 0 = x och y0) y vi startar förstås x 0 = 0 och y 0 = ) k = h f x 0,y 0 ) = h+x 0 y 0 } = 0+0 } = 0 k = h f x 0 + h,y 0 + k ) = h + x 0 + h ) = 0+005 } = 0005 k 3 = h f x 0 + h,y 0 + k ) = h + x 0 + h ) = 0+005 005}= 000475 k 4 = h f x 0 +h,y 0 +k 3 ) = h+x 0 +h) y 0 +k 3 )} = 0+0 00475}= 000955 y = y 0 + k +k +k 3 +k 4 = 0048375 x = x 0 +h = 0+0 = 0 k = h f x,y ) = h+x y } = 0+0 0048375}= 000955 k = h f x + h,y + k ) = h + x + h ) y + k )} = 0+05 0095955}= 004040438 k 3 = h f x + h,y + k ) = h + x + h ) y + k )} = 0+05 085779}= 003848 k 4 = h f x +h,y +k 3 ) = h+x +h) y +k 3 )} = 0+00 08578}= 0083487 y = y + k +k +k 3 +k 4 = 0873090 x = x +h = 0+0 = 0
SF545, Numeriska Metoder, I, HT0, Ninni Carlsund Levin, Föreläsning 8 Den rimlighetskontroll man kan göra är att k och k 3 bör vara någorlunda lika och att skillnaden mellan k och k är ungefär som skillnaden mellan k 3 och k 4 Vi kan redan nu skatta y0)-värdet till 0873 fem säkra decimaler, ty E trunk = 43 0 och E pres = 90 0 7 och E ber 0 9 avr till 9 decim) vilket ger E trunk +E pres +E ber < 05 0 5 ) Eftersom både Euler och RK arbetar konstant steg och har en trunkeringsfelutveckling av typen E trunk = c h p + c h p+ + c 3 h p+ + så kan man förbättra resultatet ytterligare Richardsonextrapolation n y Eul ŷ Eul /3 ŷ Eul 000000000 - - - - - 00000000 000000000 00000000 - - - 4 045050 00045050 090500-0000987500 -0000397 0883333 8 05804 00045554 08797358-000054 -00000774 087544 079938 000047577 0874958-0000050400 -00000800 0873058 3 08705 00005784 08734749-0000009 -0000004070 0873079 n h y RK / ŷ RK 0 08733333 - - - 0 0873090-00000043 -0000000 08730739 4 005 087307-000000039 -0000000009 08730753 8 005 08730754-0000000008 -000000000 08730753 Vi ser att även om man tar hänsyn till att varje steg i RK är fyra gånger så jobbigt som ett Euler-steg så lönar sig Runge-Kutta RK-värdet n = 4 motsvarar i arbete Eulervärdet n =, men RK-värdet är mycket bättre Inte ens ett stegs Richardson-extrapolation hjälper tvärtom) function yprim=dydxx,y); x0=0; xslut=0; y0=; n=8; yprim=+x-y; h=xslut-x0)/n; x=x0; y=y0; xx=x0; yy=y0; for i=:n; yprim=dydxx,y); y=y+h*yprim; x0=0; xslut=0; y0=; n=8; x=x+h; [xx,yy]=odeul dydx,x0,xslut,y0,n); xx=[xx;x]; yy=[yy;y]; m=lengthxx); end; yslut=yym) yslut=y plotxx,yy) plotxx,yy); yvek=[]; for n=[ 4 8 3]; euler; yvek=[yvek; yslut]; end; yvek % n bortkomm yvek=[]; n=; for j=:; euler; yvek=[yvek; yslut]; n=*n; end; yvek % n bortkomm x0=0; xslut=0; y0=; tolval=odeset RelTol,e-); tol=e-; [xut,yut]=ode45 dydx,[x0,xslut],y0,tolval); [xut,yut]=ode45 dydx,x0,xslut,y0,tol); n=lengthxut); yslut=yutn); plotxut,yut) tolval=odeset RelTol,e-9); tol=tol/000; [xut,yut]=ode45 dydx,[x0,xslut],y0,tolval); [xut,yut]=ode45 dydx,x0,xslut,y0,tol); m=lengthxut); yslut=yutm); if m~=n; etrunk=absyslut-yslut),end; valt=yslut 3
SF545, Numeriska Metoder, I, HT0, Ninni Carlsund Levin, Föreläsning 8 System av första ordningens differentialekvationer GKN sid 0 y = fx,y,z) ya) = c Standardform för system, S p 303 : z = gx,y,z) za) = d Exempel y = 3x yz y05) = z sökt z3) = yx z05) = 3 Eulers metod GNM sid 7)3,S p 303 y n+ = y n +h fx n,y n,z n ) z n+ = z n +h gx n,y n,z n ) x n+ = x n +h y 0 = c z 0 = d function uprim=dudxx,u); x0= y0= z0= xslut= n= x0= y0= z0= xslut= uprim=[3*x-u)*u) h=xslut-x0)/n; h=xslut-x0)/n; *u)*x]; x=x0; y=y0; z=z0; x=x0; u0=[y0;z0]; u=u0; xx=x0; yy=y0; zz=z0; xx=x0; uu=u0 ; for i=:n; for i=:n; x0= y0= z0= xslut= n= uprim=dudxx,[y z]); uprim=dudxx,u); u0=[y0 z0]; x=x+h; x=x+h; [xut,uut]=odeul dudx,x0,xslut,u0,n); y=y+h*uprim); u=u+h*uprim; zut=uut:,); z=z+h*uprim); xx=[xx;x];uu=[uu;u ]; plotxut,zut) xx=[xx;x];yy=[yy;y];zz=[zz;z]; end; end; zz=uu:,); plotxx,zz) plotxx,zz) Trunkeringsfelet skattas som vanligt genom en jämförelse motsvarande beräkning dubbla steglängden Regelbundenheten i trunkeringsfelet skattas som vanligt och Richardsonextrapolering fungerar utmärkt eftersom både Euler och Runge-Kutta är metoder konstant steg och har ett trunkeringsfel av typen E trunk = c h p +c h p+ + Man brukar föra in alla beroende variabler i en vektor, vilket ger oss standardformen för system: Inför u = y u = z u = y} = y = 3x yz = 3x u u u = z} = z = yx = u x dvs u = 3x u u u = u x Standardform för system, GKN sid 0/GNM sid 7)3/S p303 : ū = fx,ū) ūa) = c Eulers metod GNM sid 7)3/S p 304 ūn+ = ū n +h fx n,ū n ) x n+ = x n +h ū0 = c I Exempel ovan blir således x 0 = 05,y 0 = och z 0 = 3 alternativt x 0 = 05,u 0 = och u 0 = 3 Alla högre ordningens DE kan skrivas om till ett system av första ordningens DE GKNs0/GNM 7)4/S p 304 u = y u = y} = y = u y = 5xy e y +x cos4y ) inför u = y u = y } = y = u 3 u 3 = y u 3 = y } = y = 5xu e u +x cos4u 3 ) 4
SF545, Numeriska Metoder, I, HT0, Ninni Carlsund Levin, Föreläsning 8 Samma teknik gäller vid system av högre ordning: u = y u = y} = y = u y = 8 yz +x y u = y u = y } = y = u 3 y = z inför u 3 = y u 3 = y } = y = 8 yz +x y = 8 u u 4 +x u xz u 4 = z u u 5 = z 4 = z} = z = u 5 u 5 = z } = z = xzy = xu 4 u 3 Om exakta lösningen är känslig för små störningar i indata är problemet illakonditionerat eller instabilt Om den numeriska metoden ger stora ändringar i lösningen vid små störningar är metoden instabil kan gälla även om själva DE är stabil) c 0 Ninni Carlsund Levin 5