Cholesky在python中的实现-Solve Ax=b
我对Cholesky在python中的实现-Solve Ax=b,python,numpy,linear-algebra,Python,Numpy,Linear Algebra,我对Ax=b使用Cholesky分解来查找x,方法是先做L*LT=A,然后做y=L*b,最后做x=LT*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 rig
Ax=b
使用Cholesky分解来查找x
,方法是先做L*LT=A
,然后做y=L*b
,最后做x=LT*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)
看一看。特别是,“通过正向代换求解y=b,最后求解L∗ “你的代码只是在乘法,而不是求解。你是对的,我更改了它,但仍然得到错误的结果,我将用更新来编辑我的代码。可能问题在于前后替换,第一个用于Ly=b,第二个用于Lx=y。