F 4 Ch.4.2-3 Numerisk integration, forts.; Ch.4 Numerisk derivering.



Relevanta dokument
Omtentamen i DV & TDV

f(x + h) f(x) h f(x) f(x h) h

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Interpolation Modellfunktioner som satisfierar givna punkter

R AKNE OVNING VECKA 1 David Heintz, 31 oktober 2002

Del I: Lösningsförslag till Numerisk analys,

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

Ordinära differentialekvationer,

Omtentamen i DV & TDV

Numerisk Analys, MMG410. Lecture 13. 1/58

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 26 augusti 2005 TID:

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

Lösningsförslag till tentamensskrivningen i Numerisk analys

med tillgång till värden på f: vi anser att vi kan evaluera f för alla x i (a,b) och använder kvadraturformler av typen n

KTH 2D1240 OPEN vt 06 p. 1 (5) J.Oppelstrup

Institutionen för Matematiska Vetenskaper TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1/TM1, TMA

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Sammanfattning (Nummedelen)

Ansvariga lärare: Yury Shestopalov, rum 3A313, tel (a) Problem 1. Använd Eulers metod II (tre steg) och lös begynnelsevärdesproblemet

Lennart Carleson. KTH och Uppsala universitet

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

f (a) sin

Interpolation. 8 december 2014 Sida 1 / 20

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Numerisk Analys, MMG410. Lecture 12. 1/24

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Tentamen i Teknisk-Vetenskapliga Beräkningar

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 2 juni 2014

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A. e 50k = k = ln 1 2. k = ln = ln 2

Beräkning av integraler

Maclaurins och Taylors formler. Standardutvecklingar (fortsättning), entydighet, numerisk beräkning av vissa uttryck, beräkning

TATA42: Föreläsning 10 Serier ( generaliserade summor )

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Euler-Mac Laurins summationsformel och Bernoulliska polynom

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

1 Föreläsning 12, Taylors formel, och att approximera en funktion med ett polynom

2. För vilka värden på parametrarna α och β har det linjära systemet. som satisfierar differensekvationen

Information Coding / Computer Graphics, ISY, LiTH. Integrationsmetoder

Matematik 5 Kap 3 Derivator och Integraler

Fel- och störningsanalys

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

Ickelinjära ekvationer

Numeriska metoder för ODE: Teori

Inlämningsuppgift 4 NUM131

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Konvergens för iterativa metoder

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

7x 2 5x + 6 c.) lim x 15 8x + 3x Bestäm eventuella extrempunkter, inflexionspunkter samt horizontella och vertikala asymptoter

Signalanalys med snabb Fouriertransform

x sin(x 2 )dx I 1 = x arctan xdx I 2 = x (x + 1)(x 2 2x + 1) dx

Institutionen för Matematik, KTH Lösningar till tentamen i Analys i en variabel för I och K (SF1644) 1/ e x h. (sin x) 2 1 cos x.

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

SF1625 Envariabelanalys Lösningsförslag till tentamen

9.3. Egenvärdesproblem

3.6 De klassiska polynomens ortogonalitetsegenskaper.

Kapitel 7. Numerisk derivering och integration

Numeriska metoder för ODE: Teori

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Föreläsning 5. Approximationsteori

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

Numeriska metoder. Kompendiet. Lektor: Yury Shestopalov. Tel Karlstads Universitet

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna

Meningslöst nonsens. December 14, 2014

Fel- och störningsanalys

Kort sammanfattning av Beräkningsvetenskap I. Varning!!! Varning!!!

OH till Föreläsning 5, Numme K2, Läsa mellan raderna. Allmän polynom-interpolation, S Ch 3.1.0

Tentamen i matematik. f(x) = ln(ln(x)),

Envariabelanalys 5B1147 MATLAB-laboration Derivator

LMA515 Matematik, del B Sammanställning av lärmål

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Laboration 2 Ordinära differentialekvationer

6.3. Direkta sökmetoder

