如何使用Gram Schmidt计算完整的QR分解?

时间:2012-10-03 16:50:32

标签: python numpy linear-algebra

我目前正在使用改进的Gram-Schmidt算法来计算矩阵A(m x n)的QR分解。我目前的问题是我需要完全分解Q(m×m)而不是薄Q(m×n)。有人可以帮助我,我需要添加什么算法来计算完整的QR分解?

import numpy as np

def gs_m(A):

    m,n= A.shape
    A= A.copy()
    Q= np.zeros((m,n))
    R= np.zeros((n,n))

    for k in range(n):

        R[k,k]= np.linalg.norm(A[:,k:k+1].reshape(-1),2)
        Q[:,k:k+1]= A[:,k:k+1]/R[k,k]
        R[k:k+1,k+1:n+1]= np.dot( Q[:,k:k+1].T, A[:,k+1:n+1] )
        A[:,k+1:n+1]= A[:, k+1:n+1] - np.dot( Q[:,k:k+1], R[k:k+1,k+1:n+1])


     return Q, R

1 个答案:

答案 0 :(得分:2)

也许你应该使用scipy.linalg.qr,它有完整版和瘦版(模式参数)