如何求解行列式几乎为零的方程组?

计算科学 线性代数 可能性
2021-12-09 04:10:43

我有一个要解决的方程组。在矩阵形式中,它写为

x(IS)=b.

我正在解决x, 在哪里I是单位矩阵和S是一个矩阵,其中每总和为 1。b是严格积极的。

现在,不幸的是,决定因素IS非常小。反转它会导致一个到处都是巨大的矩阵,甚至numpy.linalg.solve提出了一个解决方案x这是巨大的(e+19 周围的每个元素)。解决此问题的替代方法是什么?矩阵本身并不大,大约有30-50个元素x.

2个回答

你无法解决没有解决方案的问题

该矩阵是奇异的,因此系统具有零解或无限解。对于您的系统,我认为可以使用一些 Perron-Frobenius 理论来证明零:存在一个非负向量,使得Sv=v, 因此0=x(IS)v=bv>0, 矛盾。(那些xb是行向量,对吗?)

基本线性代数指出det(IS)必须非零,以便存在线性系统的解决方案。另一方面,如果行列式(数值上)为零,则系数矩阵中的基向量不会跨越整个向量空间,因此您无法构造一般的右侧想想这张图:(IS)b

在此处输入图像描述

在示例中,rhs是具有分量的 3D 向量,但系数矩阵中的向量仅跨越平面。所以,你能做的最好的就是在平面上重现向量,而忘记方向。也就是说,您基本上解决了向量平面通过这种方式,您只能确定解向量中的三个参数第三个参数无法确定,通常设置为零(使尽可能小)。bzxyxyzb||bxyx1x2x3||x||

为此,有几种可用的正则化方法。两个基本的是 SVD 和岭回归:

  • 奇异值分解提供了一种简单的方法来形成伪逆。它用于将矩阵分解为,其中是奇异值的对角矩阵。现在伪逆是通过反转中的所有条目形成的,并将那些大于设置为零(其中是一个小的截止参数)。(IS)=UDVTDDDi1/ϵϵ

  • 在岭回归中,也就是 L2 或 Tikhonov 正则化,您将一个小项添加到矩矩阵的对角线,然后它变得规则,以便可以求解线性系统。α(IS)T(IS)

在极限中的向量所跨越的子空间中的解α,ϵ0(IS)

顺便澄清一下:这不是解决方案,而是解决方案的近似值。所以@FredericiPoloni 的答案仍然成立。这只是一种解决方法。