C VECTP SOURCE CHAT 05/01/13 04:05:19 5004 subroutine vectp(aa,vp,x,n) * recherche vecteur propre associe a une valeur propre (matrice 3x3) * n : multiplicite de la valeur propre IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) dimension aa(3,3),x(9) a=aa(1,1)-vp b=aa(1,2) c=aa(1,3) d=aa(2,2)-vp e=aa(2,3) f=aa(3,3)-vp if (n.eq.1) then det3=a*d-b*b det2=a*f-c*c det1=d*f-e*e if (abs(det3).ge.abs(det1).and.abs(det3).ge.abs(det2)) then x(1)=(b*e-c*d)/det3 x(2)=(b*c-a*e)/det3 x(3)=+1 elseif (abs(det1).ge.abs(det2).and.abs(det1).ge.abs(det3)) then x(1)=+1 x(2)=(c*e-b*f)/det1 x(3)=(b*e-c*d)/det1 elseif (abs(det2).ge.abs(det1).and.abs(det2).ge.abs(det3)) then x(1)=(c*e-b*f)/det2 x(2)=+1 x(3)=(b*c-a*e)/det2 endif xn=sqrt(x(1)**2+x(2)**2+x(3)**2) x(1)=x(1)/xn x(2)=x(2)/xn x(3)=x(3)/xn elseif (n.eq.2) then if (abs(a).ge.abs(d).and.abs(a).ge.abs(f)) then x(1)=-b/a x(2)=1 x(3)=0 x(4)=-c/a x(5)=0 x(6)=1 elseif (abs(d).ge.abs(a).and.abs(d).ge.abs(f)) then x(1)=1 x(2)=-b/d x(3)=0 x(4)=0 x(5)=-e/d x(6)=1 elseif (abs(f).ge.abs(a).and.abs(f).ge.abs(d)) then x(1)=1 x(2)=0 x(3)=-c/f x(4)=0 x(5)=1 x(6)=-e/f endif xn=sqrt(x(1)**2+x(2)**2+x(3)**2) x(1)=x(1)/xn x(2)=x(2)/xn x(3)=x(3)/xn xsc=x(1)*x(4)+x(2)*x(5)+x(3)*x(6) x(4)=x(4)-xsc*x(1) x(5)=x(5)-xsc*x(2) x(6)=x(6)-xsc*x(3) xn=sqrt(x(4)**2+x(5)**2+x(6)**2) x(4)=x(4)/xn x(5)=x(5)/xn x(6)=x(6)/xn elseif (n.eq.3) then x(1)=1 x(2)=0 x(3)=0 x(4)=0 x(5)=1 x(6)=0 x(7)=0 x(8)=0 x(9)=1 endif end