8

请我试图理解矩阵计算。我的问题可能看起来很简单,但需要一个答案,可以简单地向我解释什么是 RHS 向量。我经常看到它在 Apache commons 数学库中使用,例如我从 stackoverflow 页面得到这个:

public class LinearAlgebraDemo
{
    public static void main(String[] args)
    {
        double [][] values = {{1, 1, 2}, {2, 4, -3}, {3, 6, -5}};
        double [] rhs = { 9, 1, 0 }; /* RHS Vector */

        RealMatrix a = new Array2DRowRealMatrix(values);

        DecompositionSolver solver = new LUDecompositionImpl(a).getSolver();

        RealVector b = new ArrayRealVector(rhs);
        RealVector x = solver.solve(b);

        RealVector residual = a.operate(x).subtract(b);
        double rnorm = residual.getLInfNorm();

    }
}

有人可以向我解释这段代码,尤其是 RHS 向量及其用途。非常感谢你。

4

2 回答 2

14

您的矩阵方程如下所示:

Ax = b

其中A是具有 m 行和 n 列的矩阵,xm未知数的列向量,并且是已知值b的另一个列向量(也称为右侧) 。m它位于等号的右侧——因此得名。

如果我给你一个包含两个数字和一个未知值 x 的简单方程,你就会确切地知道如何求解它:

Ax = b -> x = b/A

将其视为通过将等式两边乘以 A 的倒数来求解 x。

在这种情况下,它更复杂,因为除以矩阵意味着反转它。

您不会反转矩阵;您将创建一个称为矩阵 A 的 LU 分解的东西。如果您有兴趣,您应该了解它是什么以及为什么它比计算完全逆更好。

于 2012-09-11T23:27:25.340 回答
2

RHS 是“右手边”的常见数学缩写。在这里,您似乎正在求解一个线性方程组Ax = b,其中A是 nxn 矩阵,x并且b是 n 维列向量。如果你不理解这个术语,那么我建议你学习线性代数。

至于代码,rhs是一个数组,用于初始化向量的元素b。类似地,二维数组values用于初始化矩阵的元素A(实际上是一个名为 的引用变量a)。

于 2012-09-11T23:33:46.390 回答