Fortran Coder

查看: 2697|回复: 2

[数学库] 使用lapack进行qr分解遇到的问题

[复制链接]

10

帖子

4

主题

0

精华

入门

F 币
31 元
贡献
22 点
发表于 2022-10-19 09:11:21 | 显示全部楼层 |阅读模式
有没有人用过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如何获取

164

帖子

2

主题

1

精华

大师

Vim

F 币
981 元
贡献
478 点

规矩勋章

发表于 2022-10-19 10:58:12 | 显示全部楼层
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

评分

参与人数 2F 币 +5 收起 理由
fcode + 2 很给力!
kyra + 3 赞一个!

查看全部评分

10

帖子

4

主题

0

精华

入门

F 币
31 元
贡献
22 点
 楼主| 发表于 2022-10-19 16:14:02 | 显示全部楼层
Transpose 发表于 2022-10-19 10:58
R需要自己提取
[mw_shl_code=fortran,true]   complex(8),allocatable::r(:,:)
   allocate(r(nn,nn))

多谢大佬!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-7-23 20:10

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表