Académique Documents
Professionnel Documents
Culture Documents
Runge Kutta 4 3 Edos
Runge Kutta 4 3 Edos
close all
fprintf(' RK4 dos EDO :\n')
fprintf(' =============\n')
f1=input('La EDO Número 1 Dy1Dx=','s');
f2=input('La EDO Número 2 Dy2Dx=','s');
f3=input('La EDO Número 3 Dy3Dx=','s');
y0=input('Valores inciales de las variables dependientes y0=');
xi=input('Variable incial independiente xi=');
xf=input('Varible final varible independinte xf=');
dx=input('Tamaño de paso:');
n = 3;
x=xi;
m=1;
xp(m)=x;
yv1(1)=y0(1,1);
yv2(1)=y0(1,2);
yv3(1)=y0(1,3);
f=dsolve('Dz= -0.5*z','z(0)=4','x');
f=inline(f);
g=dsolve('Dz=4-0.3*z-0.1*4*exp(-x/2)','z(0)=6','x');
g=inline(g);
j=dsolve('Dz=10-0.5*((2*exp(-x/5)*exp(-(3*x)/10)*(20*exp(x/2) + 3))/3 -
(28*exp(-(3*x)/10))/3)+0.25*4*exp(-x/2)-0.15*z','z(0)=10','x');
j=inline(j);
for i = 1:n
yp(i,m) = y0(i);
y(i) = y0(i);
end
while (x<xf)
xend = x + dx;
if xend > xf
xend = xf;
end
h = dx;
[x,y] = integradorRK4con2EDO(x,y,n,h,xend,f1,f2,f3);
m = m +1;
xp(m) = x;
yv1(m)=f(x);
yv2(m)=g(x);
yv3(m)=j(x);
for i = 1:n
yp(i,m) = y(i);
end
end
fprintf('\n X Y1Verdad Y2Verdad Y3Verdad Y1RK4
Y2RK4 Y3RK4 err1 err2 \n')
for j = 1:m
err1 = abs((yv1(j)-yp(1,j))/yv1(j))*100;
err2 = abs((yv2(j)-yp(2,j))/yv2(j))*100;
err3 = abs((yv3(j)-yp(3,j))/yv3(j))*100;
fprintf('\n %3.5f %10.7f %10.7f %10.7f %10.7f %10.7f %10.7f \n
',xp(j),yv1(j),yv2(j),yv3(j),yp(1,j),yp(2,j),yp(3,j),err1,err2,err3)
end
function [x, y] = integradorRK4con2EDO(x,y,n,h,xend,f1,f2,f3)
while x < xend
if (xend - x) < h
h = xend - x;
end
[x,y] = RK4con2EDO(x,y,n,h,f1,f2,f3);
end
end