program eigen1 common/jac01/n,a(40,40),s(40,40) print*,'GIVE ME THE DIMENSION OF THE MATRIX(ONE NUMBER)' read(5,*)n print*,'GIVE ME THE MATRIX NOW' do 9 i=1,n 9 read(5,*) (a(i,j),j=1,n) write(6,7) 7 format(1h1,' input matrix') do 10 i=1,n 10 write(6,8) (a(i,j),j=1,n) 1 format(i2) 2 format(10f7.3) call jacb write(6,4) do 3 i=1,n write(6,5)a(i,i) 3 write(6,6)(s(j,i),j=1,n) 4 format(1h1,' solutions for this eigenvalue problem',//) 5 format(1h ,' eigenvalue =',f9.3,//,' eigenvector is') 6 format(1h ,30x,f9.3) 8 format(1h ,20f6.2) stop end subroutine jacb common/jac01/n,a(40,40),s(40,40) indic=0 151 vi=0.0 do 106 i=1,n do 106 j=1,n if(i-j)107,206,107 107 vi=vi+a(i,j)**2 s(i,j)=0 go to 106 206 s(i,j)=1.0 106 continue vi=sqrt(vi) vf=vi*0.1e-07 an=n 128 vi=vi/an 137 iq=1 124 iq=iq+1 ip=0 121 ip=ip+1 if(a(ip,iq))108,120,109 108 if(-a(ip,iq)-vi)120,112,112 109 if(a(ip,iq)-vi)120,112,112 112 indic=1 alam=-a(ip,iq) amu=0.5*(a(ip,ip)-a(iq,iq)) if(amu)113,114,114 113 sgn=-1.0 go to 115 114 sgn=+1.0 115 omega=sgn*alam/sqrt(alam**2+amu**2) stht=omega/sqrt(2.0+2.0*sqrt(1.0-omega**2)) ctht=sqrt(1.0-stht**2) do 116 i=1,n if(i-ip)117,118,117 117 if(i-iq)119,118,119 119 aipi=a(ip,i)*ctht-a(iq,i)*stht aiqi=a(ip,i)*stht+a(iq,i)*ctht a(ip,i)=aipi a(iq,i)=aiqi 118 aipi=s(i,ip)*ctht-s(i,iq)*stht aiqi=s(i,ip)*stht+s(i,iq)*ctht s(i,ip)=aipi 116 s(i,iq)=aiqi aipi=a(ip,ip)*ctht**2+a(iq,iq)*stht**2-2.*a(ip,iq)*stht*ctht aiqi=a(ip,ip)*stht**2+a(iq,iq)*ctht**2 1 +2.0*a(ip,iq)*stht*ctht aipiq=(a(ip,ip)-a(iq,iq))*ctht*stht 1 +a(ip,iq)*(ctht**2-stht**2) a(ip,ip)=aipi a(iq,iq)=aiqi a(ip,iq)=aipiq a(iq,ip)=a(ip,iq) do 123 i=1,n a(i,ip)=a(ip,i) 123 a(i,iq)=a(iq,i) 120 if(ip-iq+1)121,122,122 122 if(iq-n)124,125,125 125 if(indic)126,127,126 126 indic=0 go to 137 127 if(vi-vf)129,129,128 129 return end