% Matematica Aplicada - Mestrados em Eng. Quimica e Industrial 
% Metodo de Euler Modificado
% para a resoluçao da EDO
% y'=2t/y-yt
% Carlos Balsa - 2007/2008

format long
clear all
close all

a=0; % inicio do intervalo
b=0.5; % fim do intervalo
h=0.1; % passo
np=(b-a)/h+1; % numero de pontos onde a soluçao e calculada
t=[a:0.1:b]';  % vector dos pontos onde serao calculadas as soluçoes
y=zeros(np,1); % vector das soluçoes calculadas para cada ponto
ye=zeros(np,1); % vector que ira conter a soluçao exacta
y0=1; % condiçao inicial
y(1)=y0; % primeira coordenada do vector das soluçoes 


% ciclo principal do metodo de Euler modificado

for k=1:np-1
    % previsao
        tk=t(k);
        yk=y(k);
        dy1=2*tk/yk-tk*yk;
        y(k+1)=y(k)+h*dy1;
       
     % correcçao
        tk=t(k+1);
        yk=y(k+1);
        dy2=2*tk/yk-tk*yk;
        y(k+1)=y(k)+h*(dy1+dy2)/2;
end 
disp('Soluçao aproximada por Euler modificado')
y
pause

% valores exactos
for k=1:np
    tk=t(k);
    ye(k)=sqrt(2-exp(-tk^2));;
end
disp('Soluçao exacta')
ye
pause

% grafico
 plot(t,y,'r*:'); hold on; 
 plot(t,ye,'b+:'); hold on;
 xlabel('t_k');hold on; 
 ylabel('y_k');hold on; 
 legend('Euler Modificado','Soluçao exactos',2);
