请我试着理解矩阵计算。 我的问题可能看似简单,但请你回答 我可以简单地向我解释什么是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向量及其目的。 非常感谢你。
答案 0 :(得分:6)
你的矩阵方程式如下:
Ax = b
其中A
是一个包含m行和n列的矩阵,x
是m
未知数的列向量,b
是另一个列向量(又名为右) -Hand Side)m
已知值。它位于等号的右侧 - 因此得名。
如果我给你一个带有两个数字和一个未知值x的简单等式,你就会知道如何解决它:
Ax = b -> x = b/A
将此视为通过将等式的两边乘以A的倒数来求解x。
在这种情况下,它更复杂,因为用矩阵除法意味着反转它。
你不会反转矩阵;你要创建一个叫做矩阵A的LU分解的东西。你应该读一下这是什么以及为什么它比计算一个完整的逆更好,如果你感兴趣的话。
答案 1 :(得分:1)
RHS是“右手边”的常见数学缩写。在这里,您似乎正在求解线性方程组Ax = b
,其中A
是n x n矩阵,x
和b
是n维列向量。如果你不理解这个术语,那么我建议你研究线性代数。
至于代码,rhs
是一个数组,用于初始化向量b
的元素。类似地,2D数组values
用于初始化矩阵A
的元素(实际上是名为a
的参考变量)。