我使用 Cholesky 分解进行 Ax=b
来查找 x
,先执行 L*LT=A
然后执行 y =L*b
并最终 x=LT*b
。当我检查时,我似乎没有得到与经典 Ax=b< 相同的结果
.
这是我的代码:
import numpy as np
import scipy.linalg as sla
myL=np.linalg.cholesky(A)
#check_x = np.dot(A, b)
#check_x = np.dot(A,b)
check_x = sla.solve(A, b)
#check if the composition was done right
myLT=myL.T.conj() #transpose matrix
Ac=np.dot(myL,myLT) #should give the original matrix A
#y=np.dot(myL,b)
y = sla.solve_triangular(myL, b)
#x=np.dot(myL.T.conj(),y)
x = sla.solve_triangular(myLT, b)
最佳答案
我失眠又累,我把最后一行写错了,实际上是
x=np.linalg.solve(myLT, y)
关于python - Python 中的 Cholesky 实现 - 求解 Ax=b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349527/