mode(0);

//// Question 1
//pwd  //permet de connaitre le repertoire ambiant

//X=read("donX.txt",-1,300)';
//Y=read("donY.txt",-1,300)';
//plot2d(X,Y,style=-6)
//
//C=[ones(300,1),X];
//M=C'*C
//s=M^(-1)*C'*Y
//
//t=[-3:0.1:3];
//y=s(2)*t+s(1);
//plot2d(t,y,style=3)
//plot2d(t,3*t+5,style=5)
//
//// On trouve la droite d'équation y=3x+4.75, alors que la relation de départ était y=3+5x

// Question 2
//X=5*rand(300,1);
//Y1=1+2*X+4*X.^2.65;
//E=5*(rand(300,1,'normal'));
//Y=Y1+E;
//
//write('jeuX.txt',X)
//write('jeuY.txt',Y)
X=read("jeuX.txt",-1,300)';
Y=read("jeuY.txt",-1,300)';
//
//X=5*rand(300,1);
//Y1=1+2*X+4*X.^2.65;
//E=5*(rand(300,1,'normal'));
//Y=Y1+E;

scf(0);
plot2d(X,Y,style=-6)
C=[ones(300,1),X];
M=C'*C
s=M^(-1)*C'*Y
t=[0:0.1:5];
y=s(2)*t+s(1);
scf(0);
plot2d(t,y,style=3,leg="la droite de regression")

C=[ones(300,1),X,X.^2];
M=C'*C
z=M^(-1)*C'*Y
t=[0:0.1:5];
y=z(3)*t.^2+z(2)*t+z(1);
plot2d(t,y,style=5,leg="la parabole")
scf(1); 
plot2d(X,z(3)*X.^2+z(2)*X+z(1)-Y,style=-2,leg="l écart entre la parabole et le nuage de points, on remarque un manque d homogénéité");
scf(0);
//// On trouve la droite d'équation y=3x+4.75, alors que la relation de départ était y=3+5x
//

//
function z=dist(a)
L=[ones(300,1),X,X.^a];
M=L'*L;
s=(M^(-1))*L'*Y
U=s(1)+s(2)*X+s(3)*X.^a;
V=Y-U;
z=V'*V;
endfunction

for i=1.1:0.1:3 
  disp([i,dist(i)])
end;

for i=2.5:0.01:2.7 
  disp([i,dist(i)])
end;

a=2.64
L=[ones(300,1),X,X.^a];
M=L'*L;
k=(M^(-1))*L'*Y
t=[0:0.1:5];
yd=k(3)*t.^a+k(2)*t+k(1);
plot2d(t,yd,style=7)//,leg="la courbe plus générale"

scf(2); 
plot2d(t,y-yd,style=1,leg="diférence entre la parabole trouvée et la fonction plus générale avec a=2.64");
scf(0);

//pwd permet de connaitre le repertoire ambiant
//chdir("/home/alex/Documents/annalyse num L3/scilab/2011-02-14" );
//write('jeuX.txt',X)
//write('jeuY.txt',Y)
//A=read("donX.txt",-1,300);
//B=read("donZ.txt",-1,300);
////plot2d(A,B,style=-6)
//for i=1.1:0.1:2 
//  disp([i,dist(i)])
//end;
////
////for i=1.6:0.01:8 
////  disp([i,dist(i)])
////end;
//
//a=1.68 
//L=[ones(1:n)',X',X'.^a];
//M=L'*L;
//s=(M^(-1))*L'*Y'
//U=s(1)*ones(1:n)+s(2)*X+s(3)*X.^a;
//
//plot2d(X,Y,style=-4)
//plot2d(gsort(X),gsort(Y1))
//t=0:0.1:5;
//u=1+2*t+4*t.^1.732;
//v=-0.27+3.18*t+3.98*t.^1.68;
//plot2d(t,u,style=5)
//plot2d(t,v,style=2)