Fortran Coder

标题: 使用lapack进行qr分解遇到的问题 [打印本页]

作者: 走不心    时间: 2022-10-19 09:11
标题: 使用lapack进行qr分解遇到的问题
有没有人用过lapack里面的qr分解函数呀,我用的是zgeqrf函数,但是不知道如何获取Q矩阵和R矩阵,有没有大佬用过这个的求指导这是我的代码
[Fortran] 纯文本查看 复制代码
!***********************************************************************************
complex(8),allocatable :: A (:,:),tau(:) ,work(:)
integer mm,nn,lwork, lda, info ,i,j
mm=4
nn=3
lda=4
lwork=4
allocate(A(lda,nn), tau(min(mm,nn)),work(lwork))
do i=1,mm
do j=1,nn
A(i,j)=i+j
end do
end do
call zgeqrf(mm,nn,A,lda,tau,work,lwork,info)!*****上述代码运行完只能从A矩阵中找到R矩阵的结果,但是不知道Q如何获取


作者: Transpose    时间: 2022-10-19 10:58
R需要自己提取
[Fortran] 纯文本查看 复制代码
   complex(8),allocatable::r(:,:)
   allocate(r(nn,nn))
   r=0.d0
   do i=1,nn
      r(i,i:nn)=A(i,i:nn)
   end do


Q需要调用另一个子程序
[Fortran] 纯文本查看 复制代码
   call zungqr(mm,nn,nn,a,lda,tau,work,lwork,info)


这样就可以得到 A = Q * R
作者: 走不心    时间: 2022-10-19 16:14
Transpose 发表于 2022-10-19 10:58
R需要自己提取
[mw_shl_code=fortran,true]   complex(8),allocatable::r(:,:)
   allocate(r(nn,nn))

多谢大佬!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2