//nombres avec 16 chiffres après la virgule
format("v",16)

//Nombre de termes à calculer
n=input("n? ")

//Conditions initiales
U=[1;1/2];

//Calcul des termes de la suite en les gardant en mémoire
for i=3:(n+1)
    U=[U;U(i-1)*(1+U(i-1)-U(i-2))];
end

//Représentation de u_n
scf();
plot([0:n]',U,'bo-');
xtitle("$\large{u_n\text{ en fonction de }n}$")


//Calcul des |u_{n+1}-u_n|
V=zeros(n,1);
for i=1:n
    V(i)=2*abs(U(i+1)-U(i));
end

//Calcul des écart à une valeur approchée de la limite
E=U(2:n+1)-U(n+1)*ones(n,1);


//Représentation graphique
scf();
plot([1:n]',V(1:n),'ro-',[1:n]',E(1:n),'bo-')
legend("$\large{2|u_{n+1}-u_n|}$","$\large{u_{n+1}-u_N}$");
xlabel("$\large{n}$")
xtitle("Estimation de l"'écart à la limite")

scf();
plot(log(E(1:n-1)+%eps),log(E(2:n)+%eps),'o-')
xtitle("$\large{\ln|u_{n+1}-u_N|\text{ en fonction de }\ln|u_{n}-u_N|}$")
[a,b,sigma]=reglin(log(E(1:n-30)+%eps)',log(E(2:n-29)+%eps)');
xstring(-20,-36,"Pente "+string(floor(a*10^4)/(10^(4)))+", ordonnée à l"'origine "+string(floor(b*10^4)/(10^(4))));
plot(log(E(1:n-30)+%eps),a*log(E(1:n-30)+%eps)+b,'r')

