使用lapack进行qr分解遇到的问题

有没有人用过lapack里面的qr分解函数呀,我用的是zgeqrf函数,但是不知道如何获取Q矩阵和R矩阵,有没有人用过这个的求指导
这是我的代码,

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和tau中了,但是并不知道如何通过A和tau得到Q和R

学习QR分解的计算分解有两种不同的思路:
1、第一种是使用正交矩阵Q左乘A,选择特殊的矩阵Q可以将A种的某些元素消零;
2、第二种是逐渐从A矩阵的列中构造出正交矩阵,并且计算出对应的R。首先介绍第一种方法,暂且称之为消零法吧。
【 第一种消零法基于householder reflector。定义P=(I - 2vtranspose(v) ./ (transpose(v)v)),如果Px = epison*I(:,1),那么v称为householder vector。可以发现找到向量x对应的householder vector可以将除第一个元素以为的n-1个元法全部消零,而且P本身是正交矩阵。为了存储方便将v(1)z标准化为1存储,计算code如下:】
【第二种消零法基于givens rotation。givens rotation是特定的对矩阵中特定的某个元素消零。相比于householder reflector用于在矩阵中引入大量的零元素。计算的基本原理可以从一个2X2的矩阵P,左乘2x1的向量x,并消去第二个元素知道】
参考链接:https://www.cnblogs.com/lacozhang/p/3746592.html

不知道对您有帮助否:

matlab lu解线性方程,LU分解和求解线性方程组_古斯塔夫歼星炮的博客-CSDN博客 # coding:utf8import numpy as npdef lu(mat):r,c=np.shape(mat)s=min(r,c)for k in range(s):x=1.0/mat[k][k] # 将后续除法变成乘法for i in range(k+1,r):mat[i][k]=mat[i][k]*x # L[1:][0]*U[0][0]=A[1:][0];A[0][:]=mat... https://blog.csdn.net/weixin_42604188/article/details/115978128?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166643169616782427445059%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166643169616782427445059&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-115978128-null-null.142^v59^js_top,201^v3^control_1&utm_term=%E4%BD%BF%E7%94%A8lapack%E8%BF%9B%E8%A1%8Cqr%E5%88%86%E8%A7%A3%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98&spm=1018.2226.3001.4449