python 中的 Cholesky 实现 - 求解 Ax=b
Cholesky implementation in python - Solve Ax=b
我对 Ax=b
使用 Cholesky 分解来找到 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)
我对 Ax=b
使用 Cholesky 分解来找到 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)