1.6 Lösningar till kapitel 8

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Dagens tema. Fasplan(-rum), fasporträtt, stabilitet (forts.) (ZC sid 340-1, ZC10.2) Om högre ordnings system (Tillägg)

Något om Taylors formel och Mathematica

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Kapitel 1. Numeriska metoder

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

Lösningsförslag envariabelanalys

Två gränsfall en fallstudie

Lösningar till Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A. 1. (a) ODE-systemet kan skrivas på formen

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

ÖVN 6 - DIFFERENTIALEKVATIONER OCH TRANSFORMMETODER - SF Nyckelord och innehåll. a n (x x 0 ) n.

Kurvlängd och geometri på en sfärisk yta

SF1625 Envariabelanalys Tentamen Måndagen den 11 januari 2016

SF1664 Tillämpad envariabelanalys med numeriska metoder Lösningsförslag till tentamen DEL A

5 Om f (r) = 0 kan andraderivatan inte avgöra vilken typ av extrempunkt det handlar om. Återstår att avgöra punktens typ med teckenstudium.

Ordinära differentialekvationer,

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x

Institutionen för Matematik. F1 - Linjär algebra och numerisk analys, TMA671 Svar till övningar i Heath s bok och extraövningar

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Sammanfattning av föreläsning 11. Modellbygge & Simulering, TSRT62. Föreläsning 12. Simulering. Föreläsning 12. Numeriska metoder och Simulering

Transkript:

