Voici les différents cas :
alors
2*(c2*y1 + c3*z1) = 2*Z*
en faisant un changement d'origine O1 avec :
OO1 = - c1/s1*u
Dans le repère (
O1, u, v1, w1)
l'équation s'écrit :
s1*X12 + 2*c4*Z1 + d2 = 0
avec
c4 = ! = 0
en faisant un changement d'origine O2 avec :
OO2 = - d2/(2*c4)*w1
l'équation s'écrit :
s1*X2 + 2/c4*Z = 0
Q est un cylindre parabolique dont les génératrices sont parallèles
à u1.
Si c2 = 0 et c3 = 0 l'équation s'écrit :
s1*(x1 + c1/s1)2 + d2 = 0
on a alors deux plans parallèles imaginaires conjugués (s1*d2 > 0)
deux plans parallèles réels (s1*d2 < 0) ou deux plans confondus (d2 = 0).
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 val propres et les vecteurs propres orthonormes.
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,u1,v1,w1,s1,s2,s3,k,a,b; (P,J):=jordan(A); u:=P[0..2,0]; v:=P[0..2,1]; w:=P[0..2,2]; u1:=u; v1:=v; w1:=w; 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)mystere!) //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 //q est une fct de 3 variables de degre 2 //quadrique renvoie la nouvelle origine la matrice de passage et //la forme reduite avec le vecteur de variables ainsi que //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):=numer(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:=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],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], 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], normal(q(normal(op(O1+P*[X,Y,Z]))))); } } if (s1!=0) { if (c2 || 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 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], normal(q(normal(op(O1+P*[X,Y,Z]))))); //return (O1,P,s1*X^2+2*c4*Z+d,[X,Y,Z],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], 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],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],
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],
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],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],
(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],
((-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],-(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],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+2*sqrt(13))*X^
2)/2+((-4-2*sqrt(13))*Y^
2)/2-4*Z