function [t,x] = PicardExtendido(Funcao, gamma, t0, tf, x0, Tamb, xold,delta,L)

F = @(Tamp) Funcao(Temp,gamma);

%> Definindo domínio da solução
t_inicial = t0;
t_final = tf;

%> Condicoes Iniciais
x_inicial = x0;

%>>> Definindo dominio de resolucao
%M = abs(gamma.*(delta^4 - Tamb^4));
%epsilon = min(delta,delta/M);
epsilon = 0.1;

t_segmentos = (t_inicial : epsilon : t_final)'; 

%> Parametros de resolucao
Tol = 1e-3;             % Tolerancio do metodo
ContadorMax = 200;      % Numero maximo de iteracoes permitidas em cada passo da extensao

%>> Resolvendo Picard e extendendo Dominio

% Resolvendo primeiro segmento da solucao
t = linspace(t_segmentos(1),t_segmentos(2),L)';
xi = ones(size(t))*x_inicial;

Erro = 1;
contador = 0;
while Erro > Tol

    x = Picard(t,xi,xold,F);

    dif = x - xold;
    Erro = max(abs(dif));

    xold = x;

    contador = contador + 1;
    if contador > ContadorMax
        break
    end
    Ct = contador;
end

% Extendendo dominio e resolvendo
for i = 3:length(t_segmentos)
    
    t_novo = linspace(t_segmentos(i-1),t_segmentos(i),L)'; 
    t = [t(1:end-1);t_novo];
    xi = ones(size(t))*x_inicial;

    xold = xi;
    Erro = 1;
    contador = 0;
    while Erro > Tol

        x = Picard(t,xi,xold,F);

        dif = x - xold;
        Erro = max(abs(dif));

        xold = x;

        contador = contador + 1;
        if contador > ContadorMax
            break
        end

    end
    Ct = [Ct,contador];

end
