% Escolha um metodo: 1 (Euler), 2 (Taylor de ordem 2),
% 3 (Taylor de ordem 3), 4 (Heun), 5 (RK3), 6 (RK4)
Metodo = 6;

% Intervalo de tempo e valor do passo
t0 = 0;             % Tempo inicial
tf = 5;             % Tempo final
h = 0.01;           % Passo de tempo;

% valor do parametro
m=3;
epsilonm=((m-2)/m)^((m-2)/4);

% Definindo equacao diferencial
F = @(t,z) GradPerp_F(t,z,m);
F1 = @(t,z) GradPerp_F1(t,z,m);
F2 = @(t,z) GradPerp_F2(t,z);

figure;

% calculando a curva de nivel para diferentes condicoes iniciais
depsilon = 0.01;      % passo na condição inicial

for epsilon=0:depsilon:0.05
    z0=[epsilon,0];  % condicao inicial

    % Resolvendo usando metodo escolhido
    if Metodo == 1 % Metodo de Euler
        z = Euler(t0,tf,h,z0,F);
    
    elseif Metodo == 2 % Metodo de Taylor ordem 2
        z = Taylor2(t0,tf,h,z0,F,F1);
    
    elseif Metodo == 3 % Metodo de Taylor ordem 3
        z = Taylor3(t0,tf,h,z0,F,F1,F2);
    
    elseif Metodo == 4 % Metodo de Heun 
        z = Heun(t0,tf,h,z0,F);

    elseif Metodo == 5 % Metodo RK3 
        z = RK3(t0,tf,h,z0,F);
    
    elseif Metodo == 6 % Metodo RK4
        z = RK4(t0,tf,h,z0,F);

    end

    % Representacao grafica da curva de nivel associada a (epsilon,0)
    plot(z(:,1),z(:,2))
    hold on

end