类 EigenDecompositionNonSymmetric

java.lang.Object
org.hipparchus.linear.EigenDecompositionNonSymmetric

public class EigenDecompositionNonSymmetric extends Object
计算非对称实矩阵的特征分解。

矩阵A的特征分解是一组两个矩阵:\(V\) 和 \(D\),使得 \(A V = V D\),其中 $\(A\), \(V\) 和 \(D\) 都是 \(m \times m\) 矩阵。

这个类在精神上类似于来自 JAMA 库的 EigenvalueDecomposition 类,具有以下更改:

这个类支持具有复特征值的非对称矩阵。对称矩阵的支持由 EigenDecompositionSymmetric 提供。

由于 \(A\) 不对称,因此特征值矩阵 \(D\) 是块对角线矩阵,其中实特征值在 1×1 块中,任何复特征值,\(\lambda \pm i \mu\),在 2×2 块中:

\[ \begin{bmatrix} \lambda & \mu\\ -\mu & \lambda \end{bmatrix} \]

矩阵 \(V\) 的列表示特征向量,即 \(A V = V D\),即 A.multiply(V) 等于 V.multiply(D)。矩阵 \(V\) 可能病态,甚至是奇异的,因此方程 \(A = V D V^{-1}\) 的有效性取决于 \(V\) 的条件。

这个实现基于 A. Drubrulle, R.S. Martin 和 J.H. Wilkinson 的论文 "The Implicit QL Algorithm",收录在 Wilksinson 和 Reinsch (1971) 的手册中,卷 2,线性代数,Springer-Verlag,纽约。

从以下版本开始:
3.0
另请参阅:
  • 字段详细资料

    • DEFAULT_EPSILON

      public static final double DEFAULT_EPSILON
      内部使用的默认 epsilon 值
      另请参阅:
  • 构造器详细资料

    • EigenDecompositionNonSymmetric

      public EigenDecompositionNonSymmetric(RealMatrix matrix)
      计算给定实矩阵的特征分解。
      参数:
      matrix - 要分解的矩阵。
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
      MathRuntimeException - 如果对一般矩阵的分解导致具有零范数的矩阵
    • EigenDecompositionNonSymmetric

      public EigenDecompositionNonSymmetric(RealMatrix matrix, double epsilon) throws MathRuntimeException
      计算给定实矩阵的特征分解。
      参数:
      matrix - 要分解的矩阵。
      epsilon - 用于内部测试的 epsilon(例如奇异、特征值比率等)。
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
      MathRuntimeException - 如果对一般矩阵的分解导致具有零范数的矩阵
  • 方法详细资料

    • getV

      public RealMatrix getV()
      获取分解的矩阵 V。V 是一个矩阵,其列保存特征向量的实部或虚部。
      返回:
      V 矩阵。
    • getD

      public RealMatrix getD()
      获取分解的块对角线矩阵 D。D 是一个块对角线矩阵。实特征值在对角线上,而复值在 2x2 块中 { {实部 +虚部}, {-虚部, 实部} }。
      返回:
      D 矩阵。
    • getEpsilon

      public double getEpsilon()
      获取用于内部测试的 epsilon 值(例如奇异、特征值比率等)。
      返回:
      epsilon 值。
    • getVInv

      public RealMatrix getVInv()
      获取分解的矩阵 V 的逆。
      返回:
      V 矩阵的逆。
    • getEigenvalues

      public Complex[] getEigenvalues()
      获取原始矩阵的特征值的副本。
      返回:
      原始矩阵的特征值的副本。
      另请参阅:
    • getEigenvalue

      public Complex getEigenvalue(int i)
      返回原始矩阵的第 i 个特征值。
      参数:
      i - 特征值的索引(从 0 开始计数)
      返回:
      原始矩阵的第 i 个特征值。
      另请参阅:
    • getEigenvector

      public FieldVector<Complex> getEigenvector(int i)
      获取原始矩阵的第 i 个特征向量的副本。

      请注意,如果第 i 个是复数,则此方法将抛出异常。

      参数:
      i - 特征向量的索引(从 0 开始计数)。
      返回:
      原始矩阵的第 i 个特征向量的副本。
      另请参阅:
    • getDeterminant

      public Complex getDeterminant()
      计算矩阵的行列式。
      返回:
      矩阵的行列式。