接口 RealLinearOperator
- 所有已知实现类:
-
AbstractRealMatrix
,Array2DRowRealMatrix
,BlockRealMatrix
,DiagonalMatrix
,HilbertMatrix
,InverseHilbertMatrix
,JacobiPreconditioner
,OpenMapRealMatrix
public interface RealLinearOperator
该类定义了在实数(
double
)向量空间上操作的线性算子。不提供直接访问基础矩阵系数的方法。
这种接口的动机由Barrett等人(1994年)很好地阐述:
我们限制自己使用迭代方法,通过反复改进近似解直到足够准确来解决问题。这些方法仅通过矩阵-向量乘积y = A · x(可能还有z = AT · x)访问线性系统的系数矩阵A。因此,用户只需提供一个计算y(可能还有z)的子例程,即可充分利用A的稀疏性或其他特殊结构。
- Barrett等人(1994年)
- R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. M. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine和H. Van der Vorst,线性系统解的模板:迭代方法的构建模块,SIAM
-
方法概要
修饰符和类型方法说明int
返回此算子的定义域的维度。int
返回此算子的值域的维度。default boolean
如果此算子支持operateTranspose(RealVector)
,则返回true
。返回将this
乘以向量x
的结果。default RealVector
返回将this
算子的转置乘以向量x
的结果(可选操作)。
-
方法详细资料
-
getRowDimension
int getRowDimension()返回此算子的值域的维度。- 返回:
- 底层矩阵的行数
-
getColumnDimension
int getColumnDimension()返回此算子的定义域的维度。- 返回:
- 底层矩阵的列数
-
operate
返回将this
乘以向量x
的结果。- 参数:
-
x
- 要操作的向量 - 返回:
-
this
实例与x
的乘积 - 抛出:
-
MathIllegalArgumentException
- 如果列维度与x
的大小不匹配
-
operateTranspose
default RealVector operateTranspose(RealVector x) throws MathIllegalArgumentException, UnsupportedOperationException 返回将this
算子的转置乘以向量x
的结果(可选操作)。默认实现会抛出
UnsupportedOperationException
。覆盖此方法的用户必须同时覆盖isTransposable()
。- 参数:
-
x
- 要操作的向量 - 返回:
-
this
实例的转置与x
的乘积 - 抛出:
-
MathIllegalArgumentException
- 如果行维度与x
的大小不匹配 -
UnsupportedOperationException
- 如果this
算子不支持此操作
-
isTransposable
default boolean isTransposable()如果此算子支持operateTranspose(RealVector)
,则返回true
。如果返回
true
,operateTranspose(RealVector)
不应抛出UnsupportedOperationException
。默认实现返回
false
。- 返回:
-
false
-