Matrix 求解病态线性系统的迭代方法
我目前正在解决一个问题,在这个过程中,最终不得不解决一个具有对称矩阵的线性系统。这个系统的矩阵并不总是正定的,而且这个矩阵最多可以是半正定的 在矩阵是正定的情况下,我在矩阵中使用Cholesky分解来求解系统。在另一种情况下,我使用的是一种算法,但我不知道这是否是最好的解决方法。我试图在这类问题中避免正则化(Tikhonov/ridge),因为它通过搜索正则化参数的最合适值来减慢我的算法Matrix 求解病态线性系统的迭代方法,matrix,linear-algebra,numerical-methods,Matrix,Linear Algebra,Numerical Methods,我目前正在解决一个问题,在这个过程中,最终不得不解决一个具有对称矩阵的线性系统。这个系统的矩阵并不总是正定的,而且这个矩阵最多可以是半正定的 在矩阵是正定的情况下,我在矩阵中使用Cholesky分解来求解系统。在另一种情况下,我使用的是一种算法,但我不知道这是否是最好的解决方法。我试图在这类问题中避免正则化(Tikhonov/ridge),因为它通过搜索正则化参数的最合适值来减慢我的算法 有谁知道或能给我一些关于矩阵是半正定的线性系统的建议/算法吗?虽然不是迭代法,但一种方法是使用。不过,您可能
有谁知道或能给我一些关于矩阵是半正定的线性系统的建议/算法吗?虽然不是迭代法,但一种方法是使用。不过,您可能会发现这很慢,尤其是当矩阵很大时 在最小二乘法中,如果A^是广义逆,那么
A^*b is the (unique) minimiser of || A*x-b|| where x itself is of minimum norm
许多库将有一个函数,通过使用此逆解最小二乘;一个线索是他们是否说他们使用SVD
如果您必须自己编写其中的一些内容,则步骤如下,因此请求解Ax=b:
Diagonalize A as A = U*D*U'
compute c = U'*b
compute the generalised inverse E of the diagonal matrix D by replacing elements that are too small by 0 and the others by their inverse
compute c = U*(E*c)
然而,这确实需要对角化A,这可能很慢