Une forme quadratique de 4 variables X,Y,Z,T peut s’interpréter dans
l’espace projectif Oxyz comme le premier membre de l’équation d’une
quadrique.
Par exemple soit :
q(x,y,z):=4*x2+y2+z2-4*x*y+4*x*z-2*y*z+8*x-4*y+4*z+2
q(x,y,z)=0 est l’équation d’une quadrique.
On associe à q la forme quadradique Q :
Q(x,y,z,t):=normal(t^
2*normal(q(x/t,y/t,z/t)))
et la matrice carrée A d’ordre 4 :
A:=q2a(Q(x,y,z,t),[x,y,z,t])
On obtient :
A:=[[4,-2,2,4],[-2,1,-1,-2],[2,-1,1,2],[4,-2,2,2]]
on retrouve la forme Q à partir de A si :
v:=[x,y,z,t]
la forme quadratique est :
Q(op(v)):=normal((v*A*tran(v))[0]) ou plus simplement :
Q(op(v)):=normal(v*A*v)
on retrouve la forme Q à partir de A si :
v1:=[x,y,z,1]
q(op(v1)):=normal(v1*A*v1)
et Q(v)=0 représente une quadrique Q de l’espace projectif.
Les points doubles de Q vérifie A*tran(v)=[0,0,0,0] ie
tran(v) est un élément du noyau de A.
Discussion selon le rang r de A : r:=rank(A)
Pour réaliser la réduction de l’équation d’une quadrique, on pose :
B:=A[0..2,0..2];
C:=A[0..2,3];
d:=A[3,3];
Les directions propres de B sont les directions principales de la
quadrique Q.
Comme une matrice symétrique réelle est diagonalisable dans un repère
orthonormé, il existe un repère orthonormé (O,u,v,w) dans lequel la
quadrique a comme équation :
s1*x12+s2*y12+s3*z12+2c1*x1+2*c2*y1+2*c3*z1+d1=0
où s1,s2,s3 sont les valeurs propres de B et u,v,w sont les
vecteurs propres associés, choisis normés et orthogonaux.
Remarques
Voici les différents cas :
Pour faciliter l’étude des différents cas
le programme jortho va renvoyer 6 valeurs :
les 3 valeurs propres (en regroupant les valeurs propres égales et non nulles
au début et en mettant les valeurs propres nulles à la fin) et les
3 vecteurs propres seront normés et orthogonaux sauf pour les vecteurs
propres associés à 0.
Soit les trois valeurs propres sont : s1,s2,s3 et les trois vecteurs
propres associés sont : u,v,w.
On a soit les zeros déjà à la fin et les valeurs égales non nulles
déjà regroupées au début, soit on peut avoir 8 cas ( a!=0,b!=0,a!=b) :
(0,a,b) ou (0,a,a) ou (0,a,0) ou (b,a,a) ou
(a,b,a) ou (0,0,a) ou (a,0,b) ou (a,0,a).
Pour les quatre premiers cas :
Si (s1==0 ou s2==s3) et s2!=0) on renvoie s2,s3,s1 et
v,w,u .
Ainsi on a maintenant :
(a,b,0) ou (a,a,0) ou (a,0,0) ou (a,a,b) ou
(a,b,a) ou (0,0,a) ou (a,0,b) ou (a,0,a).
Pour les quatre derniers cas, on a :
(s2==0 ou s1==s3) et s3!=0) on renvoie s3,s1,s2 et
w,u,v.
Il faut rendre u,v othogonaux lorsque s1==s2 si v*u!=0
v1:=-(v*u)*u+(u*u)*v ainsi v1*u=0
il faut rendre v,w othogonaux lorsque s3==s2==0 si v*w!=0
puis on norme u,v,w.
Voici les programmes :
jortho renvoie les valeurs propres et les vecteurs propres
orthonormés.
quadrique renvoie la nouvelle origine la matrice de passage et la forme
reduite ainsi que la verification.
jortho(A):={ local P,J,u,v,w,s1,s2,s3,a,b; (P,J):=jordan(A); u:=P[0..2,0]; v:=P[0..2,1]; w:=P[0..2,2]; s1:=J[0,0]; s2:=J[1,1]; s3:=J[2,2]; if ((s1==0 || s2==s3) && s2!=0){ b:=u; u:=v; v:=w; w:=b; a:=s1; s1:=s2; s2:=s3; s3:=a; } if ((s2==0|| s1==s3)&& s3!=0){ b:=w; w:=v; v:=u; u:=b; a:=s3; s3:=s2; s2:=s1; s1:=a; } //si s1==s2 et si v*u!=0 a:=normal(u*u); b:=normal(v*u); if (b!=0) { v:=-b*u+a*v; } //on norme u u:=u/sqrt(a); //si s3==s2==0 et si v*w!=0 a:=normal(v*v); b:=normal(v*w); if (b!=0) { w:=-b*v+a*w; } //on norme w et v w:=w/sqrt(normal(w*w)); v:=v/sqrt(a); return (s1,s2,s3,u,v,w); };
Le programme Quadrique renvoie le repere (la nouvelle origine et la matrice de passage) et l’équation réduite dans ce repère :
//q0(x,y,z):=4*x^2+y^2+z^2-4*x*y+4*x*z-2*y*z+8*x-4*y+4*z+2 // (s2=s3=0,c2=c3=0) //q1(x,y,z):=x^2+3*y^2-3*z^2-8*y*z+2*z*x-4*x*y-1 // (s3=0,c3=0) //q2(x,y,z):=5*x^2+y^2+z^2-2*x*y+2*x*z-6*y*z+2*x+4*y-6*z+1 // (s1,s2,s3!=0) //Quadrique(q2)=[(-1)/2,-1,1/2],[[0,2/(sqrt(6)), //-(1/(sqrt(3)))],[1/(sqrt(2)),-(1/(sqrt(6))),-(1/(sqrt(3)))], //[1/(sqrt(2)),1/(sqrt(6)),1/(sqrt(3))]], //-2*X^2+6*Y^2+3*Z^2-3 //q3(x,y,z):=2*x^2+2*y^2+z^2+2*x*z-2*y*z+4*x-2*y-z+3 // (s3=0,c3!=0) //q4(x,y,z):=4*x^2+y^2+z^2-4*x*y+4*x*z-2*y*z+8*x- // 6*y+4*z+2 // (((s2=s3=0,c2!=0||c3!=0)) //q5(x,y,z):=x^2+2*y^2-z^2-4*x*y+4*x*z+4*y*z+6*x- // 4*y+2*z+1 // (root of) //q6(x,y,z):=(x+y)*(y-z)+3*x-5*y // (s3=0,c3!=0) //q7(x,y,z):=7*x^2+4*y^2+4*z^2+4*x*y-4*x*z-2*y*z- // 4*x+5*y+4*z-18 // (s1,s2,s3!=0) //q8(x,y,z):=-x^2-3*z^2-4*x*y+4*x*z+4*y*z+6*x-4*y+2*z+1 //q9(x,y,z):=x^2-3*x*y+y^2+x-y-z^2/2+sqrt(10)/5*z //q est une fct de 3 variables de degre 2 //Quadrique renvoie la nouvelle origine, // la matrice de passage, //la forme reduite avec le vecteur de variables et //la verification par ex pour q4 //B:=[[4,-2,2],[-2,1,-1],[2,-1,1]];C:=[4,-3,2]; Quadrique(q):={ local Q,A,B,C,d,J,r,P,O1,c,c1,c2,c3,c4,s1,s2, s3,u,v,w,v1,w1,N,k; Q(x,y,z,t):=normal(t^2*normal(q(x/t,y/t,z/t))); A:=q2a(Q(x,y,z,t),[x,y,z,t]); r:=rank(A); B:=A[0..2,0..2]; C:=A[0..2,3]; d:=A[3,3]; //on rend P orthogonale sauf si il y a des val propres =0 (s1,s2,s3,u,v,w):=jortho(B); P:=tran([u,v,w]); //c:=normal(diff(C*P*[x,y,z],[x,y,z])); c:=normal(C*P); //les vp nulles sont a la fin c1:=c[0]; c2:=c[1]; c3:=c[2]; if (s1*s2*s3!=0) { O1:=normal(-c1/s1*u-c2/s2*v-c3/s3*w); //O1:=solve(B*[x,y,z]+C,[x,y,z])[0]; d:=q(O1[0],O1[1],O1[2]); return (O1,P,s1*X^2+s2*Y^2+s3*Z^2+d,[X,Y,Z],r, normal(q(op(O1+P*[X,Y,Z])))); } if (s1*s2!=0) { if (c3!=0) { O1:=normal(-c1/s1*u-c2/s2*v); d:=q(O1[0],O1[1],O1[2]); O1:=normal(-c1/s1*u-c2/s2*v-d/(2*c3)*w); return (O1,P,s1*X^2+s2*Y^2+2*c3*Z,[X,Y,Z],r, normal(q(op(O1+P*[X,Y,Z])))); } if (c3==0) { O1:=normal(P*[-c1/s1,-c2/s2,0]); d:=q(O1[0],O1[1],O1[2]); return (O1,P,s1*X^2+s2*Y^2+d,[X,Y,Z],r, normal(q(normal(op(O1+P*[X,Y,Z]))))); } } if (s1!=0) { if (c2 !=0 or c3 !=0) { c4:=sqrt(c2^2+c3^2); v1:=normal(P*[0,c3,-c2]/c4); w1:=normal(P*[0,c2,c3]/c4); O1:=normal(P*[-c1/s1,0,0]); d:=q(O1[0],O1[1],O1[2]); P:=P[0..2,0..0]; P:=border(P,v1); P:=border(P,w1); //en fait le nouveau c3 ci dessous ==c4 mais //ca ne marche pas avec c4 mystere (corrige?) //c:=normal(diff(C*P*[x,y,z],[x,y,z])); //c3:=c[2]; //O1:=O1+normal(P*[0,0,-d/(2*c3)]); O1:=O1+normal(P*[0,0,-d/(2*c4)]); d:=q(O1[0],O1[1],O1[2]); return (O1,P,s1*X^2+2*c3*Z+d,[X,Y,Z],r, normal(q(normal(op(O1+P*[X,Y,Z]))))); //return (O1,P,s1*X^2+2*c4*Z+d,[X,Y,Z],r, // normal(q(op(O1+P*[X,Y,Z])))); } if (c2==0 && c3==0) { //on rend P orthogonale k:=normal(v*v); w:=normal(-(w*v)*v+k*w); w:=normal(w/sqrt(normal(w*w))); v:=normal(v/sqrt(k)); P:=tran([u,v,w]); O1:=normal(P*[-c1/s1,0,0]); d:=q(O1[0],O1[1],O1[2]); return (O1,P,s1*X^2+d,[X,Y,Z],r, normal(q(op(O1+P*[X,Y,Z])))); } } }
On tape :
q0(x,y,z):=4*x^
2+y^
2+z^
2-4*x*y+4*x*z-2*y*z+8*x-4*y+4*z+2
Quadrique(q0)
On obtient :
[(-2)/3,1/3,(-1)/3],[[2/(sqrt(6)),(sqrt(5))/5,(sqrt(30))/15],
[-(1/(sqrt(6))),0,(sqrt(30))/6],[1/(sqrt(6)),(-2*sqrt(5))/5,
(sqrt(30))/30]],6*X^
2-2,[X,Y,Z],2,6*X^
2-2
On tape :
q1(x,y,z):=x^
2+3*y^
2-3*z^
2-8*y*z+2*z*x-4*x*y-1
Quadrique(q1)
On obtient :
[0,0,0],[[0,1/(sqrt(6)),5*(-(1/(sqrt(30))))],[1/(sqrt(5)),
2*(-(1/(sqrt(6)))),2*(-(1/(sqrt(30))))],[2/(sqrt(5)),
1/(sqrt(6)),1/(sqrt(30))]],-5*X^
2+6*Y^
2-1,[X,Y,Z],3,
6*Y^
2-5*X^
2-1
On tape :
q2(x,y,z):=5*x^
2+y^
2+z^
2-2*x*y+2*x*z-6*y*z+2*x+4*y-6*z+1
Quadrique(q2)
On obtient :
[(-1)/2,-1,1/2],[[0,2/(sqrt(6)),-(1/(sqrt(3)))],[1/(sqrt(2)),
-(1/(sqrt(6))),-(1/(sqrt(3)))],
[1/(sqrt(2)),1/(sqrt(6)),1/(sqrt(3))]],
-2*X^
2+6*Y^
2+3*Z^
2-3,[X,Y,Z],4
3*Z^
2+6*Y^
2-2*X^
2-3
On tape :
q3(x,y,z):=2*x^
2+2*y^
2+z^
2+2*x*z-2*y*z+4*x-2*y-z+3
Quadrique(q3)
On obtient :
[(-113)/144,41/144,17/72],
[[1/(sqrt(3)),-(1/(sqrt(2))),1/(sqrt(6))],
[-(1/(sqrt(3))),-(1/(sqrt(2))),
-(1/(sqrt(6)))],[1/(sqrt(3)),
0,2*(-(1/(sqrt(6))))]],
3*X^
2+2*Y^
2+(2*2*sqrt(6)*Z)/3,
[X,Y,Z],4,3*X^
2+(4*sqrt(6)*Z)/3+2*Y^
2
On tape :
q4(x,y,z):=4*x^
2+y^
2+z^
2-4*x*y+4*x*z-2*y*z+8*x-6*y+4*z+2
Quadrique(q4)
On obtient :
[(-227)/180,(-71)/72,(-227)/360],
[[2/(sqrt(6)),(-(sqrt(5)))/5,(-(sqrt(30)))/15],
[-(1/(sqrt(6))),0,(-(sqrt(30)))/6],
[1/(sqrt(6)),(2*sqrt(5))/5,(-(sqrt(30)))/30]],
6*X^
2+(2*sqrt(30)*Z)/6,[X,Y,Z],3,
(48*sqrt(30)*Z)/144+6*X^
2
On tape :
q5(x,y,z):=x^
2+2*y^
2-z^
2-4*x*y+4*x*z+4*y*z+6*x-4*y+2*z+1
Quadrique(q5)
On obtient :
[(-15)/13,5/13,(-7)/13],[[(-2)/3,(-sqrt(13)+1)/(sqrt(-8*sqrt(13)+52)),
(sqrt(13)+1)/(sqrt(8*sqrt(13)+52))],[(-1)/3,4/(sqrt(-8*sqrt(13)+52)),
4/(sqrt(8*sqrt(13)+52))],[(-2)/3,(sqrt(13)-3)/(sqrt(-8*sqrt(13)+52)),
(-sqrt(13)-3)/(sqrt(8*sqrt(13)+52))]],
2*X^
2+sqrt(13)*Y^
2+(-(sqrt(13)))*Z^
2+(-49)/13,[X,Y,Z],4,
((-2*sqrt(13))*Z^
2)/2+(2*sqrt(13)*Y^
2)/2+2*X^
2+(-49)/13
On tape :
q6(x,y,z):=(x+y)*(y-z)+3*x-5*y
Quadrique(q6)
On obtient :
[16/9,8/9,11/9],[[1/(sqrt(2)),1/(sqrt(6)),-(1/(sqrt(3)))],
[0,2/(sqrt(6)),1/(sqrt(3))],[1/(sqrt(2)),-(1/(sqrt(6))),
1/(sqrt(3))]],(X^
2)/-2+(3*Y^
2)/2+(2*(-4*sqrt(3))*Z)/3,
[X,Y,Z],4,-(X^
2)/2-(8*sqrt(3)*Z)/3-(-3*Y^
2)/2
On tape :
q7(x,y,z):=7*x^
2+4*y^
2+4*z^
2+4*x*y-4*x*z-2*y*z-4*x+5*y+4*z-18
Quadrique(q7)
On obtient :
[11/27,(-26)/27,(-29)/54],[[1/(sqrt(5)),54*(-(1/(sqrt(30)*27))),
2/(sqrt(6))],[0,5/(sqrt(30)),1/(sqrt(6))],[2/(sqrt(5)),1/(sqrt(30)),
-(1/(sqrt(6)))]],3*X^
2+3*Y^
2+9*Z^
2+(-602)/27,
[X,Y,Z],4,3*Y^
2+3*X^
2+9*Z^
2+(-602)/27
On tape :
q8(x,y,z):=-x^
2-3*z^
2-4*x*y+4*x*z+4*y*z+6*x-4*y+2*z+1
Quadrique(q8)
On obtient (c’est tres long!):
[(-11)/54,223/108,61/54],[[(-sqrt(13)+1)/(sqrt(-8*sqrt(13)+52)),
(sqrt(13)+1)/(sqrt(8*sqrt(13)+52)),(-2)/3],[4/(sqrt(-8*sqrt(13)+52)),
4/(sqrt(8*sqrt(13)+52)),(-1)/3],[(sqrt(13)-3)/(sqrt(-8*sqrt(13)+52)),
(-sqrt(13)-3)/(sqrt(8*sqrt(13)+52)),(-2)/3]],
(sqrt(13)-2)*X^
2+(-sqrt(13)-2)*Y^
2-4*Z,[X,Y,Z],4,
((-4+2*sqrt(13))*X^
2)/2+((-4-2*sqrt(13))*Y^
2)/2-4*Z
On tape :
q9(x,y,z):=x^
2-3*x*y+y^
2+x-y-z^
2/2+sqrt(10)/5*z
Quadrique(q9)
On obtient un cône car r=3 :
[-1/5,1/5,(sqrt(10))/5],[[1/(sqrt(2)),1/(sqrt(2)),0],[-(1/(sqrt(2))),
1/(sqrt(2)),0],[0,0,1]],(5*X^
2)/2+(Y^
2)/(-2)+(Z^
2)/(-2),[X,Y,Z],3,
5/2*X^
2+(-1)/2*Y^
2+(-1)/2*Z^
2
On tape :
q10(x,y,z):=x^
2-3*x*y+y^
2-x-y-z^
2/2+sqrt(10)/5*z
Quadrique(q10)
On obtient :
[-1,-1,(sqrt(10))/5],[[1/(sqrt(2)),1/(sqrt(2)),0],
[-(1/(sqrt(2))),1/(sqrt(2)),0],[0,0,1]],
(5*X^
2)/2+(Y^
2)/(-2)+(Z^
2)/(-2)+6/5,[X,Y,Z],4,
5/2*X^
2+(-1)/2*Y^
2+(-1)/2*Z^
2+6/5