Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 求解病态线性系统的迭代方法_Matrix_Linear Algebra_Numerical Methods - Fatal编程技术网

Matrix 求解病态线性系统的迭代方法

Matrix 求解病态线性系统的迭代方法,matrix,linear-algebra,numerical-methods,Matrix,Linear Algebra,Numerical Methods,我目前正在解决一个问题,在这个过程中,最终不得不解决一个具有对称矩阵的线性系统。这个系统的矩阵并不总是正定的,而且这个矩阵最多可以是半正定的 在矩阵是正定的情况下,我在矩阵中使用Cholesky分解来求解系统。在另一种情况下,我使用的是一种算法,但我不知道这是否是最好的解决方法。我试图在这类问题中避免正则化(Tikhonov/ridge),因为它通过搜索正则化参数的最合适值来减慢我的算法 有谁知道或能给我一些关于矩阵是半正定的线性系统的建议/算法吗?虽然不是迭代法,但一种方法是使用。不过,您可能

我目前正在解决一个问题,在这个过程中,最终不得不解决一个具有对称矩阵的线性系统。这个系统的矩阵并不总是正定的,而且这个矩阵最多可以是半正定的

在矩阵是正定的情况下,我在矩阵中使用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,这可能很慢