我有一个要解决的方程组。在矩阵形式中,它写为
我正在解决, 在哪里是单位矩阵和是一个矩阵,其中每列总和为 1。是严格积极的。
现在,不幸的是,决定因素非常小。反转它会导致一个到处都是巨大的矩阵,甚至numpy.linalg.solve
提出了一个解决方案这是巨大的(e+19 周围的每个元素)。解决此问题的替代方法是什么?矩阵本身并不大,大约有30-50个元素.
我有一个要解决的方程组。在矩阵形式中,它写为
我正在解决, 在哪里是单位矩阵和是一个矩阵,其中每列总和为 1。是严格积极的。
现在,不幸的是,决定因素非常小。反转它会导致一个到处都是巨大的矩阵,甚至numpy.linalg.solve
提出了一个解决方案这是巨大的(e+19 周围的每个元素)。解决此问题的替代方法是什么?矩阵本身并不大,大约有30-50个元素.
该矩阵是奇异的,因此系统具有零解或无限解。对于您的系统,我认为可以使用一些 Perron-Frobenius 理论来证明零:存在一个非负向量,使得, 因此, 矛盾。(那些和是行向量,对吗?)
基本线性代数指出必须非零,以便存在线性系统的解决方案。另一方面,如果行列式(数值上)为零,则系数矩阵中的基向量不会跨越整个向量空间,因此您无法构造一般的右侧。想想这张图:
在示例中,rhs是具有分量的 3D 向量,但系数矩阵中的向量仅跨越平面。所以,你能做的最好的就是在平面上重现向量,而忘记方向。也就是说,您基本上解决了向量在平面通过这种方式,您只能确定解向量中的三个参数和第三个参数无法确定,通常设置为零(使尽可能小)。
为此,有几种可用的正则化方法。两个基本的是 SVD 和岭回归:
奇异值分解提供了一种简单的方法来形成伪逆。它用于将矩阵分解为,其中是奇异值的对角矩阵。现在伪逆是通过反转中的所有条目形成的,并将那些大于设置为零(其中是一个小的截止参数)。
在岭回归中,也就是 L2 或 Tikhonov 正则化,您将一个小项添加到矩矩阵的对角线,然后它变得规则,以便可以求解线性系统。
在极限中的向量所跨越的子空间中的解。
顺便澄清一下:这不是解决方案,而是解决方案的近似值。所以@FredericiPoloni 的答案仍然成立。这只是一种解决方法。