| 查看: 1183 | 回复: 0 | ||
[求助]
关于Jacobi法矩阵对角化
|
|
想用fortran语言通过Jacobi方法对角化一个对称矩阵,但是求出来的结果和matlab内置的对角化程序员结果不一样。请问我的对角化程序是哪里出问题了。 subroutine SOLVE(A,N,tezheng,tol) !jacobi法对角化 implicit real*8(a-z) integer::N real*8::A(N,N),tezheng(N) real*8::A1(N,N),R(N,N),RT(N,N),U(N,N),thi(N,N) integer::i,j,k,m,c,b,z,t integer::p,q,x,y real*8 sum do i=1,N do j=1,N A1(i,j)=A(i,j) end do end do k=0 p=0 m=1 do while(m==1) m=0 do i=1,N-1 do j=i+1,N R=0 do q=1,N R(q,q)=1 end do if(abs(A1(i,j))>tol) then m=1 ! 判断非对角矩阵元是否大于给出的阈值,如果是则建立旋转矩阵R来归零矩阵元 if(A1(i,i)==A1(j,j))then R(i,i)=1/1.41421356 R(j,j)=1/1.41421356 R(i,j)=1/1.41421356 R(j,i)=-1/1.41421356 else thi(i,j)=0.5*atan(2*A1(i,j)/(A1(i,i)-A1(j,j))) R(i,i)=cos(thi(i,j)) R(j,j)=cos(thi(i,j)) R(i,j)=-sin(thi(i,j)) R(j,i)=sin(thi(i,j)) end if do x=1,N do y=1,N RT(x,y)=R(y,x) end do end do U=matmul(RT,A1) A1=matmul(U,R) end if end do end do print *,A1(9,9) p=p+1 print *,p if (p==100) exit end do do i=1,N tezheng(i)=A1(i,i) end do end subroutine SOLVE |
» 猜你喜欢
2026年循环经济功能材料国际会议(ICFMCE 2026)
已经有0人回复
2026年第五届电气、电子与信息工程国际会议(ISEEIE 2026)
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有96人回复
哈尔滨理工大学物理系招收物理学考研调剂
已经有5人回复
0702一志愿吉大B区求调剂
已经有5人回复
求调剂
已经有0人回复
0702一志愿吉大B区求调剂有论文
已经有0人回复
请问还有没有用Latex写文章的小伙伴们?
已经有0人回复
光学工程学硕调剂信息
已经有25人回复
欢迎加入课题组
已经有0人回复
散金币,求好运,祝面上顺利!
已经有29人回复













回复此楼