function
Y=METODO_DE_RUNGE_KUTTA
format long
disp('METODO DE RUUGE-KUTTA')
syms w
f=inline(input('ingrese la
funcion f(t,w):=','s'));
syms t
y=inline(input('ingrese la
solucion exacta y(t)=','s'));
a=input('ingrese el
valor de a:');
b=input('ingrese el valor
de b:');
N=input('ingrese el
valor de N:');
y0=input('ingrese la
condicion inicial:');
t=a;
exacta=y(t);
w0=y0;
k1=0;
k2=0;
k3=0;
k4=0;
error=abs(w0-exacta);
fprintf('\t\t\t\t\t
METODO DE RUNGE KUTTA \n\n');
fprintf('\t t(i) \t\t k1 \t\t k2
\t\t k3 \t\t k4 \t\t w(i) \t\t y(i) \t ERROR \n');
fprintf('%9.2f \t %8.5f \t %8.5f \t %8.5f \t %8.5f \t %7.5f \t %7.5f
\t %7.5f \n',t,k1,k2,k3,k4,w0,exacta,error);
t=a;
w=y0;
h=(b-a)/N;
for i=1:N
k1=h*(feval(f,t,w));
z=t+(1/2*(h));
u=w+(1/2*(k1));
k2=h*(feval(f,z,u));
u=w+(1/2*(k2));
k3=h*(feval(f,z,u));
z=t+h;
u=w+k3;
k4=h*(feval(f,z,u));
w=w+((1/6)*(k1+2*k2+2*k3+k4));
t=t+h;
exacta=y(t);
error=abs(w-exacta);
fprintf('%9.2f \t
%7.5f \t %7.5f \t %7.5f \t %7.5f \t
%7.5f \t %7.5f \t %7.5f \n',t,k1,k2,k3,k4,w,exacta,error);
end
end
function
Y=METODO_DE_EULER_MEJORADO
format long
disp('METODO DE
EULER_MEJORADO')
syms w
f=inline(input('ingrese la
funcion f(t,w):=','s'));
syms t
y=inline(input('ingrese la
solucion exacta y(t)=','s'));
a=input('ingrese el
valor de a:');
b=input('ingrese el
valor de b:');
N=input('ingrese el
valor de N:');
y0=input('ingrese la
condicion inicial:');
t=a;
exacta=y(t);
w0=y0;
k1=0;
k2=0;
error=abs(w0-exacta);
fprintf('\t\t\t\t\t
METODO DE EULER_MEJORADO \n\n');
fprintf('\t\t t(i) \t\t\t k1
\t\t\t k2 \t\t\t w(i) \t\t\t y(i) \t\t ERROR \n');
fprintf('%13.2f \t %11.5f \t %11.5f \t %12.5f \t %12.5f \t %11.5f \n',t,k1,k2,w0,exacta,error);
t=a;
w=y0;
h=(b-a)/N;
for i=1:N
k1=h*(feval(f,t,w));
z=t+h;
u=w+k1;
k2=h*(feval(f,z,u));
w=w+((1/2)*(k1+k2));
t=t+h;
exacta=y(t);
error=abs(w-exacta);
fprintf('%13.2f \t
%11.5f \t %11.5f \t %12.5f \t %12.5f \t %11.5f \n',t,k1,k2,w,exacta,error);
end
end
No hay comentarios:
Publicar un comentario