050301 p 1 (10) F 4 Ch.4.2-3 Numerisk integration, forts.; Ch.4 Numerisk derivering. 1. Styckevis polynom: linjär och spline-interpolation; En funktion f representerad i en tabell (x i,f i ), i = 0,...,n, evalueras med linjär interpolation y = L(x) på följande sätt: 1. Finn k så att x k x < x k+1 2. f(x) approximeras med y = f k + f k+1 " f k x k+1 " x k ( x " x k ) L blir kontinuerlig och L(x k ) = f k Steg 1 kräver att man letar i x-tabellen. Den är sorterad, så sökningen kan klaras med O( 2 logn) jämförelser. Sådan binärsökning är den diskreta analogin till intervallhalveringsmetoden (eng. bisection). En naturlig fråga är nu följande: Om tabellen framställer en glatt funktion, hur stort fel kan interpolanten ha, dvs., hur stort kan max f (x)# L(x) bli? a"x"b QS p 63, Proposition 3.2 ger feltermen vid interpolation i (x i,f i ), i = 0,...,n med n-te gradspolynom P(x): f (x)" P(x) = f (n+1) (# ) g(x), (n +1) [ ] g(x) = (x " x 0 )(x " x 1 )...(x " x n ),# $ x 0, x n Sats: Felet vid linjär interpolation begränsas av f (x)" L(x) # H 2 max f % ($ ) där H = max 8 x k+1 " x k x 0 #$#x n 0#k#n"1 Bevis: När x k x x k+1 blir f (x)" L(x) = 1 2 f # ($ ) ( x " x k )( x " x k+1 ) % % 1 max f # $ 2 x k %$%x k+1 ( ) & min x k %x%x k+1 g(x), g(x) = x " x k ( )( x " x k+1 ) eftersom g(x) 0. dg/dx = 0 ger x* = (x k + x k+1 )/2; g = 2 visar att g har lokalt minimum g(x*) = 1/4(x k+1 x k ) 2 ; satsen följer nu efter maximering över k. ----------------------------------------------------------------------------------------------------------- Feltermen vid polynominterpolation Betrakta g(x), för ett nionde-gradspolynom, med interpolationspunkter x i = (i 1)/4 1, i = 1:9 ekvidistanta i [ 1,1]. Som synes oscillerar och växer g mot intervallets ändpunkter, en illustration till olämpligheten av ekvidistant interpolation med högt gradtal. Men om man väljer x i

050301 p 2 (10) lämpligt undviker man tillväxten. Den prickade kurvan visar g med x i valda som Chebyshevabskissorna $ 2k "1 # ' x k = cos& ),k = 1,...,n, % n 2 ( som är det (i denna mening) optimala valet. L(x) är kontinuerlig, men derivatan är diskontinuerlig. Ibland behöver man en interpolant som har flera kontinuerliga derivator och approximerar glatta funktioner och dess derivator bättre. Vanligen använder man då kubiska splines (sv. Ri-funktioner), som är styckevis tredjegradspolynom S(x) som uppfyller: S(x i ) = f i, i = 0,...,n S, S, och S är kontinuerliga i hela [x 0,x n ] Det behövs ytterligare två villkor för att bestämma S, t ex, S (x 0 ) = S (x n ) = 0 naturliga randvillkor, i analogi med elastisk linjal eller S (x 0 ) = k 0, S (x n ) = k n, föreskrivna änd-lutningar. Matlab: % data x = linspace(-1,1,10); f = 1./(1+25*x.^2); % plotpunkter z = linspace(-1,1,100); % P9(x) c = polyfit(x,f,9); p9 = polyval(c,z) % S(x) S = spline(x,f,z); %... plottning Observera hur P 9 oscillerar medan S är monoton. Felet vid kubisk spline-interpolation (se också QS p 74 ff) begränsas av S(x)" f (x) # C( f )H 4, H = max x k " x k"1 Numerisk derivering, QS 4.1 Derivatan är gränsvärdet för en differenskvot, f (x + h)$ f (x) f "(x) = lim h#0 h när det existerar. Om f är given i en ekvidistant tabell x k+1 x k = h kan man ta " + f (x k ) = f k+1 # f k eller " # f (x k ) = f k # f k#1 h h som närmevärden. Felen uppskattas under förutsättning att f kan Taylorutvecklas, (vi skriver x ist f x k för korthets skull) f (x + h)# f (x) " + f (x) = = 1 & h h f (x)+ f $ (x)% h + 1 2 h2 f $ (x)+o(h 3 ) ( )# f (x) + = ' * = f $ (x)+ 1 2 h f $ (x)+o(h2 ) " + f (x) =... = f $ (x)# 1 2 h f $ (x)+o(h2 )

050301 p 3 (10) Eftersom felet är proportionellt mot h p med p = 1 säger man att approximationerna har noggrannhetsordning 1. Medelvärdet av de två differenserna blir tydligen "f (x) = 1 ( f (x + h)# f (x # h) ) =... = f $ (x)+ 1 2h 6 h2 f iii (x)+o(h 4 ) en andra ordningens noggrann, symmetrisk (central) differensapproximation. Vi provar hur det fungerar på f(x) = cos x runt x = 0.59, och tar tabellvärden med sex decimaler: sin(0.59) = 0.556361 Ex. x cos x fk-fk-1 fk-1-2fk +fk+1 0.58 0.836463 0.59 0.830941-5522 0.60 0.825336-5605 -83 0.61 0.819648-5688 fel (x 10-6) h = 0.01: δ- = -0.005522/0.01 = -0.552200 4461 h = 0.01: δ+ = -0.005605/0.01 = -0.560500; -4139 h = 0.02: δ+ = -0.011293/0.02 = -0.564650 8289 h = 0.01: δ0 = (δ + δ+)/2 = -0.556350 11 h = 0.01: δ 2 = -0.830000 Centraldifferensen δ0 är nästan 400 ggr. noggrannare än δ+ och δ- Felet med h = 0.02 är dubbelt så stort som för 0.01: första ordningens noggrannhet Feluppskattningen ovan blir 1/6 0.01 2 0.55 = 9 10 6 vilket stämmer (misstänkt) bra De understrukna avslutande nollorna är resultatet av kancellation. Vi måste se på avrundningsfelen också. Antag att tabellvärden har fel högst ε (= 0.5 10 6 eftersom de är korrekt avrundade). Då blir max. avrundningsfel (h = 0.01) δ+, δ-: 2ε/h = 10 4 ; δ 0 : 2ε/2h = ε/h = 0.5 10 4 Avrundingsfelen dominerar alltså: En gräns for totala felet E(h) = f "(x)#$ 0 f (x) % 1 6 f " h 2 + & h loglog-plottas i fig. som funktion av h. Den bästa steglängden synes vara runt 0.01. Matlab: diff bildar differensen av en följd, fungerar också på datafält med fler än ett index. Här en vektor a med n komponenter. Observera att diff(a) blir ett nummer mindre än a och d0 blir två nummer mindre. diff(a) = [a(2)-a(1),a(3)-a(2),...,a(n)-a(n-1)]; Ex. x = a:h:b; n = length(x); % ta reda på hur lång x är f = cos(x); % skapa tabellen % derivera dplus = diff(f)/h; % för x1, x2,..., xn-1 d0 = (a(3:n)-a(1:n-2))/(2*h); % för x2,..., xn-1 Andra-derivatan approximeras med " 2 f (x) = " # " + f (x) ( ) = " + (" # f (x)) = 1 ( ) = = $ $ f (x)+ 1 12 f (iv) (x)h 2 + 1 360 f (vi) (x)h 4 + O(h 6 ) f (x + h)#2 f (x)+ f (x # h) h 2

050301 p 4 (10) där de två dominerande termerna angivits, av skäl som blir uppenbara nedan. Här blir förstås kancellations-problemen mera akuta: Man får (se ovan) bara två siffror med h = 0.01. Receptet blir då att använda större steglängd och mera noggranna differensapproximationer; Ex. Extrapolation är användbart. Formlerna härleds nedan. Vi provar igen på cos-tabellen runt 0.6, nu med steglängd 0.1 x cos x 10^6 avr.fel 0.2 0.980067 h = 0.4: δ 2 = -0.130303/0.16 = -0.814394 12 0.3 0.955336 h = 0.2: δ 2 = -0.032904/0.04 = -0.822600 50 0.4 0.921061 h = 0.1: δ 2 = -0.008247/0.01 = -0.824700 200 0.5 0.877583 0.6 0.825336 Extrapolation: 0.7 0.764842-0.822600+1/3(-0.822600+0.814394)= -0.825335 0.8 0.696707-0.824700+1/3(-0.824700+0.822600)= -0.825400 0.9 0.621610 Största steglängden ger bäst noggrannhet. 1.0 0.540302 Avrundningsfelen i δ 2 -värdena kan bli 4 0.5 10 6 /h 2, se ovan. Derivatorna av cos har alla belopp 1. Trunkeringsfelet överskattas då med 1/12 1 h 2 10 3, stämmer bra med beräkningen. I det extrapolerade värdena blir det 1/90 1 h 4 10 6 för h = 0.1, 16 10 6 för h = 0.2. Avrundningsfelen dominerar i feluppskattningen för de extrapolerade värdena; det bästa värdet har i själva verket fel bara 1 10 6 Formel för extrapolation till h = 0, också kallad: Feltermskorrektion (Pohl, 1995), Richardson-extrapolation (gängse),eng. Deferred Approach to the Limit,... (kärt barn har många namn) QS Exercise 4.10, p 101 Vi vill beräkna gränsvärdet F(0) med approximationen F(h) som är noggrann av ordning p 1. Trunkeringsfelet domineras för tillräckligt små h av en term Kh p, F(h) = F(0) + Kh p + o(h p ) Konstanten K beror förstås på F, men inte på h. Det till h = 0 extrapolerade värdet 1 # G(h) = F(h)+ ( q p F(h)" F(qh) ) = F(0)+ o h p & % ( "1 $ ' är då noggrannare än F(h). Man beräknar F(h) och F(qh), interpolerar lämplig funktion av typ p(h) = A + Bh p genom punkterna (h,f(h)) och (qh, F(qh)), och evaluerar funktionen för h = 0: p(0) = A. Ofta tar man q = 2, därav benämningar som tredjedelskorrektion (för trapetsregeln, p = 2), femtondelsregeln (för Simpsons formel, p = 4) etc. Mer om dessa kvadraturfomler nedan. Övning: Lös ekvationssystemet och visa, att A kan skrivas på formen G(h) ovan. A + Bh p = F(h) A + B(qh) p = F(qh) I deriverings-exemplet ovan är F(h) = δ 2 och p = 2, q = 2. I de extrapolerade värdena dominerar h 4 -termen. Därför tog vi med den i utvecklingen ovan, att användas (till faktorn 1/90) i felskattningen.

050301 p 5 (10) Kvadratur. Trapetsregeln, Simpsons formel, QS Ch4.2 Problemet är att beräkna b I( f ) = f (x)dx " a numeriskt. Vidare förutsätter vi att a och b är ändliga och att f är kontinuerlig på [a,b] (därmed begränsad). Fall med a eller b är oändliga och/eller f med integrabla singulariteter får behandlas särskilt, ofta med lämplig variabelsubstitution. De metoder som studeras här är av formen M I = # w k f (" k ) + R k=0 där w k kallas (kvadratur)vikter, ξ k abskissor, och R är resttermen eller feltermen. Om R = 0 då f = polynom av högst grad p är noggrannhetsordningen p. Formel och feluppskattning för sammansatta trapetsregeln med M delintervall $ M T(h) = h f (x j )" 1 ' & # ( f (a)+ f (b) ) & ) 2 ), x j = a + jh,h = (b " a)/ M % j=0 ( I( f )"T(h) = 1 12 (b " a)h2 f * (+ ), för något a, +, b om f har kontinuerlig andraderivata. 12 Ex. Vi prövar på I = x N dx, " N = 3 och 4, exakt värde 2684 resp. 29766.4 10 Extrapolationen : p = 2 och q = 2, T(h) + (1/3)( T(h) T(2h)) x x 3 x 4 N=3 diff. Extr. 10 1000 10000 T(2)=2(1000/2 + 1728/2)= 2728 11 1331 14641 T(1)=1(1000/2+1331+1728/2)= 2695-33 2695-11=2684 12 1728 20736 N=4 T(2)=2(10000/2 + 20736/2)=30736 T(1)=1(10000/2+14641+20736/2)=30009-745 30009-248.3= 29760.7 I T(2)=2728-2684=44, I T(1)=2695-2684=11, stämmer med p = 2 d 2 /dx 2 (x 3 ) = 6x 66, I T(2) 1/12. 2. 2 2. 66 = 44, OK. Extrapolerade värdet är exakt för alla tredjegradspolynom. För N=4 ger feluppskattningsformeln att h < 0.15 för att felet ska bli lika stort som i det extrapolerade värdet. Den tabellen blir sju gånger så lång Simpsons formel härleds t. ex. genom att man integrerar det andragradspolynom som interpolerar i x h, x, och x+h. Men enklare är följande: Man ansätter en formel med obekanta koefficienter och bestämmer dem så, att formeln blir exakt för polynom av så högt gradtal som möjligt. Symmetrin gör att det bara blir två koefficienter, a och b, och endast jämna potenser ger något bidrag: x+h R = # f (t)dt " h af (x " h)+ bf (x)+ af (x + h) x"h ( ) = 0 för f (t) = (t " x) p, p = 0,1,...

050301 p 6 (10) p = 0: 2h h( a + b + a) = 0 p = 1: 0 h( ha + 0b + ha) = 0 inget nytt, p = 2: 2h 3 /3 h( h 2 a + 0b + h 2 a) = 0, a = 1/3, så b = 4/3 p = 3: 0 h( h 3 a + 0b + h 3 a) = 0 inget nytt p = 4: R = 2h 5 /5 h(h 4 a + 0b + h 4 a) = 4/15 h 5 = 1/120 (2h) 5 Alltså, ( ) 5 b f (x)dx " b " a $ $ a + b ' ' # & f (a)+ 4 f & ) + f (b)) = b " a 6 % 2 ( a % ( 2880 f (iv) $ (x)+ o ( b " a) 5 ' & ) % ( Låt f(t) ha en konvergent Taylorutveckling omkring x. Resttermen blir då, f (t) = P 3 (t)+ 1 24 (t " x)4 f (iv) # (x)+o (t " x) 5 & % (, $ ' R = 1 * 24 f (iv) h (x) s 4 ds " 2h -, # % 6 h4 + 0 + h 4 & ) (/, $ '/ + O # (2h)6 & % ( = 4(2h)5 $ ' 32 024 015 f (iv) # (x)+o h 6 & % ( $ ' + "h. eftersom P 3 (t) inte ger något bidrag till felet. En sammansatt Simpsons formel med steget h = (b a)/m blir S(h) = h M " w k f ( a + kh), där 3 k=0 w jämn = 2, och w udda = 4, utom w 0 = w M = 1. Adaptiv kvadratur Ofta varierar integranden olika mycket i olika delintervall och det behövs olika stora steg. Annorlunda uttryckt, ekvidistanta punkter är oekonomiskt. Antag att T(a,b,n) är en kvadraturformel för I med n delintervall. Formeln är additiv, så att T(a,b,2n) = T(a,m,n) + T(m,b,n) där m = (a + b)/2; Felet kan överskattas med skillnaden K(T(a,b,n) T(a,b,2n)) En rekursiv, adaptiv, toleransstyrd algoritm som använder kvadraturformeln T(a,b) bygger på följande ide: function Iad = adapt(a,b,tol) n = 10; m = (a+b)/2; Iad = T(a,b,n); if K(Iad - (T(a,m,n)+T(m,b,n))) < tol, return else Iad = adapt(a,m,tol/2)+adapt(m,b,tol/2); end Notera: Vid uppdelning av intervallet krävs halva felet från varje halva; felen är additiva. T(x,y,n) beräknas (onödigtvis) två gånger Vissa integrandvärden beräknas många (?) gånger

050301 p 7 (10) F 5 Ch.7, Differentialekvationer, initialvärdesproblem. Ex.1 En bakteriekultur tillväxer under trängsel och med god näringstillgång enligt dn dt = n(1" n),n(0) = n 0,0 < n 0 < 1,0 # t # $ där n = bakteriemängden, normerad med max-mängden, och t mäts i lämplig enhet. Ex.2 En massa m glider längs x-axeln, kopplad till ett fundament med en fjäder och en dämpare, och påverkas av kraften F(t) = A sint. Dess rörelse beskrivs av Newtons kraftekvation, m d2 x dx = "Kx " D dt 2 dt + F(t), x(0) = 0, dx dt (0) = 0 där fjäderkonstanten är K och dämp-koefficienten är D. Dessa är exempel på initialvärdesproblem (QS kallar det Cauchy-problem) för ordinära differentialekvationer. Ex 1 är en ickelinjär första ordningens ekvation, och Ex 2 är en andra ordningens linjär ekvation med konstanta koefficienter. dy Vi skriver nu = f (t, y), y(0) = y0, låter tiden starta vid 0 och söker lösningen för 0 t T. dt Med (klassisk) lösning menas en deriverbar funktion som satisfierar ekvationen för varje t och begynnelsevärdena för t = 0. Om f uppfyller vissa villkor (QS, Prop..) existerar det precis en lösning; I exemplen ovan existerar lösningen för alla tider, men det gäller inte alla ekvationer. Ex. y " = y 2, y(0) = 1,0 # t #...? har lösningen y = 1/(1 t) och existerar således bara för t < 1. Vi ska här studera steg-för-steg -metoder som producerar en tabell (t k,y k ), k = 0,1,..., med steglängder t k+1 t k = h k så att y k approximerar y(t k ). Ofta får h k vara konstant = h. Prototypen för alla sådana metoder kallas Eulers metod efter Leonhard Euler. Man ersätter derivatan med differenskvot, f (t k, y k ) = dy dt (t k ) " y k+1 # y k h eller, med rekursionen utskriven, y k+1 = y k + hf (t k, y k ),k = 0,1,... QS visar att Eulers metod konvergerar mot den exakta lösningen när h > 0. Vi intresserar oss för det globala felet, E(t k ) = y(t k ) y k och speciellt hur det beror på h. QS definition av vad global truncation error betyder är mycket okonventionell och vi kommer att hålla oss till ovanstående. Vi är däremot helt överens om lokala felet som (globala ) felet i y k+1, om y(t k ) = y k. e k+1 = y(t k+1 ) y k+1, Ex. Lokala felet för Eulers metod, e k+1 = y(t k+1 )"( y k + hf (t k, y k )) = = y k + h y k # { + h2 2 = f (t k, y k ) y k # +..." ( y k + hf (t k, y k )) = h2 2 y # (t k )+O(h 3 )

050301 p 8 (10) Om E = O(h p ) med p > 0 är metoden konvergent av (noggrannhets)ordning p. Som QS visar har Eulers metod ordning 1. Vi illustrerar nu Eulers metod, och en modifikation därav, Heuns ordning-2 metod på bakterie-exemplet (lite omskalat) och visar, att högre ordnings metoder är effektiva(re än Eulers). Ex. y " = y(2 # y) Lös initialvärdesproblemet y(0) = 1, 0 $ t $ 1 2 Den exakta lösningen är y(t) =, y(1) # 1.761594 1+ e "2t Jämför Eulers metod med Heuns (också kallad improved Euler ) med h = 0.25. Explicit Euler, ordning 1 Heun, ordning 2 k1= hf (t n, y n )/2 k1= hf (t n, y n ) k2 = hf (t n + h / 2, y n + k1) y n+1 = y n + k1 y n+1 = y n + k2 Euler, h = 0.25 Heun, h = 0.25 t y k t y k1 k2 0.000 1.000 0.250 0.000 1.000 0.125 0.246 0.250 1.250 0.234 0.250 1.246 0.117 0.217 0.500 1.484 0.191 0.500 1.463 0.098 0.171 0.750 1.676 0.136 0.750 1.634 0.075 0.124 1.000 1.812 1.000 1.759 ------------------------------------ Fel +50-3 Matlab (utskriftskommandona borttagna): % Euler % Heun f = inline('x*(2-x)'); f = inline('x*(2-x)'); h = 0.25; h = 0.25; y(1) = 1; y(1) = 1; k = 1; k = 1; for t = 0:h:1-h, for t = 0:h:1-h, k1 = h*f(y(k)); k1 = h*f(y(k) )/2; k2 = h*f(y(k)+k1); y(k+1) = y(k)+k1; y(k+1) = y(k)+k2; k = k+1; k = k+1; end end Eftersom Eulers metod har noggrannhetsordning 1 skulle den kräva 16 gånger mindre steglängd för fel mindre än 3 10 3. Det är 8 gånger mer arbete än med Heuns metod. Kan man få noggrannare resultat med mindre arbete genom att välja ännu högre ordnings metoder? Den klassiska fjärde ordningens Runge-Kutta metoden klarar fel < 2 10 3 med steglängd 0.5, men den gör fyra evalueringar per steg mot Heuns två, så man vinner inget arbete. Det gör man om noggrannhetskravet är strängare. För fel < 10 6 krävs: steg f-eval. Euler 183000 183000 Heun 200 400 RK4 12 48

050301 p 9 (10) Av detta bör man dra slutsatsen att metoder av ordning 1 är alltför arbetssamma, och att en andra ordningens metod duger bara för låga noggrannhetskrav. Bilden till höger visar hur det kan gå när man väljer tidssteget för stort i modellen Ex 1 ovan. Man får med Eulers metod ( ) y n+1 = y n 1+ Ch " Chy n Sätt z = Ch 1+ Ch y, så blir rekursionen z n+1 = "z n ( 1# z n ) med α = 1 + Ch. Som synes håller sig z n mellan 0 och 1 så länge 0 < α < 4. Bilden visar z 100 för 1000 olika startvärden z 0 som funktion av α, för α = 2.8:0.002:4. Det finns 1000 prickar på varje av de 600 vertikalerna, varje punkt har itererats 100 gånger, så 120 miljoner multiplikationer har gått åt. Inget för handräkning alltså. Feigenbaums konstant kan man utläsa ur figurens periodfördubblingar till kaos. Med så små tidssteg att Ch << 1 blir det inga sådana överraskningar. Men det finns exempel där Matlabs ODE-lösare småningom väljer allt för stort tidssteg och hamnar i liknande situationer. Explicita metoder som de vi använt ovan duger så länge produkten LT av f s Lipschitzkonstant L och tidsintervallet T är måttlig. Men det finns många viktiga fall där LT är mycket stort. Sådana problem kallas styva, i analogi med fjädersystem (en cykel, t ex) med mycket styva (hela ramen) och mycket veka (däcken) fjädrar. Om vibrationerna i ramen ska beskrivas noggrant under den tid det tar att åka över ett gupp och däcken fjädrar blir det många tidssteg. För styva problem måste man använda implicita metoder, prototypen är Baklänges Euler, y k+1 " y k = hf ( t k+1, y k+1 ) som kräver lösning av icke-linjär ekvation i varje steg. För icke-styva problem är resultat för h > 0 tillräckliga, men inte för styva problem. För att kunna analysera lösningarna för ändliga h använder vi ett enkelt modell-problem, testekvationen y " = #y, y(0) = 1, där # är en komplex konstant., för Euler, Baklänges Euler, och Trapets-metoden (kallas Crank-Nicholson i QS): ( ) y k+1 " y k = h 2 f (t k, y k )+ f (t k+1, y k+1 ) som är noggrann av ordning 2, och implicit. Ekvationen har exakt lösning y = exp(λt) och y > 0 då t > om Re(λ) < 0. Euler : y k = ( 1+ h" ) k, Baklänges Euler : z k = 1 ( 1# h" ) k, Trapets : w k = $ 2 + h" ' k & ) % 2 # h" ( (Övning: Härled uttrycken ovan.) För att y k > 0 då k > måste 1 + hλ < 1: Eulers metod är betingat stabil (eng. conditionally stable). Men z k > 0 och w k > 0 då k > för alla positiva h om Re(λ) < 0, vilket kallas att Baklänges Euler och Trapets-metoderna är A-stabila. System av differentialekvationer Fjäder-dämpar-modellen (Ex 2) är en andra ordningens differentialekvation.

050301 p 10 (10) Man kan lätt skriva den liksom andra högre-grads ekvationer som ett första ordningens system, genom att införa nya variabler för alla derivator utom den högsta. Här: v för dx/dt: # m d2 x dx = "Kx " D dt 2 dt + F(t) # dv % % $ ' dt = 1 ("Kx " Dv + F(t) ),v(0) = w $ m % x(0) = a, dx &% dt (0) = w % dx = v, x(0) = a & dt Ett sådant system skriver vi med vektor-beteckning u för kolonn-vektorn av n beroende funktioner du dt = f(t,u),u = ( u 1(t),u 2 (t),...,u n (t)) T u(0) = a Alla metoderna kan användas för system. Matlab-avsnitten för Euler och Heun kräver ingen ändring mer än att y får bli ett två-dimensionellt fält den funktion som definierar f ska leverera alla komponenterna; function springdamp får bero explicit på t: behövs för F(t). function dydt = springdamp(t,y) global K D M A x = y(1); v = y(2); dydt = [v,(-k*x-d*v+a*sin(t))/m]; % Heun global K D M A % parametervärden K = 1; D = 0.1; M = 1; A = 0; h = 0.25; y = zeros(100,2); y(1,:) = [1 0]; % initialvärden k = 1; for t = 0:h:50-h, k1 = h*springdamp(t,y(k,:) )/2; k2 = h*springdamp(t+h/2,y(k,:)+k1); y(k+1,:) = y(k,:)+k2; k = k+1; end plot(y(:,1),y(:,2),'k.-'); % fasplan-plot v x