function [t,x]=shoot_es1(s0,itmax,tol)
% Metodo di shooting per il problema
% Example 7.1, page 178 Ascher-Petzold
% x''(t)+exp(x(t)+1)=0
% x(0)=x(1)=0
%
% Se s0=0.5 il metodo converge a una soluzione
% Se s0=10 il metodo converge all'altra
% Shooting funziona bene per questo esempio

% La soluzione esatta e'
% y=-2*log( cosh( (t-1/2)*theta/2 )/cosh(theta/4) )
% dove theta risolve l'equazione 
% theta = sqrt(2*exp(1))*cosh(theta/4)
% Questa eq. ha 2 soluzioni, che possono essere calcolate con
% i comandi
% theta1=fzero( @(x) x-sqrt(2*exp(1))*cosh(x/4), [0 4])
% theta2=fzero( @(x) x-sqrt(2*exp(1))*cosh(x/4), [6 10])

T= [0 1];
z0=[0 s0 0 1];
hold off
close all
hold on
for k=1:itmax
    [t,z]=ode45(@fz,T,z0);
    inc=z(end,1)/z(end,3);
    [k,inc]
    s1=s0-inc;
    if(abs(inc)<tol)break
    end
    s0=s1;
    z0(2)=s0;
    plot(t,z(:,1))
end
x=z(:,1);
plot(t,z(:,1),'--g')

function w=fz(t,z)
w = [ z(2); -exp(z(1)+1); z(4); -exp(z(1)+1)*z(3)];

    