% Matematica Aplicada 
% 
% Runge-Kutta de 4ª ordem
% Exercicio 3. Ficha nº 4
%
% Carlos Balsa - 2007/2008


format long;

clear all
close all

a=0; 
b=0.5;
h=0.1;
np=(b-a)/h+1;
y=zeros(np,1);
x=[a:h:b]';
y0=1;
y(1)=y0;

Y=zeros(np,2);

for k=1:np-1
    
        xk=x(k);
        yk=y(k);
        k1=h*(2*xk/yk-xk*yk);
        
        xk=x(k)+0.5*h;
        yk=y(k)+0.5*k1;
        k2=h*(2*xk/yk-xk*yk);
        
        yk=y(k)+0.5*k2;
        k3=h*(2*xk/yk-xk*yk);
        
        xk=x(k)+h;
        yk=y(k)+k3;
        k4=h*(2*xk/yk-xk*yk);
        
        media=1/6*(k1+2*k2+2*k3+k4);
        
        y(k+1)=y(k)+media;
      
 end 

 
Y(:,1)=y;
 

% valores exactos
for k=1:np
    xk=x(k);
    y(k)=sqrt(2-exp(-xk^2));
end
Y(:,2)=y;
Y


% grafico
 plot(x,Y(:,1),'r*:'); hold on; 
 plot(x,Y(:,2),'b+:'); hold on;
% plot(x,Y(:,3),'k.-'); hold on;
 xlabel('x_k');hold on; 
 ylabel('y_k');hold on; 
 legend('Runge-Kutta 4ª ordem','Valores exactos',2); hold on; 
