如果我有一个向量空间,由五个向量构成。..v5,以找到A的正交基,其中A=[v1,v2...v5]并且A是5Xn我应该使用np.linalg.qr(A)还是scipy.linalg.orth(A)??先谢谢你了
np.linalg.qr(A)
scipy.linalg.orth(A)
ngynwnxp1#
请注意,sp.linalg.orth使用SVD,而np.linalg.qr使用QR分解。这两种分解都是通过LAPACK函数的 Package 器获得的。我不认为有一个强烈的偏好比其他。SVD将稍微更稳定,但计算起来也会慢一点。在实践中,我不认为你真的会看到太大的区别。
sp.linalg.orth
np.linalg.qr
roqulrg32#
您需要用途:
普遍接受的规则是使用scipy。linalg -因为它涵盖了比np更多的功能。linalg.希望有帮助!
ovfsdjhp3#
numpy的QR算法的缺点是不能处理亏秩矩阵。例如:
import numpy as np import scipy A = np.array([[3,5,6,6], [7,2,4,4], [9,1,8,8], [7,1,6,6]]) b = np.array([1,2,3,4]).reshape(-1, 1) #use lstsq for verification beta, *_ = np.linalg.lstsq(A, b, rcond=None) bproj = A @ beta array([[1.01782846], [2.14262769], [3.7844523 ], [2.84115002]]) #Try numpy's qr Q, R = np.linalg.qr(A) bproj = Q @ Q.T @ b array([[1.], [2.], [3.], [4.]]) #Q here is a 4x4 orthonormal matrix. However, Col(A) is 3 dimensional. #With scipy's ortho Q = scipy.linalg.orth(A) bproj = Q @ Q.T @ b array([[1.01782846], [2.14262769], [3.7844523 ], [2.84115002]])
3条答案
按热度按时间ngynwnxp1#
请注意,
sp.linalg.orth
使用SVD,而np.linalg.qr
使用QR分解。这两种分解都是通过LAPACK函数的 Package 器获得的。我不认为有一个强烈的偏好比其他。SVD将稍微更稳定,但计算起来也会慢一点。在实践中,我不认为你真的会看到太大的区别。
roqulrg32#
您需要用途:
普遍接受的规则是使用scipy。linalg -因为它涵盖了比np更多的功能。linalg.希望有帮助!
ovfsdjhp3#
numpy的QR算法的缺点是不能处理亏秩矩阵。例如: