1

現在、修正されたグラム シュミット アルゴリズムを使用して、行列 A (mxn) の QR 分解を計算しています。私の現在の問題は、薄い Q (mxn) ではなく、完全な分解 Q (mxm) が必要なことです。完全な 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
4

1 に答える 1

2

たぶんあなたはフルバージョンとシンバージョン(モードパラメータ)を持っているscipy.linalg.qrを使うべきです

于 2012-10-03T17:03:25.713 に答える