• Rezultati Niso Bili Najdeni

Numeriˇcno reˇsevanje diferencialnih enaˇcb

N/A
N/A
Protected

Academic year: 2022

Share "Numeriˇcno reˇsevanje diferencialnih enaˇcb"

Copied!
16
0
0

Celotno besedilo

(1)

Numeriˇ cno reˇsevanje diferencialnih enaˇ cb

14 vaja

Borut Jurˇciˇc Zlobec1

1Univerza v Ljubljani Fakulteta za elektrotehniko,

Trˇzaˇska 25, 1000 Ljubljana

Numeriˇcne metode FE, Ljubljana, 19. januar 2013

(2)

y0 =f(x,y), y(x0) =y0

f(x,y) =−2xy, y(0) = 1, y=e−x2.

-1.0 -0.5 0.0 0.5 1.0 1.5

0.0 0.2 0.4 0.6 0.8 1.0

(3)

Eulerjeva metoda

x0=a, y0=A, h=xi+1−xi, yi+1 =yi+hf(xi,yi),

i = 0, . . . ,n, n∈N.

-0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.1 0.8 0.9 1.0

(4)

% [y,x] = euler(f,I,ya,n);

% Vhod: f: funkcija f(x,y), I: interval [a,b]

% ya: zacetnih pogoji v a, n: stevilo podintervalov

% Izhod: x: delitev intervala I

% y: y(x) v notranjih tockah intervala in na robu function [y,x] = euler(f,I,ya,n);

h = (I(2)-I(1))/n; y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

for i = 2:n+1

y(:,i) = y(:,i-1)+h*f(x(i-1),y(:,i-1));

end;

(5)

Program

% [y,x] = euler(f,I,ya,n);

% Vhod: f: funkcija f(x,y), I: interval [a,b]

% ya: zacetnih pogoji v a, n: stevilo podintervalov

% Izhod: x: delitev intervala I

% y: y(x) v notranjih tockah intervala in na robu function [y,x] = euler(f,I,ya,n);

h = (I(2)-I(1))/n; y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

for i = 2:n+1

y(:,i) = y(:,i-1)+h*f(x(i-1),y(:,i-1));

end;

(6)

% [y,x] = euler(f,I,ya,n);

% Vhod: f: funkcija f(x,y), I: interval [a,b]

% ya: zacetnih pogoji v a, n: stevilo podintervalov

% Izhod: x: delitev intervala I

% y: y(x) v notranjih tockah intervala in na robu function [y,x] = euler(f,I,ya,n);

h = (I(2)-I(1))/n; y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

for i = 2:n+1

y(:,i) = y(:,i-1)+h*f(x(i-1),y(:,i-1));

end;

(7)

Modificirana Eulerjeva metoda

x0=a, y0=A, h =xi+1−xi, i = 0, . . . ,n, n∈N,

yi+1=yi +hf(xi +h

2,yi +h

2f(xi,yi)).

-0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.1 0.8 0.9 1.0

(8)

function [y,x] = modeuler(f,I,ya,n) h = (I(2)-I(1))/n;

y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

for i = 2:n+1

k1 = f(x(i-1),y(:,i-1));

k2 = f(x(i-1)+h/2,y(:,i-1)+h/2*k1(:));

y(:,i) = y(:,i-1)+h*k2(:);

end;

(9)

Crank-Nicholson in leapfrog

y0 =f(x,y)

I = [a,b], x0 =a, y0 =y(x0), h = b−a

n , xi =x0+ih

Crank-Nicholson

yi+1 =yi +h

2(f(xi,yi) +f(xi+1,yi+1)). Leapfrog

yi+1=yi−1+ 2hf(xi,yi).

(10)

y0 =f(x,y)

I = [a,b], x0 =a, y0 =y(x0), h = b−a

n , xi =x0+ih

Crank-Nicholson

yi+1 =yi +h

2(f(xi,yi) +f(xi+1,yi+1)). Leapfrog

yi+1=yi−1+ 2hf(xi,yi).

(11)

Crank-Nicholson in leapfrog

y0 =f(x,y)

I = [a,b], x0 =a, y0 =y(x0), h = b−a

n , xi =x0+ih

Crank-Nicholson

yi+1 =yi +h

