Matematik med Matlab M1 och TD1 1999/2000 sid. 27 av 47 4 Numerisk integration och av differentialekvationer Redovisning redovisas som tidigare med en utdatafil skapad med diary 4.1 Numerisk av ekvationer. Uppgift 1: alla extrempunkter till funktionen. Derivatans skall du med av ekv och sedan, lite hand, lite med maskin.) Skriv in extrempunkterna och kommandot som ger dig dem i dagboken. Rita grafen till kurvan och kontrollera att extrempunkterna. 4.2 Numerisk av integraler med simpsons formel. skall ni an MATLABs egen integrationsmetod quad att en integral. att man skall kunna kunna an quad funktionen finnas i en funktionsfil eller vara inline-definierad. till exempel integralen. Kommandot quad( sin,0,pi). Om ni vill precisionen i ni till en variabel, quad( sin,0,pi,10^(-3)) ger tolerans. En femte variabel ger att se vilken intervallindelning som an Kommandot quad( sin,0,pi,10^(-3),1). Uppgift 2: integralen med tolerans. An din funktionsfil Skriv in resultatet i dagboken. Quad bygger Simpsons metod ett ganska smart genom att varje delintervall delas tills i integraluppskattningen liten. Quad en kallad adaptiv metod intervallindelningen succesivt Du kan titta filen med av type quad. I princip fungerar det integralen med simpsons formel utan att dela intervallet. Dela sedan intervallet i delar. integralen igen och med det tidigare Om stor behandlas integralen er de intervallhalvorna var sig. Vi har redan ett delar intervallet i delar, med simpsons formel och. Om en nu stor behandlas integralen er de nya intervallhalvorna var sig. Detta upprepas tills man liten er samtliga delintervall. Syftet med den adaptiva metoden att minska antalet g. Med ett g menar man oftast en multiplikation och en addition tillsammans. Detta kallar man en flyttalsoperation flop. Ett hur omfattande en viss kalkyl ges av hur flops som har I Matlab finns ett verk flops som reda hur flyttalsoperationer som sedan senast vilket med flops(0). Uppgift 3: Vi skall nu se hur ande den adaptiva metoden quad och integralen i uppgift med varierande tolerans. med n=3 och flops(0);int1=quad( sinc,0,pi,16^(-n));flops,flops(0); Upprepa detta n Sluta raden Warning: Recursion level limit reached... times dyker upp. Redovisa genom att skapa en matris med n i kolonnen och antalet flops i andra kolonnen. sedan motsvarande med ditt simpson-program om du skrivit ett Upprepa lika som med quad. in antalet flops som tredje kolonn i ov matris. Annars kan du an simpsteg och succesivt antalet delintervall (N). med N = 2. Som tredje kolonn nu kan du in antalet flops som samma noggrannhet som med quad. Skriv in matrisen i dagboken.
4.3 Numerisk av differentialekvationer. Matematik med Matlab M1 och TD1 1999/2000 sid. 28 av 47 en hel del differentialekvationer det eller att ge ett uttryck an. Man visad till att an sig av numerisk metod att 4.3.1 Differentialekvationen vara till. Det att den primitiva funktion till som satisfierar. Enligt analysens huvudsats ges av:. Antag att x = [x(1),x(2),...,x(n)] en radmatris med x(1) =. Antag att vi er radmatrisen y = [y(1),y(2),...,y(n)] y(k) =. Enligt ovan y(1) = och y(k) = +y(k-1). Integralen i denna formel kan man med av quad eller simpson vilket leder till for-snurra definierad i filen funktion.m. Det naturligtvis lika bra om funktionen definierad med inline. y=nan*ones(size(x)); y(1)= ; for k = 2:length(x), y(k)=y(k-1)+quad( funktion,x(k-1),x(k)); end Uppgift 4: in ov for-snurra i en funktionsfil primitiv.m av av primitiva funktioner. Invariabler skall vara funktionsnamn, radmatrisen x, och eventuellt tolerans i integral- Du modifiera quad-kommandot med hur du skrev i funktionsfilen iternoll.m. Testa programmet genom att till intervallet. radmatris x och titta med plot(x,y). med den exakta Rita i samma graf. Utnyttja sedan programmet att differentialekvationen intervallet. en indelning av att det att rita en snygg graf. Rita grafen till i samma bild. in namn och text i bilden. Skriv ut den och in som redovisning. En finess i for-snurran y=nan*ones(size(x));. skapas en matris y av samma typ som skall genereras i for-snurran. I snurran byts elementen i y succesivt ut mot de Detta sparar Om man inte detta Matlab i varje steg av snurran skapa en matris och i denna in det nya elementet. Det tar tid, i synnerhet om det handlar om stora matriser. denna finess minnet. 4.3.2 Differentialekvationen kan tolkas geometriskt genom att riktningskoefficienten tangenten till kurvan. I punkten tangentens riktningskoefficient. Genom att i punkter rita en kort linje med riktningskoefficient kan vi se orna. En enkel metod att differentialekvationen, eller en uppfattning om hur ser ut, att helt enkelt skissa till ekvationen och sedan rita en kurva som ansluter till detta att matlab rita till en differentialekvation kan du definiera funktionen i en funktionsfil fun.m function z=fun(x,y) z= funktionsuttryck; eller med fun=inline( uttryck, x, y ); och sedan an program som du kan mig samma som tidigare. riktningsfalt.m function [X,Y]=riktningsfalt(fun,x0,x1,y0,y1) % riktningsfalt skapar matriser som kan att rita % till en differentialekvation y = f(x,y). % Funktionen f(x,y) skall vara definierad i en funktionsfil eller med inline. % [X,Y]=riktningsfalt( funktion,x0,x1,y0,y1) ger (2,420)-matriser X och Y.
Matematik med Matlab M1 och TD1 1999/2000 sid. 29 av 47 % Vektorerna som de riktade (X(1,k),Y(1,k)) till % (X(2,k),Y(2,k)). Riktningen i mittpunkten h=(x1-x0)/20; k=(y1-y0)/19; [x,y]=meshgrid(x0:h:x1,y0:k:y1); % genereras (20,21)-matriser x och y som ger koordinaterna % i ett med 420 punkter. x=x(:) ;y=y(:) ; % x(:) och y(:) radmatriser med de 420 elementen i x resp y % kolonnvis. yprim=feval(fun,x,y); % feval(fun,x,y) en radmatris vars element av y i theta=atan(yprim); % atan(yprim) tangentens riktningsvinkel. r=0.75*min(h,k);u=r*cos(theta);v=r*sin(theta) % (u(i),v(i)) vektor med denna riktning och belopp=r. X=[x-u;x+u]; Y=[y-v;y+v]; clf, hold plottas nu med plot(x,y) eller, om man vill ha alla linjer i samma g, med rad: on, for k=1:420, plot(x(:,k),y(:,k)), end, hold off Kommandot clf rensar eller ett tomt d:o. Uppgift 5: Rita till a. i ett som punkten. (jmfr red.uppg 3.1) b. i ett som punkten. (jmfr 8.9c) c. i. (jmfr 8.24b) Uppgift 6: Extrauppgift erbetyg. om funktionen riktningsfalt att man kan antalet punkter i Skriv din fil i dagboken med type. Kommandot meshgrid som dyker upp i programmet mycket an man arbetar med funktioner av eller tre variabler, Vi kommer att omma till det i senare men jag ger en. vi delar in ett intervall -axeln och ett -axeln i delintervall, vi ett med punkter, exempelvis. Om vi separerar -koordinater och -koordinater vi matriser och.
Matematik med Matlab M1 och TD1 1999/2000 sid. 30 av 47 I Matlab ordningen i kolonnerna och ner blir i. Testa med [x,y] = meshgrid(1:4,6:9) ser ni vad jag menar. Antag nu att vi vill i alla punkter i t.ex. vill vi ju ha en matris. Detta ommer vi enkelt i Matlab med z = x.^2.* y.^3 x och y matriserna skapade med meshgrid enligt ovan. Om, som i programmet ovan, ges av en funktionsfil funktion.m, ges av z = feval( funktion,x,y) 4.3.3 Eulers metod och ODE45. En vidareutveckling av ov enkla metod (att rita efter ges i Eulers steg- eller polygonmetod, man succesivt stegar sig fram med linjer till,. i en sid 326 Eulers metod finns beskriven. till en funktionsfil Eulers metod. Filen som tidigare. odesolv.m function [X,Y]=odesolv(fun,xmin,xmax,y0,N) % odesolv differentialekvationen y =f(x,y) i intervallet [xmin, xmax] % med y(xmin)=y0. Eulers polygonmetod i N steg. % Funktionen f(x,y) skall vara definierad i en funktionsfil eller med inline. % Exempel [X,Y] = odesolv( funktion,0,2,-1,200) ger, om f(x,y) % definierad i funktion.m, (1,201)-matriser X och Y, X % x-koordinaterna, med xmin = 0 och xmax = 2, och Y y-koordinaterna % y = y(x) till ekvationen y = f(x,y), y(xmin) = -1. % plottas med plot(x,y). h = (xmax-xmin)/n; X = xmin:h:xmax; Y = NaN*ones(size(X)); for-snurra av Y Uppgift 7: klart odesolv.m, med uppgift 4. Skriv in din fil i dagboken med av type. Uppgift 8: a. differentialekvationen hand. (Detta har ni gjort som redovisningsuppgift.) b. differentialekvationen i intervallet [1, 2] med odesolv och N=20. c. till differentialekvationen i. d. Rita och orna ovan i en och samma plot (rita de kurvorna med olika linjetyper). in namn och kurvrubriker. Eulers metod, kan sedan till exempelvis Runge-Kuttas metod lutningen linjestycket som modifieras att man tar till lutningen i den punkt man skulle med eulers metod. Denna metod utnyttjas i MATLAB-programmet ode45. Det finns andra program av samma typ, se under ode45 i helpdesk. En nackdel med dessa program att funktionen vara definierad i en funktionsfil, inline fungerar inte a detta kan ha i senaste versionen av Matlab). En att de system av differentialekvationer. En annan att de mycket effektivare odesolv Uppgift 9: Skriv en funktionsfil funktionen i uppgift. Observera att x vara den variabeln i deklarationsraden: z=funktion(x,y). sedan differentialekvationen i uppgift med av ode45.
Matematik med Matlab M1 och TD1 1999/2000 sid. 31 av 47 Kommandot [x1,y1]=ode45( funktion,1,2,3); om vi vill ha samma intervall. in en denna a i figur med plot(x1,y1, * ) att se hur bra det. Redovisa med pappersbild. 4.3.4 System av differentialekvatoner. Programmet ode45 kan, som ovan och som du ser i xten, system av differentialekvationer Detta ger att en ordningens ekvationer. i paragraf 1.2.1 i stencilen System av differentialekvationer om hur man om till ordningens system. man system av differentialekvationer skall funktionen yprim vara en kolonnvektor med en funktion varje rad. y0 skall vara en kolonnvektor med varje obekant funktion. att ekvationssystemet i intervallet vi skriva en funktionsfil: yprim.m function z=yprim(t,y) z=[t.*y(1)+y(2); y(2)-y(1)]; att orna skriver vi sedan: [X,Y]=ode45( yprim,0,5,[1; -2]); kommer X att vara en enradig och Y en matris. raden i Y funktionen, andra raden funktionen. Uppgift 10: Skriv in ov funktionsfil yprim.m, orna enligt ovan och rita kurvorna med plot(x,y). Uppgift 11: om ekvationen till ett system av ordningens differentialekvationer ). i filen yprim.m att du kan detta system med ode45 i intervallet. Rita orna. Vilken av dem? Vad illustrerar den andra kurvan? med exakta Uppgift 12:Ytterligare uppgifter erbetyg ges i veckoprogrammet TMA081 del B, vecka 5 och 6.