n=100
T=1
delta_t=T/n
r=0.15
sigma=0.3
up=exp(sigma*sqrt(delta_t))
down=1/up
R=exp(r*delta_t)
p=(R-down)/(up-down)

S0=135
SS(1,1)=S0
for i=1:n
    SS(i+1,1)=SS(i,1)*down
    for j=1:i
        SS(i+1,j+1)=SS(i,j)*up
    end
end

// 1.1

function x=Stilde(i,j)
    x=SS(i+1,j+1)*exp(-r*delta_t*i)
endfunction

// 1.3

disp("Stilde(0,0)=",Stilde(0,0))
esp=p*Stilde(1,1)+(1-p)*Stilde(1,0)
disp("espérance à calculer=",esp)


// 2.1
//Somme totale remboursée
disp(22*50)
//Pourcentage de la somme prêtée remboursé en plus
disp((22*50-1000)/1000)


// 2.5
x=poly(0,"x")
[sols]=roots(22*x^51-1022*x+1000)

//2.6
r=-52*log([sols](51))
disp(r)

//2.7
disp(1000*exp(r))


//2.8
//On écrit une fonction qui donne le taux en fonction du rembousement hebdomadaire.
function r=taux(m)
    x=poly(0,"x")
    [sols]=roots(m*x^51-(1000+m)*x+1000)
    r=-52*log([sols](51))
endfunction
