8

行列の計算を理解しようとしています。私の質問は単純に見えるかもしれませんが、RHSベクトルとは何かを簡単に説明できる答えが必要です。私はそれがApachecommons数学ライブラリで使用されているのをよく見ます。たとえば、これは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列の行列、は未知数xの列ベクトル、は既知の値の別の列ベクトル(別名右側)です。等号の右側にあるため、この名前が付けられています。mbm

2つの数値と未知の値xを持つ単純な方程式を与えた場合、それを解く方法を正確に知っているでしょう。

Ax = b -> x = b/A

これは、方程式の両辺にAの逆数を掛けてxを解くことと考えてください。

この場合、行列で除算すると逆行列になるため、より複雑になります。

マトリックスを反転するつもりはありません。行列AのLU分解と呼ばれるものを作成します。興味がある場合は、それが何であるか、および完全な逆行列を計算するよりも優れている理由について読む必要があります。

于 2012-09-11T23:27:25.340 に答える
2

RHS は、「右手側」の一般的な数学的な略語です。ここで、は nxn 行列、およびは n 次元の列ベクトルAx = bである線形方程式系を解いているように見えます。この用語を理解していない場合は、線形代数を勉強することをお勧めします。Axb

コードに関してrhsは、 vector の要素を初期化するために使用される配列bです。同様に、2D 配列valuesは行列の要素A(実際には という参照変数a) を初期化するために使用されます。

于 2012-09-11T23:33:46.390 に答える