Integrler Från len: Integrler Beräkningsvetenskp I/KF Trpetsformeln oc Simpsons formel Integrler Integrler Från len: Från len: Adptiv metod (dptiv Simpson) Lösning v integrl i Mtl: när integrnden är kontinuerlig funktion: nvänd integrl, qud eller qudl integrl/qud/qudl klrr själv v tt gör indelning i intervll när integrnden är diskret mätvärden: nvänd trpz Här lir indelningen given v ntlet dtvärden Exempel (jfr l) Använd integrl, qud eller qudl @func klls för ett f () x dx funktionsndtg I = integrl(@func,, ) I mtlfunktionen func definiers integrnden måste tl om för Mtl vilken integrl som sk löss integrl/qud/qudl löser sedn integrlen med numerisk metod Num integrering klls även kvdrtur Aretsgång: π Lös 0 cos( xdx ) Diskretiser, är 8 intervll Approximer med 1: grdspolynom i vrje intervll Beräkn ren i vrje prllelltrpets pproximerr integrl på delintervllet Klls Trpetsformeln 1
Exempel (jfr l) Smm prolem Diskretiser, är 8 intervll Approximer med 2: grdspolynom på vrje duelintervll (är lir det 4 duelintervll) Klls Simpsons formel Lösning v integrler Aretsgång: Givet prolemet f (x)dx. Diskretiser x, dvs del in i punkter x 0, x 1,, x N, där x 0 = oc x N = Ersätt integrnden på vrje delintervll med en enklre funktion, t ex polynom Beräkn den enklre funktionens integrl exkt på vrje delintervll. Kn görs med enkel formel Summer ll delintegrler Räcker om f(x) enrt känd i enstk mätpunkter x k, dvs enrt f(x k ) känd. Adptivitet (jfr l) Trpets o Simpson I prktiken nvänds dptiv metoder Dess eräknr diskretiseringen på egen nd så tt en viss noggrnnet erålls Indelningen vrierr där funktionen vrierr mycket krävs finre indelningen oc tvärtom Fråg: Hur kn metoden eräkn felet utn tt känn till exkt lösning? Adptiv Simpson Formler på ett delintervll/duelintervll: Trpetsformeln x k + 1 f() x dx ( x 1 1 1 ) k k k k k x + + k + + + = k f( x ) f( x ) f( x ) f( x ) 2 2 x k os redden öjden Simpsons formel x k + 2 1 f () x dx ( x 2 )( ( ) 4 ( 1) ( 2)) 6 k+ xk f xk + f xk+ + f xk+ = x k = k ( f( x ) 4 ( 1) ( 2)) k + f xk+ + f xk+ Trpets o Simpson Allmänt kn mn nsätt lösningen som x k+q f (x)dx k f (x k ) x k k=0 klls Newton-Cotes formler q Formlern kn sedn nvänds för ärledning v Trpets (q=1) oc Simpson (q=2) Trpets o Simpson Om ekvidistnt indelning, k =, kn mn få en enkel formel för el intervllet Trpetsformeln f (x)dx N 1 f (x 2 k+1 ) + f (x k ) = k=0 2 ( f (x 0 ) + 2 f (x 1 ) + + 2 f (x N 1 ) + f (x N )) Simpsons formel N 1 f (x)dx f (x k ) + 4 f (x k+1 ) + f (x k+2 ) = k=0,2, ( f (x 0 ) + 4 f (x 1 ) + 2 f (x 2 ) + + 2 f (x N 2 ) + 4 f (x N 1 ) + f (x N )) Os. De är formlern är mer prktisk vid ndräkning. I verklig fll nvänds dptiv metoder, dvs ej ekvidistnt indelning. 2
Trpets o Simpson Om mn r ekvidistnt indelning kn metodern enkelt implementers med sklärprodukt f (x 0 ) 1 1 4 f (x 1 ) 2 2 f =, v tr =, v s = f (x N 1 ) 2 2 f (x N ) 1 4 1 oc integrlen eräkns T T IT = v, 2 tr f IS = v s f Noggrnnetsordning 0.8 x2 0 e dx Värde enligt Mtls integrl: 0.657669856284 Noggrnnetsordning Vilket lir diskretiseringsfelet vid olik vl v? Hur vtr det för minsknde? Med trpetsformeln I-T() (I-T(2))/(I-T()) 0.4000 1.15e-002 0.2000 2.819e-00 4.0280 0.1000 7.05e-004 4.0069 0.0500 1.758e-004 4.0017 Slutsts: felet vtr med en fktor 4 då lvers = indelningen, diskretiseringsprmeter T() = Beräkning med Trpets med indelning T(2) = Beräkning med Trpets, indelning 2 Noggrnnetsordning Smm med Simpsons formel I-S() (I-S(2))/(I-S()) 0.4000-4.458e-004 0.2000-2.65e-005 16.9206 0.1000-1.621e-006 16.2549 0.0500-1.009e-007 16.068 Slutsts: felet vtr med en fktor 16 då lvers = indelningen, diskretiseringsprmeter S() = Beräkning med Simpson, indelning T(2) = Beräkning med Simpson, indelning 2 Noggrnnetsordning Noggrnnetsordning Överfört till grfik Trpets En minskning v med fktor 2 => minskning v felet med fktor 4 Simpson En minskning v med fktor 2 => minskning v felet med fktor 16 4 = 2 2 16 = 2 4 Klls metodens noggrnnetsordning
Nogrnnetsordning Noggrnnetsordningen visr ur snt diskretiseringsfelet vtr då minskr Trpets Noggrnnetsordning 2 Diskretiseringsfelet är v ordning O( 2 ) Simpson Noggrnnetsordning 4 Diskretiseringsfelet är v ordning O( 4 ) Givet tt mn vill en viss noggrnnet kräver en metod v låg n.o. mindre => fler eräkningr än metod med ög n.o. Å ndr sidn kn vrje eräkning vr mer omfttnde för en metod med ögre n.o. Noggrnnetsordning Diskretiseringsfelet kn även ärleds nlytiskt med Tylorutveckling Trpets Den lednde (dominernde) termen i felet på ett delintervll är 12 f (x k ) + O(4 ) dett leder till tt felet på el [ ] lir O( 2 ) Simpson På smm sätt felet på ett duelintervll 5 90 f (x k ) + O(6 ) dett leder till tt felet på el [ ] lir O( 4 ) Feluppsktting Feluppsktting Kunskpern om noggrnnetsordning kn nvänds för tt uppsktt felet - utn tt värdet på den exkt integrlen är känd Om I är den exkt integrlen, så lir solut felet Trpets, steglängd I T() = E T I S() = E S Simpson, steglängd Eftersom I inte är känd går det inte eräkn E T resp E S Men mn kn uppsktt diskretiseringsfelet (som vnligen dominerr) För trpets gäller tt felet E T kn uppsktts med T () T(2) ET (Jfr lortion) där T(2) är eräkning v smm integrl med duel steglängd Klls tredjedelsregeln Är en uppskttning v lednde termen i diskretiseringsfelet, dvs O( 2 )-termen Feluppskttning Feluppskttning För Simpson gäller tt felet E S kn uppsktts med S () S(2) ES Jfr lortion 15 där S(2) är eräkning v smm integrl med duel steglängd Klls femtondelsdelsregeln Uppskttning v den lednde termin i diskretiseringsfelet, dvs v O( 4 )-termen Generellt gäller för en metod som eteckns Q E Q Q() Q(2) 2 p 1 där p är metodens noggrnnetsordning Tredjedelsregeln oc femtondelsregeln är lltså specilfll v ovnstående Feluppskttningen nvänds i dptiv metoder för tt uppsktt fel i eräkningen 4
Adptiv metoder Adptiv metoder 1. Beräkn integrlvärde på intervll med steglängd => Q() resp 2 => Q(2) 2. Uppsktt felet (med formel för feluppskttning). Om felet < tolerns - ccepter Q() - eräkn näst intervll, om inget ytterligre intervll finns, så färdig nnrs (dvs felet > tolerns) - Kst Q() - Del intervllet i två intervll - Beräkn integrl, från punkt 1, för vrt oc ett v de två ny intervllen, ges värdet /2 Ex) Scemtiskt ur diskretiseringen i dptiv Simpson kn se ut OK Ej OK Ej OK Ej OK Q(2) Q() OK (intervllet klrt) Etc tills el integrlen färdig Ricrdsonextrpoltion Avrundningsfel Idé: Om I T() = E T så I = T() + E T oc eftersom T() oc E T är känd så kn mn eräkn exkt integrlen I? Fungerr inte riktigt eftersom vi enrt r en uppskttning v E T (den lednde termen i felet) Däremot lir T() T(2) T() + en förättring Mn kn vis tt det lir detsmm som S() På motsvrnde sätt kn mn förättr resulttet i Simpsons metod Dett klls Ricrdsonextrpoltion Förutom diskretiseringsfel r vi vrundningsfel i funktionseräkningrn, s k funktionsfel Hos trpetsmetoden pg vrundningsfel eräkns inte f() x utn f (x) dvs T() = 2 ( f (x 0 ) + 2 f (x 1 ) + + 2 f (x N 1 ) + f (x N )) Om T() = 2 ( f (x 0 ) + 2 f (x 1 ) + + 2 f (x N 1 ) + f (x N )) f (x) f (x) ε så kn mn få frm tt T() T() ( ) ε Avrundningsfel Noggrnnet Funktionsfelet, trpets Motsvrnde för Simpson T() T() ( ) ε Om det r är vrundning så är ε = ε M Men ε kn vr större om f(x)-värden kommer från mätdt med större osäkeret Om enrt vrundningr så är ε litet oc diskretiseringsfelet kommer tt dominer Felkällor: Kontinuerligt ersätts v diskret => diskretiseringsfel Avrundningsfel i eräkning v f( x k ) => funktionsfelet Exkt integrl: I = f (x)dx Numerisk metod, Q: I Q() Då lir det totl solut felet I Q() = diskretiseringsfel + funktionsfel 5
Integrler i Mtl, ett exempel Beräkningsvetenskp I/KF En fllskärmsoppre r fllit sträckn d(t) vid tiden t sekunder, där t gm ( c/ m) t dt () = (1 e ) dt c 0 Skriv ett progrm som eräknr sträckn för olik tidpunkter. Använd g=9.81, c = 12, m = 70. Uttrycket i integrnden är stigeten vid tid t, dvs gm ( c/ m) t vt () = (1 e ) c Vi nvänder t ex integrl i Mtl: I = integrl(@func,, ) Börj med tt definier integrnden i en mtlfunktion som vi t ex kllr stiget1 I = integrl(@stiget1,, ) t d(t) = gm c (1 e (c/m)t )dt 0 Vilk in- oc utprmetrr i stiget1? Inprmeter: t Utprmeter: integrndens värde, klls t ex vt function vt = stiget1(t) % v = stiget(t) % Funktion för eräkning v stiget v % (m/s) som funktion v tiden t % sekunder) os en fllskärmsoppre m = 70; % Fllskärmopprens mss g = 9.81; % grvittionskonstnten c = 12; vt= (g*m/c)*(1 - exp(-(c/m)*t)); Test v funktionen stiget: >> tid = 10; >> v = stiget1(tid) v = 46.9192 >> tid = 1:5 tid = 1 2 4 5 >> v = stiget1(tid) v = 9.0152 16.6102 2.0086 28.990 2.940 Skriver nu en kommndofil för eräkning v integrlen, nmnge till t ex distns1.m dt=integrl(@stiget1,strttid,sluttid); disp([ Sträckn är,num2str(dt), m ]) Testkörning >> distns1 Sträckn är 298.5546 m Oserver! sk även funger för t som vektor 6
Uppsnyggning: det vore r om mn kunde ändr t ex mssn m på ett ställe i kommndofilen så tt den enkelt kn test olik värden på mssn Hur kn mn gör så tt m ändrs i kommndofilen oc då utomtiskt även i funktionen? Mn kn gör dett genom prmeteröverföring eller gloldeklrtion. Prmeteröverföring knske enklst, men inte äst. Först prmeteröverföring Kommndofilen (filnmn: distns2.m): m = 70; dt = integrl(@(x) stiget2(x,m), strttid, sluttid); disp([ Sträckn är,num2str(dt), m ]) Funktionen (filnmn: stiget2.m) function vt = stiget2(t, m) % kommentrer sk ligg är g = 9.81; % grvittionskonstnten c = 12; vt= (g*m/c)*(1 - exp(-(c/m)*t)); Test igen >> distns2 Sträckn är 298.5546 m Ändr till m=90 i kommndofilen >> distns2 Sträckn är 29.97 m Ändr så tt d(t) eräkns för fler värden på m, t ex m = 50, 60,,100 mss = (50:10:100) ; %kolonnvektor dt = zeros(size(mss)); for i = 1:lengt(mss) m = mss(i); dt(i)=integrl(@(x) stiget2(x,m), strttid, sluttid); end [mss dt] % Utskrift som tell Lgrr filen i distns.m Resultt Annn vrint: läs in mssn genom inputkommndot >> distns ns = 50.0000 25.8879 60.0000 278.4410 70.0000 298.5546 80.0000 15.2847 90.0000 29.97 100.0000 41.486 mss = input( Ange mss: ); dt = zeros(size(mss); for i = 1:lengt(mss) m = mss(i); dt(i)=integrl(@(x) stiget2(x,m), strttid,sluttid); end disp( Mss Hstiget ); disp([mss dt]); 7
Resultt >> distns Ange mss: 50 ns = 50.0000 25.8879 >> distns Ge mss: [60:10:90] ns = 60.0000 278.4410 70.0000 298.5546 80.0000 15.2847 90.0000 29.97 Os tt det nu fungerr tt ge en vektor med mss. I oc med tt lengt nvänds i koden lir det utomtiskt rätt ntl vrv Vrint 2: Gloldeklrtion Scriptfilfil glol m % gloldeklrer m = 70; dt = integrl(@stiget,strttid,sluttid); disp([ Sträckn är,num2str(dt), m ]) Funktionen function vt = stiget(t) % kommentrer ort pg pltsrist glol m % deklrer glol g = 9.81; % grvittionskonstnten c = 12; vt= (g*m/c)*(1 - exp(-(c/m)*t)); Prmetern m är nu glol, dvs gäller i el Mtl-miljön Mn rukr försök undvik glol-deklrtion eftersom det kn ge sidoeffekter (funktionen ändrr på prmetrr i el progrmmet, dvs även t ex i kommndofilen) Det är progrmmeringsmässigt snyggre tt nvänd prmeteröverföring vi nropet För enklre integrnder kn mn lös prolemet utn tt skriv en Mtlfunktion i en m-fil m = 70; g = 9.81; c = 12; strttid Funktionen = 0; dt=integrl(@(t) (g*m/c)*(1-exp(-(c/m)*t)), strttid,sluttid); disp([ Sträckn är,num2str(dt), m ]) Dett klls en nonym funktion i Mtl 8