% 
%<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
%<><> Codigo complementar do livro "Equacoes Diferenciais Ordinarias"  <><>
%<><> dos professores Marcelo Viana e Jose Espinar                     <><>
%<><>                                                                  <><>
%<><> Codigo escrito por Guilherme Tegoni Goedert                      <><>
%<><> https://git.impa.br/ggoedert/EDO/tree/master                     <><>
%<><> v 1.0 - 21/09/2016                                               <><>
%<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

%<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
%<><> Capitulo 1                                                       <><>
%<><> Experimento: Dinamica de Populacoes                              <><>
%<><> Funcao de resolucao em termos de parametros e condicoes iniciais <><>
%<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

function main_function(x10,x20,C,A)

% Parametrizando sistema de Lotka-Volterra
F = @(t,x) LotkaVolterra(t,x,C,A);  

% Definindo parametros da simulacao
dt = 0.1;              % Passo de tempo
T = 10;                  % Tempo m�ximo simulado

t0 = 0;                 % Tempo Inicial
x0 = [x10; x20];            % Polulacoes iniciais

N = (T - t0)/dt + 2;        % Numero de passos previsto para simulacao
t = zeros(N,1);         % Prealocando arrays para os valores de tempo simulados
t(1) = t0;
x = zeros(N,2);         % Prealocando arrays para os valores de Populacao simulados
x(1,:) = x0;

% Iterando Metodo de Euler
tn = t0;
contador = 1;

while tn <= T
    
    contador = contador + 1;
    
    [tn, xn] = NewtonStep(t(contador - 1), x(contador-1,:)',dt,F);
    
    t(contador) = tn;
    x(contador,:) = xn';
    
end


plot(x(:,1),x(:,2),'-*')
hold on