2(f(xi,yi) +f(xi+1,yi+1)). Leapfrog

yi+1=yi−1+ 2hf(xi,yi).

(12)

y0 =f(x,y)

I = [a,b], x0 =a, y0 =y(x0), h = b−a

n , xi =x0+ih

Crank-Nicholson

yi+1 =yi +h

2(f(xi,yi) +f(xi+1,yi+1)). Leapfrog

yi+1=yi−1+ 2hf(xi,yi).

(13)

Program Crank-Nicholson

function [y,x] = cranknicholson(f,I,ya,n);

m = 20; e = 1e-10; h = (I(2)-I(1))/n;

y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

for i = 2:n+1

ff = f(x(i-1),y(:,i-1)); yy = y(:,i-1);

for j = 1:m

yit = y(:,i-1)+h/2*(ff+f(x(i),yy));

if abs(yy-yit) < e break; end; yy = yit;

end;

y(:,i) = yit;

end;

(14)

function [y,x] = leapfrog(f,I,ya,n) h = (I(2)-I(1))/n;

y = zeros(length(ya),n+1);

y(:,1) = ya(:);

x = linspace(I(1),I(2),n+1);

k1 = f(x(1),y(:,1));

k2 = f(x(1)+h/2,y(:,1)+h/2*k1(:));

y(:,2) = y(:,1)+h*k2(:);

for i=3:n+1

y(:,i) = y(:,i-2)+2*h*f(x(i-1),y(:,i-1));

end;

(15)

Primeri

Reˇsi diferencialno enaˇcboy0=−2xy, intervalI = [−1,3], ˇstevilo podintervalovn= 40, zaˇcetni pogoj y(−1) = 1

e, na vse ˇstiri naˇcine. Izpiˇsi vrednosti za posamezno metodo vx = 0.

f=inline(’-2*x*y’,’x’,’y’);

a=[-1,3]; y0=exp(-1); n=40;

[y,x]=euler(f,a,y0,n); figure; plot(x,y);

[y,x]=modeuler(f,a,y0,n); figure; plot(x,y);

[y,x]=cranknicholson(f,a,y0,n); figure; plot(x,y);

[y,x]=leapfrog(f,a,y0,n); figure; plot(x,y);

0.00000, 1.03064; 0.00000, 1.00144;

0.00000, 0.99667; 0.00000, 1.00000;

(16)

Primerjava rezultatov: modra: Euler,zelena: Crank-Nicholson, rdeˇca: leapfrog in rumena: toˇcna reˇsitev.

-1 1 2 3

-0.2 0.2 0.4 0.6 0.8 1.0

Reference

POVEZANI DOKUMENTI

Praktična matematika 12. [20] Na kuhalnik pristavimo lonec vode, ki ima sprva temperaturo 20 ◦ C, tako kot okolica. Kuhalnik vodi ves čas dovaja toploto z enako intenzivnostjo. Sprva

Zgrabli´ c: Veˇ c kot nobena a manj kot tisoˇ c in ena reˇ sena naloga iz linearne algebre, Pitagora, Ljubljana 1996..

Namig: Dani sistem preuredi v sistem linearnih diferencialnih enaˇ cb prvega reda.. Naloge

Slika 5.2: Grafi ˇ casa izvajanja in pohitritev reˇsevanja problemov iz testne mnoˇ zice vzorci z uporabo obeh razliˇ cic (vrsta in Task) algoritmov preprosto sestopanje,

Implementirajte program za simulacijo problem numeriˇ cnega reˇsevanja di- fuzijske enaˇ cbe na primeru prehoda lokalnih anestetikov skozi membrano nevrona1. Implementirajte sekvenˇ

c) Doloˇ ci goriˇ sˇ ci hiperbole in njeno numeriˇ cno ekscentriˇ cnost.. Doloˇ ci

Na zgornji sliki je z modro obarvan graf koliˇ cine soli v sredinski posodi, z oranˇ zno graf koliˇ cine soli v drugi posodi, z zeleno graf koliˇ cine soli v tretji posodi in z rdeˇ

Na koncu bo pred- vsem na primerih predstavljena uporaba Laplaceove transformacije pri reˇsevanju linearnih diferencialnih enaˇ cb s konstantnimi koeficienti, pri diferencialni enaˇ