//////////////////////////////////////////////
//Visualisation de l'erreur et de l'ordre. 
//On definit plusieurs nombre de points pour des simulations successives. 
//////////////////////////////////////////////

clear // on efface toutes le variables stockees. 
xdel(winsid())// on efface les figures eventuellement existantes. 
exec("Euler.sci",-1)// On execute le fichier contenant toutes les fonctions utiles. 
//Tests des deux schemas sur des valeurs numeriques. 
t0=0; 
tf=1; 
r=0; 
k=1; 
yini=1; 
N=[10 20 30 50 100 200] //jeu de nombre de points. 
//On calcule les solutions approchees pour chaque valeurs de nombre de points, on calcule le maximum de l'erreur sur l'intervalle. 
erreurexp=zeros(1,length(N))
erreurimp=zeros(1,length(N))
for i=1:length(N)
    [yee,tee]=Eulerexplicite(k,r,t0,tf,yini,N(i))
    [yei,tei]=Eulerimplicite(k,r,t0,tf,yini,N(i))
    yex=exp(-tee); 
    erreurexp(i)=max(abs(yee-yex))
    erreurimp(i)=max(abs(yei-yex))
end
figure(3)
plot(N,erreurexp, 'r')
plot(N,erreurimp, 'b')
title('maximum de la valeur absolue de l erreur en fonction de valeurs du nombre de points de discretisation')
xlabel('N')
ylabel('erreur')
legend('erreur EE', 'erreur EI')
// plot log log
h=N.^(-1); //puissance -1 coefficients par coefficients. 
figure(4)
plot(log(h),log(erreurexp), 'g')
plot(log(h),log(erreurimp), 'y')
plot(log(h),log(h), 'r') //droite de pente -1
plot(log(h),2*log(h), 'm') //droite de pente -2
title('maximum de la valeur absolue de l erreur en fonction de valeurs du nombre de points de discretisation')
xlabel('log(h)')
ylabel('log(erreur)')
legend('erreur en log-log EE', 'erreur en log-log EI', 'pente 1', 'pente 2')


