Lbortionstillfälle 3 Numerisk integrtion Målsättning vid lbtillfälle 3: Klr v lbortionsuppgift. Innn dess läser mn hel texten nog. I mån v tid görs övning, men den är gnsk svår. Numerisk integrtion Oft kn mn inte bestämm integrler f(x)dx exkt utn mn får nöj sig med tt beräkn pproximtioner. T.ex. exp(x )dx kn inte beräkns exkt, eftersom det inte finns något slutet uttryck för den primitiv funktionen. Det kn också vr så tt integrnden br är känd i viss punkter, t.ex. vi hr en serie med mätdt. Den s.k. trpetsformeln går ut på tt mn ersätter integrnden med ett förstgrdspolynom P (x) (rät linje) som går igenom punktern (,f()) och (b,f(b)). Om vi integrerr polynomet får vi ren v ett prllelltrpets f(x)dx P (x)dx = b ( ) f() + f(b) Mn kn vis, om f är kontinuerlig och f (x) M för x b, tt felet vid pproximtionen blir högst M (b )3 Vi får Simpsons formel om vi ersätter integrnden med ett ndrgrdspolynomet P (x) som går igenom punktern (,f()),( +b +b,f( )) och (b,f(b)). Integrtion ger (efter lite klkyler) f(x)dx P (x)dx = b ( + b f() + f( ) + f(b)) Felet vid pproximtionen blir, om f () är kontinuerlig och f () (x) K x b högst Trpetsmetoden K (b )5 88 Låt x i = + ih,i =,,,n med h = b n vr en indelning v x b. Använd trpetsregeln på vrje delintervll T n = h ( f(x ) + f(x ) + + f(x n ) + f(x n ) ) För T n får vi ett fel för vrje delintervll, det totl felet blir högst med M enligt ovn. b Mh Simpsons metod Smm intervllindelning som i trpetsmetoden ger S n = h 3 {f(x ) + f(x ) + f(x ) + f(x 3 ) + + f(x n ) + f(x n ) + f(x n )} med felet högst med K enligt ovn. b 8 Kh
Exempel. Vi skll pproximer x( + sin(7x))dx med trpetsmetoden >> =; b=; >> h=b-; x=:h:b; f=x.*(+sin(7*x)); >> T=h*(f()/+f()/) T =.39 >> h=(b-)/; x=:h:b; f=x.*(+sin(7*x)); >> T=h*(f()/+f()+f(3)/) T =.9998 >> h=(b-)/; x=:h:b; f=x.*(+sin(7*x)); >> T=h*(f()/+f()+f(3)+f()+f(5)/) T = 3.59 >> h=(b-)/8; x=:h:b; f=x.*(+sin(7*x)); >> T8=h*(f()/+sum(f(:8))+f(9)/) T8 = 3.75 f(x)=x(+sin(7x)) T T T T 8.5.5.5.5.5 >> h=(b-)/; x=:h:b; f=x.*(+sin(7*x)); >> T=h*(f()/+sum(f(:end-))+f(end)/) T = 3.75 Oft beräkns successivt T,T,T, (intervllhlveringr), så tt mn kn åternvänd redn beräknde funktionsvärden. Nu nöjer vi oss med dett enkl (men oekonomisk) sätt tt räkn ut resultten. Funktionen sum summerr värden i en vektor. Med f(:8) bilds en vektor som består v elementen på plts -8 i vektorn f. Prktiskt är också end som ger sist pltsnummer i en vektor. Nu till ett exempel (från termodynmik) när integrnden ges v en tbell. Exempel. Den energi som behövs för tt upphett en mol metylklorid (CH 3 Cl) från 3 K till K ges v q p = där C p (T) är värmekpciteten per mol för metylklorid enligt 3 C p (T)dT T 3 5 7 8 9 C p.8 8. 55.9.5. 7. 75.33 78.9 Med Mtlb beräknr vi q p och skttr bsolut felet. Det sistnämnd görs med vribeln Absfel sist i nednstående klkyl, och kn hopps över. Bkgrunden är en uppskttning v störst värdet v ndrderivtns belopp med hjälp v ndr ordningens differenser. >> T=3::; h=; >> Cp=[.8 8. 55.9.5. 7. 75.33 78.9]; >> plot(t,cp, * ), xis([ 8]) >> fill([t(end) T(end) T() T],[Cp(end) Cp], g ), xis([ 8])
8 8 8 8 >> qp=h*(cp()/+sum(cp(:end-))+cp(end)/) qp = 379 >> Absfel=(T(end)-T())/*mx(bs(diff(Cp,))) Absfel = 8.7 Trpetsmetoden ger q p = 379 och felet blir högst 8.. Mätfel inverkr med en osäkerhet på ( 3).5 = 3.5 som i dett fll är närmst försumbrt. Med fill kn vi fyll ett polygonområde. Finns med här br för tt illustrer integrlvärdet. Lägg märke till diff som bildr en pproximtion v h C p (T) och mx som ger mximl värdet. Adptiv metoder Det finns en mängd v ndr typer v metoder, t.ex. dptiv metoder där mn inte gör en likformig indelning v intervllet, utn eftersträvr tt utvärder integrnden där det är krftigst vrition i den. T.ex. qud och qudl i Mtlb bygger på en dptiv metoder. Se help i MATLAB för närtmre informtion. Exempel 3. Vi kn pproximer x( + sin(7x))dx noggrnnt med >> qudl( x.*(+sin(7*x)),,) ns = 3.753978 Lägg märke till det enkl sätt vi beskriver integrnden på, det går br om vi hr ett funktionsuttryck utn konstnter eller prmetrr. Mn kn också skriv qudl(f,,) eller qud(@f,,) om f är en inline-funktion (först fllet), respektive om f är en funktionsfil (ndr fllet). Med qudl( x.*(+sin(7*x)),,,e-8) kn vi sätt feltolernsen för tt få ett noggrnnre resultt (defult för feltolernsen är ). Nu skll vi se på en mer komplicerd integrnd som måste beskrivs med en function-fil. Exempel. I smbnd med studiet v ett fysikliskt fenomen (hålrumsstrålre) vill mn beräkn λb πhc λ λ 5 (e hc/kλt ) dλ för olik värden på T. Konstntern hr värden h =.5 3, c =.9979 8 och k =.385 3. Integrtionsgränsern är λ =. och λ b =.7. function y=me(lmbd,t) h=.5e-3; c=.9979e8; k=.385e-3; y=*pi*h*c^./(lmbd.^5.*(exp(h*c./(k*lmbd*t))-)); >> T=5; >> qudl(@me,.e-,.7e-,[],[],t) ns =.3e+ Här hr vi stt tomm mängden [ ] som pltshållre för feltolernsen och får då defult-tolernsen, givetvis kn vi även sätt in önskd tolerns. Den ndr pltshållren gäller en prmeter som styr om det skll ske utskrift v delresultt under integrtionen (defult är ingen utskrift). Därefter kommer ktuellt värde på T. Övning. Rit grfern v Fresnelintegrlern x ( ) πt C(x) = cos dt, S(x) = x ( ) πt sin dt för x 5. (Dess integrler uppstår i smbnd med studiet v ljusdiffrktion.) 3
Lösning till övningsuppgift. n=; x=linspce(,5,n); c=inline( cos(pi/*t.^) ); s=inline( sin(pi/*t.^) ); C=zeros(size(x)); S=zeros(size(x)); for k=:n C(k)=C(k-)+qudl(c,x(k-),x(k)); S(k)=S(k-)+qudl(s,x(k-),x(k)); end subplot(,,), plot(x,c,x,s, r ), title( Fresnels integrler ) text(.,., C(x) ), text(,.3, S(x) ), xlbel( x ) subplot(,,3), plot(c,s), xis( equl ), title( Cornus spirl ) xlbel( C(x) ), ylbel( S(x) ).8 Fresnels integrler. C(x).. S(x).5.5.5 3 3.5.5 5 x Cornus spirl. S(x)...5 C(x)
Lbortionsuppgift. Tillverk en funktionsfil för beräkning v integrler med trpetsmetoden. Indt: en integrnd (given med inline), integrtionsgränser och ntl delintervll. Utdt: närmevärdet för integrlen. Undvik for-loopr, nvänd sum! ) Test genom tt beräkn π sinx x dx För tt undvik division med noll, nge nedre integrtionsgränsen som eps, vilket ger tlet 5. Jämför med MATLABS eget qudl. b) Plott kurvn x = t + sin t, y = t + cos 5t för t π. (Generer x och y, nvänd plot(x,y) och begär xis equl!) Försök tt med ögonmått gör en grov uppskttning v kurvns längd. Beräkn därefter längden med en integrl (läroboken sid 33). Pröv både med ditt trpetsprogrm (vrier ntlet delintervll) och med qudl! c) Till sist ger vi oss på en generliserd integrl: e x dx Uppgift: Beräkn integrlen med ett fel vrs bsolutbelopp är högst. Del då upp integrlen i två: en från till, en från till (med lämpligt vl v ). Om är stort nog (behövs inte så mycket!), blir den senre integrlen mycket liten. Om den försumms, ger dett ett fel som kn dders till trpetsfelet i beräkningen v den först. Tips: för x > är x > x. Pröv ett och nvänd olikheten för tt uppsktt den ndr integrlen med en som du kn räkn ut. Uppsktt sedn trpetsfelet med den metod som står under rubriken Trpetsmetoden på sid i dett mteril, välj ntlet delintervll tillräckligt stort. Addert till den bortkstde integrlen sk det ge ett fel v den begärd storleksordningen. Använd gärn qudl som kontroll! Glöm inte tt läs på mterilet för näst vecks lbortionstillfälle! Ny kommndon och funktioner i Mtlb som vi nvänt vid dett lbtillfälle. fill fyller ett polygonområde med en färg. loglog, semilogx, semilogy smm som plot, men först logritmers vektorern. text, gtext skriv en textsträng i en grf. logspce gör en vektor med likformigt fördelde -exponenter. zeros gör en mtris fylld med nollor. size nger ntl rder och kolonner i en mtris. diff bild successiv differenser v elementen i en vektor. mx, min tr ut störst/minst värdet ur en vektor. sum, prod summ resp. produkt v elementen i en vektor. inline enrds intern funktionsbeskrivning. qud och qudl integrtion v en funktion över ett intervll. 5