接口 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
  • 方法详细资料

    • getRowDimension

      int getRowDimension()
      返回此算子的值域的维度。
      返回:
      底层矩阵的行数
    • getColumnDimension

      int getColumnDimension()
      返回此算子的定义域的维度。
      返回:
      底层矩阵的列数
    • operate

      返回将this乘以向量x的结果。
      参数:
      x - 要操作的向量
      返回:
      this实例与x的乘积
      抛出:
      MathIllegalArgumentException - 如果列维度与x的大小不匹配
    • operateTranspose

      返回将this算子的转置乘以向量x的结果(可选操作)。

      默认实现会抛出UnsupportedOperationException。覆盖此方法的用户必须同时覆盖isTransposable()

      参数:
      x - 要操作的向量
      返回:
      this实例的转置与x的乘积
      抛出:
      MathIllegalArgumentException - 如果行维度与x的大小不匹配
      UnsupportedOperationException - 如果this算子不支持此操作
    • isTransposable

      default boolean isTransposable()
      如果此算子支持operateTranspose(RealVector),则返回true

      如果返回trueoperateTranspose(RealVector)不应抛出UnsupportedOperationException

      默认实现返回false

      返回:
      false