%%%
    clear
%% metodo de Taylor de ordem 1 (Euler) e de ordem 2 : construimos 
%% solucaoes aprox. para o prob. de valor inicial
%%%   y' = f(t,y),  a <= t <= b, y(0) = yo;
%%%   nos pontos to = a, t1, ...., tn=b, (n+1 pontos espacados uniformemente)
%%
%% Informacao de entrada: a, b, inteiro n, condicao inicial yo.
%%% Informac. saida: valores aprox. wi para y(ti) (sol. exata) nos ponto ti.
%%   ===== Problema teste: y' = y -t^2 +1 ,  0<=t<=3, y(0) = 0.5; =======
  a = 0; b= 3; n = 100; yo = 0.5;
  h = (b-a)/n;
     ta = a;
     wa = yo; wt = yo;
      t(1) = a;   %  para montar sol. final, t sera um vetor n+1 componentes 
      w(1) = wa;   %  guardando soluc.  , w sera um vetor de n+1 componentes
%%   ======  Paso 2:  ===========
 for i =1:n;
        wa = wa +h*(wa-ta^2+1); % Taylor ordem 1
        wt =  wt+h*((1+0.5*h)*(wt- ta^2+1)-h*ta) ; % Taylor ordem 2
        % calculando approx. no passo i+1
         ta = a+i*h;           % atualizando o tempo para i+1
       w(i+1) = wa;    % armaz. sol. ap. do met. Taylor ordem 1 no vetor w
       ww(i+1) = wt;   % armaz. sol. ap. do met. Taylor ordem 2 no vetor ww
       t(i+1) = ta;
     end;
    %%%   FIM metodo de Euler
%%%% Vamos comparar a solucao construida com a solucao exata:
%%%  sol. exata: y(t) = (t+1)^2-0.5*exp(t)
%%% 
        y = (t+1).^2-0.5*exp(t);
       figure
        plot(t,y, t,w,'-.')
        title('Sol. Exata e Sol Ap. pelo Met. Taylor ordem 1')
         figure
         plot(t,y,t,ww,'-.')   
        title('Sol. Exata e Sol Ap. pelo Met. Taylor ordem 2')