Föreläsning, Numme K2, 72 GNM Kp 6 Integrler & GNM 8:C Richrdsonextrpoltion yc yd y y y2 yb H c d b A = H ( ) y +y 2 = H 2 { h 2 y + } A = A +A 2 +A = 2 y 2 = h 2 y +y c +y d + 2 y b 2 (y +y c )+ h 2 (y c +y d )+ h } 2 (y d +y b ) }, h = c = d c = b d b f(x)dx T(h) = Trpetsregeln T(h) = h 2 f()+f(+h)+ f(+2h)+ +f(b h)+ } 2 f(b) b E trunk,t(h) = f(x)dx T(h) = c h 2 +c 2 h 4 +c h 6 + T(h) br pproximtion v b f(x)dx om streck-kurvn liknr f(x) Prktisk integrl-skttning : svr = T(h) Rätt säkert om E trunk minskr med fktor 4 E trunk = T(h) T(2h) när steglängden hlvers Prktisk fel-skttning vid metod med konstnt steg h: svr = (h), E trunk = (h) (2h) Rätt säkert om E trunk = c h p + och (4h) (2h) (2h) (h) 2p Fst då kn mn (oftst) få ett bättre svr med Richrdsonextrpoltion! För trpetsregeln gäller I = f(x)dx T(h) = I +c h 2 +c 2 h 4 +c h 6 + T(2h) = I +c (2h) 2 +c 2 (2h) 4 +c (2h) 6 + = I +4c h 2 +6c 2 h 4 +64c h 6 + 4T(h) T(2h) = I +h 2 2c 2 h 4 6c h 6 + (4T(h) T(2h)) = I +h 2 4c 2 h 4 2c h 6 + ˆT(h) = T(h)+ (T(h) T(2h)) = I + c h 4 + c 2 h 6 + E trunk,ˆt(h) = c h 4 + c 2 h 6 +
Om h < så är h 4 h 2 dvs troligen ett mycket mindre trunkeringsfel Men inte säkert! Om trunkeringsfelet i T(h) inte dominerdes v c h 2 utn v c 2 h 4 så hr felet blivit cirk fyr gånger större i ˆT(h) än det vr i T(h) Mn måste lltså koll vd som dominerr trunkeringsfelet och sedn eliminer den termen Om E trunk (2h)/E trunk (h) 2 p så vet mn tt termen c p h p dominerr och bör eliminers i först hnd: Richrdson-extrpolering: ˆ(h) hr ett mindre trunkeringsfel än (h) om ˆ(h) = (h)+ (h) (Qh) Q p Trunkeringsfelet i ˆ(h) kn sktts med Etrunk = ˆ(h) ˆ(Qh) och (Q 2 h) (Qh) (Qh) (h) Q p E trunk,t(h) = c h 2 +c 2 h 4 + ˆT(h) = T(h)+ (T(h) T(2h)) ) (ˆT(h) ˆT(2h) E trunk,ˆt(h) = c h 4 + c 2 h 6 + h 4 2 4 = 5 ˆT(h) = ˆT(h)+ 5 E trunk,ˆt(h) = c h 6 + c 2 h 8 + Prktisk integrl-skttning 2: Prktisk integrl-skttning : svr = ˆT(h) E trunk = ˆT(h) ˆT(2h) Rätt säkert om T(4h) T(2h) T(2h) T(h) 4 svr = ˆT(h) E trunk = ˆT(h) ˆT(2h) Rätt säkert om ˆT(4h) ˆT(2h) 6 ˆT(2h) ˆT(h) % INTEGRANDFIL % FLERA TRAPETSER function y=funk(x); = ; b= ; n= ; y= t=; for i=:4; h=(b-)/n; % EN TRAPETSREGEL x=+h*[:n]; y=funk(x); = ; b= ; n= ; t(i)=h*(sum(y)-(y()+y(n+)))/2); h=(b-)/n; n=2*n; x=:h:b; end; y=funk(x); t=t trpets=h*(sum(y)-(y()+y(length(y)))/2) plot(x,y) % KOLL AV LAGOM ANTAL DELAR = ; b= ; n= ; m=4; h=(b-)n; hh=(b-)/m; x=+h*[:n]; xx=+hh*[:m]; y=funk(x); yy=funk(xx); plot(xx,yy,x,y,x,y, o ) Trpetsregeln Inte trpetsmetoden! Richrdson-extrpoltion Förbehndling Uppdelning Kpning Vribelsubstitution Prtiell integrtion qud qud8 qudl Adptiv steglängd 2
Exempel : Numerisk integrtion med trpetsregeln med f(x) = x 5, = och b = 5: n = h = 4 T(4) = 4 2 f()+ } 2 f(5) = 6252 { x 5 dx n = 2 h = 2 T(2) = 2 2 f()+f()+ } 2 f(5) = 62 { n = 4 h = T() = 2 f()+f(2)+f()+f(4)+ } 2 f(5) = 2862 5 Utn Richrdsonextrpoltionskullevi väljt() E trunk = T() T(2) = 2862 62 = 75 E pres = 286 2862 = 2 vilket ger slutsvret 286±76 Richrdsonextrpoltion för hnd gör mn lättst i en tbell: h T(h) / ˆT(h) 4 6252 2 62 264 88 272 2862 75 25 262 2 Innn vi vågr tro på resulttet gör vi två kontroller: Skillndern melln värden för olik h (dvs -värden på en rd) skll minsk när vi extrpolerr 2 -värden i en kolumn skll vt på regelbundet sätt J, skillndern minskr och vi kn koll kvoten i den först -kolumnen: ( 264)/( 75) = 52 J det stämmer, skll vt med ungefär fktorn 4 Vi väljer tt svr med ˆT(h) = 262 med skttningen v trunkeringsfelet till E trunk = 262 272 = 2 (dvs slutsvr 26 ± ) Integrlen kn beräkns nlytiskt, det exkt svret är 264 som ju ligger inom det ngivn intervllet, lltså en korrekt skttning Mtlb hr färdig rutiner för integrlberäkning Då nger mn br funktionsfilens nmn, vilket intervll mn hr och vilken noggrnnhet mn önskr: % Med Mtlbs inbyggd: % Med Mtlbs inbyggd = ; b= ; tol= ; = ; b= ; tol= ; intq=qud( funk,,b,tol) intq8=qud8( funk,,b,tol) Etrunk=tol Etrunk=tol*bs(intq8) Exempel : Ett exempel när förbehndling krävs: (x 5) 8 + dx = + function y=funk(x); tol=e-6; tol=e-6; y=/((x-5)^8+); inte=qud8( funk,,,tol) int=qud8( funk,,,tol); Einte=tol*bs(inte) int2=qud8( funk,,,tol); int=int+int2 Eint=tol*bs(int) Mn får inte = 8645587 och Einte = 86456 4 dvs mn tror mn hr två säkr decimler, men integrlen med fyr korrekt decimler är 8654664 Den inbyggd rutinen hr givit ett resultt vi inte skll tro på (Reltiv felet är 8645587 8654664 /8654664= 977/8654664= 6 ) Dett beror inte på något fel i Mtlb-rutinen utn på tt integrnden/integrlen är för krånglig! Med uppdelningen får vi int = 8654664 och Eint = 86547 4 Ett resultt som är korrekt Det är just för tt vet när/hur mn kn nvänd de färdig rutinern som vi måste förstå grundern i de numerisk metoden De förbehndlingr vi gör är: Uppdelning Kpning Substitution Prtiell integrtion
Exempel 4 : eräkn x 6 +cos 2 dx med fyr säkr decimler (x) Del upp integrlen i två delr, delningspunkten kllr vi : I = x 6 +cos 2 (x) dx = som vnligt, blir enkelt T ±E T när mn vet Andr delintegrlen gör vi en (grov) överskttning v, då vet vi hur mycket fel vi gör om vi skulle ignorer den, dvs kp bort den: I 2 = x 6 +cos 2 (x) dx x 6 dx = [ ] 5x 5 = 5 5 = E kp 5 5 Om = så är E kp 5 5 = 2 5 vilket ryms inom önskd felgräns Om jg sedn beräknr den först delintegrlen med ett fel mindre än 5 blir summn v felen mindre än 5 5 och jg hr tom fem säkr decimler Integrlens värde sktts lltså till T ±(E T +E kp ) = T ± ( E T + 5 5 ) function y=funk4(x); tol=e-6; =; x=:2:; y=/(x^6+(cos(x))^2); i=qud8( funk4,,,tol); y=funk4(x); E=tol*bs(i); plot(x,y) Ekp=/(5*^5); title( Ex4 ) svr=i felgrns=e+ekp Exempel 5 : Följnde integrl är svår för trpetsregeln I = 5 Problemet kn undviks på fler sätt, tex substitution: x = t Sätt x = t 2 = x = t = x = 5 t = = I = 5 dx = 2tdt Nu kn integrlen kn lätt sktts med trpetsregeln En nnn lösning är tt nvänd prtiell integrtion: I = 5 x cos(x) dx = [ 2 x cos(x) ] 5 5 Den ny integrlen kn lätt sktts med trpetsregeln cos(x) x dx ty x = ger division med noll 5 cos(t 2 ) t 2tdt = 2 x ( sin(x)) dx = 2 cos(5)+2 5 5 2 cos(t 2 )dt x sin(x)dx 4 Exempel 6: 4 x dx 6 FUNKTIONSFIL: RESULTERAR I: function y=funk6(x); Recursion level limit level reched in y=x^(-6); Singulrity likely HUVUDPROGRAM: iq = 97588284528e+9 =e-4; b=e4; iq8 = 78677749876e+2 iq=qud( funk6,,b) iql = 226285298658e+9 iq8=qud8( funk6,,b) tot = 279776e+9 iql=qudl( funk6,,b) rtt = 2e+9 tot=; t=; for i=:8; % Direktnropet v qud/qud8/qudl gv fel svr tot=tot+qud8( funk6,t,*t); % Men vi vrndes i smtlig fll! t=*t; % Med uppdelning i delr som blir snll fr vi end; % rtt svr (skillnden till rtt svret r mindre tot % n begrd tolerns)! rtt=/(5*^5)-/(5*b^5) E tb, T(h) (b ) E tb, f(x) E tb, Romberg(h) E tb, T(h) (E tb, Rich(h) 826 E tb, (h) ) 4 c 27 Ninni Crlsund Levin
Lösning till tbellen i Exempel : 5 x 5 dx h T(h) / ˆT(h) /5 ˆT(h) 4 6252 2 62 264 88 272 2862 75 25 262 2 8 264 5 2669 9 64 265 7 265 kvot 52 resp 89 kvot 74 Eftersom ll värden (mellnresultt) vrundts till fyr decimler stör beräkningsfelet fjärde decimlen Med fler siffror i räkningrn får jg: h T(h) / ˆT(h) /5 ˆT(h) 4 6252 2 62 264 88 272 2862 75 25 262 2 8 264 5 266888 92 647 2645 749 5 264 Ånyo ser vi tt sist siffrorn är påverkde v beräkningsfelet (Jg hr vrundt ll mellnresultt till sex decimler, så sjätte decimlen i svret är inte tt lit på Kom ihåg tumregeln tt räkn med minst två extr siffror) Jg svrr 264 med fyr decimler Dett innebär ju E tot = 5 och jg ser tt trunkeringsfelet och och beräkningsfelet ligger också kring sjätte decimlen dvs långt under den gräns jg svrr med 5