Professional Documents
Culture Documents
Tina Zadatak
Tina Zadatak
Diferencijalne jednadbe
3. zadatak
Posedi Tina, KI
16.01.2015.
Zadatak 22.
Zadatak 3.22.RK
Nacrtajte dijagram toka raunanja, pa izradite program za numeriko rjeavanje
sustava od dvije linearne diferencijalne jednadbe I reda s konstantnim koeficijentima
metodom Runge-Kutta IV.
y'=- 3y-z
y'=y-z
pa izraunajte relativnu pogreku. Tiskajte x, ynum, znum, yegz, zegz i relativnu pogreku.
Rezultate spremite u datoteku (file) kojoj proizvoljno odaberite ime. Grafiki prikaite
u pravokutnom koordinatnom sustavu funkcijsku zavisnost y num = f(x), znum =g(x).
Kod u Matlabu:
clear all
clc
close all
e = 2.718281828;
x1 = 0;
y1 = 1;
z1 = 1;
h = 0.1;
bkr = 100;
xmax = x1 + h*bkr;
br = 0;
for x = x1:h:xmax
br = br + 1;
yegz = (e^(-2*x))*(1-2*x);
if yegz ~= 0
ppy = (y1 - yegz)/yegz*100;
else
ppy=0;
end
zegz = (e^(-2*x))*(1+2*x);
if zegz ~= 0
ppz = (z1 - zegz)/zegz*100;
else
ppz=0;
end
xc(br) = x;
yrk(br) = y1;
zrk(br) = z1;
Yegz(br) = yegz;
Zegz(br) = zegz;
Ppy(br) = ppy;
Ppz(br) = ppz;
k1 = h*dy(x, y1, z1);
l1 = h*dz(x, y1, z1);
k2 = h*dy(x + h/2, y1 + k1/2, z1 + l1/2);
l2 = h*dz(x + h/2, y1 + k1/2, z1 + l1/2);
k3 = h*dy(x + h/2, y1 + k2/2, z1 + l2/2);
l3 = h*dz(x + h/2, y1 + k2/2, z1 + l2/2);
k4 = h*dy(x + h, y1 + k3, z1 + l3);
l4 = h*dz(x + h, y1 + k3, z1 + l3);
y1 = y1 + (k1 + 2*k2 + 2*k3 + k4)/6;
z1 = z1 + (l1 + 2*l2 + 2*l3 + l4)/6;
end
plot(xc,yrk,'-r',xc,zrk,'--b');
xlabel('x') ; ylabel('y1,z1');
legend('y1','z1'); grid
title ('Rjesavanje sustava dvije diferencijalne jednadzbe I reda - Runge-Kutta IV')
podaci=[xc; yrk; zrk; Yegz; Zegz; Ppy; Ppz];
fid = fopen('podaci.dat','w');
fprintf(fid,'x y1 z1 yegz zegz ppy ppz\n');
fprintf(fid,'%g %g %g %g %g %g %g\n',podaci);
fclose(fid);
Dijagram toka:
Pozivanje funkcije dy
Pozivanje funkcije dz
Rezultat: