Politechnika Śląska w Gliwicach
Wydział Automatyki, Elektroniki i Informatyki
Laboratorium Metod Numerycznych
dla kierunku Automatyka i Robotyka
Temat ćwiczenia:
Przybliżone rozwiązywanie równań
różniczkowych zwyczajnych
Ćwiczenie wykonano: 04.05.2016, godz. 12:15-13:45
Grupa 1, sekcja 1:
Grzegorz Cudok
Damian Otto
Gliwice 2016
Kody:
%R+k
1.
2. clc;
3. clear all;
4. h=0.2;
5. x = 0:h:3;
6. y = zeros(1,length(x)) ;
7. y(1) = 1;
8. f =@(x,y) 0.1.*x*y;
9.
10.
c= zeros(1,length(x)) ;
11.
d = zeros(1,length(x)) ;
12.
c(1)=1;
13.
d(1)=1;
14.
15.
for i=1:(length(x)-1)
16.
k_1 = h* f(x(i),y(i));
17.
k_2 = h* f(x(i)+0.5*h,y(i)+0.5*k_1);
18.
k_3 = h* f((x(i)+0.5*h),(y(i)+0.5*k_2));
19.
k_4 = h* f((x(i)+h),(y(i)+k_3));
20.
y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4);
21.
d(i+1) = c(1)*exp(1/20*x(i+1)^2);
22.
end
23.
24.
y=y';
25.
x=x';
26.
c=c';
27.
d=d';
28.
P=[x,y,d];
29.
30.
31.
%EULER
32.
clc;
33.
clear all;
34.
h=0.2;
35.
x = 0:h:3;
36.
y = zeros(1,length(x)) ;
37.
y(1) = 1;
38.
f =@(x,y) 0.1.*x*y;
39.
c= zeros(1,length(x)) ;
40.
d = zeros(1,length(x)) ;
41.
c(1)=1;
42.
d(1)=1;
43.
44.
for i=1:(length(x)-1)
45.
fx = f(x(i),y(i));
46.
dfx=h*fx;
47.
y(i+1) = y(i) + dfx ;
48.
d(i+1) = c(1)*exp(1/20*x(i+1)^2);
49.
end
50.
y=y';
51.
x=x';
52.
c=c';
53.
d=d';
54.
P=[x,y,d];
Zadane y(0)=1 x
max
=3 h=0.2 otrzymane wartości dla x
max
=3:
metoda Kutego: 1,56831215678754
metoda Eulera: 1,50999649690787
dokładna
wartość: 1,56831218549017