% Métods de Aproximação em Engenharia - Mst. Eng. Construção
% Carlos Balsa - 2009/2010
% ex 1 da ficha nº 4
%

clear all;

% alínea a)
% resolução pelo metodo das tentativas com recurso ao Runge-Kutta de 4ª ordem
h=0.1;
t0=0;  tn=1; t=[t0:h:tn];              % intervalo de tempo   
un=1;
y1=0;                   % estimativa de y2 (tentar outros valores até que o y1 final seja igual a 1)
%y2=2.47189;            % solução obtida após várias tentativas                               % estimativa de y2 (tentar outros valores até que o y1 final seja igual a 1)
y0=[y1 y2]';                         % condições iniciais
f=@(t,y) [y(2) -(1+exp(y(1)))]';     % função derivada

[T, Y]=ode45(f,t,y0)    ;            % Runge-Kutta 4ª ordem
return

% grafico 

figure(1); clf;
plot(T,Y(:,1),'r-'); hold on;
plot(T,Y(:,2),'b--'); hold on;
grid on; hold on;
xlabel('t'); hold on;
ylabel('y(t)'); hold on;
legend('y_1','y_2'); hold on;
title('Método das tentativas');

% alinea b)
%  resolução pelo metodo das diferenças finitas

h=0.25;
t=[t0:h:tn];
ni=(tn-t0)/h-1;

ff=@(u) [-2*u(1)+0.25^2*exp(u(1))+u(2)+0.25^2;
u(1)-2*u(2)+0.25^2*exp(u(2))+u(3)+0.25^2;
u(2)-2*u(3)+0.25^2*exp(u(3))+1+0.25^2];      % matriz F(u) do sistema não-linear F(u)=0

jf=@(u) [-2+0.25^2*exp(u(1)) 1 0  ;
         1 -2+0.25^2*exp(u(2)) 1  ;
         0 1 -2+0.25^2*exp(u(3)) ];        % Matriz Jacobiana de F(u)

u0=zeros(ni,1);
maxit=30;
tol=1e-6;
u=nle_newtsys(ff,jf,u0,maxit,tol);         % método de Newton para resolver F(u)=0;

u0=0; un=1;
u=[u0; u; un];

% grafico 
figure(2); clf;
plot(t,u,'r-'); hold on;
grid on; hold on;
xlabel('t'); hold on;
ylabel('u(t)'); hold on;
title('Método das diferenças finitas');











return


f=@(u) [-2*u(1)+0.2^2*exp(u(1))+u(2)+0.2^2;
u(1)-2*u(2)+0.2^2*exp(u(2))+u(3)+0.2^2;
u(2)-2*u(3)+0.2^2*exp(u(3))+u(4)+0.2^2;
u(3)-2*u(4)+0.2^2*exp(u(4))+1+0.2^2];

jf=@(u) [-2+0.2^2*exp(u(1)) 0 0 0;
       1 -2+0.2^2*exp(u(2)) 0 0;
       0 1 -2+0.2^2*exp(u(3)) 0;
       0 0 1 -2+0.2^2*exp(u(4))];