Eulers metode Tom Pedersen //Palle Andersen pa,tom@es.aau.dk Aalborg University Eulers metode p. 1/2
Differentialligninger m(t) H(t) d(h(t)) dt = 0.0125m(t) 0.001772 H(t) hvor m(t) er kendt og H(t) skal løses. Eulers metode p. 2/2
Euler løsning Generel differentialligning, t uafhængig variable, x afhængig variabel dx(t) = f(x,t) dt afhængighed af t bruges til tidsvarierende input (m(t)) Eulers skema til løsning: hvor h er tidsskridtet x(t + h) = x(t) + hf(x,t) Eulers metode p. 3/2
Euler løsning vandkar For vandkar ligningen bliver Euler approximationen H(t + h) = H(t) + h(0.0125m(t) 0.001772 H(t) I Matlab venlig notation, hvor t = (k 1)h H(k + 1) = H(k) + h(0.0125m(k) 0.001772 H(k) Eulers metode p. 4/2
Euler i Matlab h=10; % Skridttid H(1)=0; % Begyndelseshojde m=0.0643; % Indgangsflow %Euler beregning af hojde for jj=1:300 H(jj+1)=H(jj)+h*0.0125*m... -h*0.001772*sqrt(h(jj)); end tid=1:h:length(h)*h; % Tidsvektor figure(1) plot(tid,h),grid title( Euler simulering, fontsize,16 ) xlabel( Tid [sek], fontsize,16) ylabel( Hojde [meter], fontsize,16) Eulers metode p. 5/2
Euler med input-vektor h=10; %Skridttid H(1)=0; %Begyndelseshojde m=[0.05*ones(1,100) 0.05:0.0001:0.06... 0.03*sin(-(0:0.01:2.8))+0.06]; %Euler beregning af hojde for jj=1:length(m) H(jj+1)=H(jj)+h*0.0125*m(jj)... -h*0.001772*sqrt(h(jj)); end Eulers metode p. 6/2
Differentialligningssystemer Newtons lov: Ma = M dv dt = M d2 x dt 2 = F hvor F er summen af kræfter, M er massen, a,v, x er acceleration, hastighed og position. Vi bruger ofte notationen dx dt = ẋ d2 x dt 2 = ẍ Eulers metode p. 7/2
Frit fald Mẍ = Mg b f ẋ ẋ Der vælges to nye variable x 1 = x og x 2 = ẋ = v. Ligningssystemet giver nu x 1 = v = x 2 x 2 = a = g b f M x 2 x 2 Eulers metode p. 8/2
Generel differentialligning ẋ = f(x,t) hvor x og ẋ er vektorer og f(x,t) er en vektorfunktion. I vores tilfælde er der ingen afhængighed af t x 1 = f 1 (x 1,x 2 ) = x 2 x 2 = f 2 (x 1,x 2 ) = g b f M x 2 x 2 Eulers metode p. 9/2
Euler skema Differentiallilgningssystemet ẋ = f(x) tilnærmes med x(t + h) = x(t) + hf(x(t),t) eller på Matlab form: x(k + 1) = x(k) + hf(x(k),k) Eulers metode p. 10/2
Frit fald Vi skal kende begyndelsesbetingelserne for x 1 og x 2 x 1,k+1 = x 1,k + hx 2,k x 2,k+1 = x 2,k + h( g b f M x 2,k x 2,k ) I prøven skal I selv programmere dette eksempel plus noget mere Eulers metode p. 11/2
Euler metode Vi vil se på løsningsskemaer skemaer til differentialligninger af formen ẋ = f(x,t) hvor x og ẋ er vektorer og f(x,t) er en vektorfunktion. Eulers forward-skema findes ved trunkering af Taylor rækken x(t + h) = x(t) + hẋ(t) + h2 2! ẍ(t) + R... Den fejl man gør ved trunkering har en størrelse, som x(k + 1) = x(k) + hf(x(k),k) + h2 2! x(ζ) hvor x(k) er indført som betegnelse for x til tiden (k 1) h Eulers metode p. 12/2
Plot med fejl af Euler løsning 2.8 Euler løsning med forskellig stepstørrelse 2.6 2.4 løsninger x(t) 2.2 2 1.8 1.6 1.4 1.2 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 tid Eulers metode p. 13/2
Lokal og global fejl Eulers metode p. 14/2
Lokal og global fejl Den lokale trunkeringsfejl bliver x 1 x(t 1 ) = h2 2! x(ζ) Mh 2 Den globale trunkeringsfejl er af typen x N x(t N ) NMh 2 = M(t N t 0 )h Den globale trunkeringsfejl er altså af orden h, O(h) Eulers metode p. 15/2
Runge Kutta metoder Taylor række udvikling x(t + h) = x(t) + hẋ(t) + h2 2! ẍ(t) + R... Ved Eulers metode ser manbort fra restleddet af 2. orden Med Runge Kutta metoder laver man en bedre tilnærmelse således at at den lokale fejl vil være af typen O(h 3 ) for Runge Kuttas 2. ordens metode. Eulers metode p. 16/2
Runge Kutta 2. orden Skemaet for en 2. ordens Runge Kutta er hvor x k+1 = x k + h[k 1 (1 1 2α ) + k 2 2α ] k 1 = f(t k,x k ) k 2 = f(t k + αh,x k + αhk 1 ) α vælges mellem 0 og 1 med det formål at få restleddet mindst muligt. Forskellige valg er egnet til forskellige typer differentialligninger Eulers metode p. 17/2
Korrigeret Euler Specialtilfældet α = 1 2 x k+1 = x k + hk 2 = x k + hf(t k + h/2,x k + hk 1 /2) Eulers metode p. 18/2
Modificeret Euler Specialtilfældet α = 1 x k+1 = x k + h 2 (k 1 + k 2 ) Eulers metode p. 19/2
Multistep metoder Ved multistep metoder bruger man information fra tidligere beregnede løsningsværdier, som i Adams metoder givet ved skemaet x k+1 = x k +h[β 0 f(t k+1,x k+1 )+β 1 f(t k,x k )+β 2 f(t k 1,x k 1 )+ ] et special tilfælde som også kalde Backward Euler, hvor β 0 = 1 og de øvrige β-værdier er 0 fås x k+1 = x k + hf(t k+1,x k+1 ) Det bemærkes at den næste værdi indgår på såvel højre sompå venstre side, hvilket indebærer at for at bestemme x k+1 skal man løse en ulineær ligning. Metoder af denne karakter kaldes implicitte metoder. Eulers metode p. 20/2
Stabilitet af løsningsskemaer Ved stabilitet menes at løsningen af en differentialligning den numeriske løsningen ikke divergerer fra den eksakte løsning. Som eksempel ses på differentialligningen som har løsningen Eulers (forward) skema giver ẋ = 1 τ x x(t) = x 0 e t/τ x(t k ) = x 0 e kh/τ x k+1 = x k h τ x k = x k (1 h τ ) = x 0(1 h τ )k+1 hvis h 2τ bliver parantesen numerisk større end 1 og løsningen divergerer Eulers metode p. 21/2
Stabilitet af backward Euler Eulers backward skema giver x k+1 = x k h τ x k+1 x k+1 = x k 1 1 + h τ = x 0 1 (1 + h τ )k+1 Det ses at denne altid konvergerer uanset valget af h Eulers metode p. 22/2