传统智慧指出,如果您使用相同的A和不同的b多次求解Ax = b,则应该对LU使用LU分解。如果我使用p, l, u = scipy.linalg.lu(A)并在一个循环中多次求解 x = scipy.linalg.solve(l, p.T@b)
x = scipy.linalg.solve(u, x) 这最终比仅仅使用 x = scipy
对于线性矩阵方程的求解,可以使用numpy.linalg.solve来实现LAPACK例程。The LU decomposition with partial pivoting and row interchanges is A = P * L但是,我们也可以使用scipy.linalg.lu_factor()和scipy.linalg.lu
我正试图得到矩阵的LU组成。由于建议scipy.linalg.lu可能不太精确,所以我决定确保最大绝对误差远小于我正在处理的矩阵的最小元素。下面是一个代码片段,在这里我尝试对A的转置进行LU分解:
print min([min(r[np.nonzero(r)], key=abs) for r in A], key=abs$$ PA^T=<e