类 EigenDecompositionSymmetric
java.lang.Object
org.hipparchus.linear.EigenDecompositionSymmetric
计算对称实矩阵的特征分解。
矩阵A的特征分解是一组两个矩阵:\(V\) 和 \(D\),使得 \(A V = V D\),其中 $\(A\)$、\(V\) 和 \(D\) 都是 \(m \times m\) 矩阵。
这个类在精神上类似于JAMA库中的EigenvalueDecomposition
类,但有以下变化:
- 添加了一个
getVt
方法, - 添加了一个
getEigenvalue
方法来获取单个特征值, - 添加了一个
getEigenvector
方法来获取单个特征向量, - 添加了一个
getDeterminant
方法, - 添加了一个
getSolver
方法。
由于 \(A\) 是对称的,因此 \(A = V D V^T\),其中特征值矩阵 \(D\) 是对角线矩阵,特征向量矩阵 \(V\) 是正交的,即 A = V.multiply(D.multiply(V.transpose()))
,且 V.multiply(V.transpose())
等于单位矩阵。
矩阵 \(V\) 的列代表特征向量,即 \(A V = V D\),即 A.multiply(V)
等于 V.multiply(D)
。矩阵 \(V\) 可能病态,甚至是奇异的,因此方程 \(A = V D V^{-1}\) 的有效性取决于 \(V\) 的条件。
- 另请参阅:
-
字段概要
-
构造器概要
构造器说明EigenDecompositionSymmetric
(double[] main, double[] secondary) 计算对称三对角矩阵的特征分解。EigenDecompositionSymmetric
(double[] main, double[] secondary, double epsilon, boolean decreasing) 计算对称三对角矩阵的特征分解。计算给定对称实矩阵的特征分解。EigenDecompositionSymmetric
(RealMatrix matrix, double epsilon, boolean decreasing) 计算给定实矩阵的特征分解。 -
方法概要
修饰符和类型方法说明getD()
获取分解的对角矩阵D。double
计算矩阵的行列式。double
getEigenvalue
(int i) 返回原始矩阵的第i个特征值。double[]
获取原始矩阵的特征值的副本。getEigenvector
(int i) 获取原始矩阵的第i个特征向量的副本。double
获取用于内部测试(例如奇异、特征值比率等)的epsilon值。获取用于在精确线性意义下找到\(A \times X = B\)解的求解器。计算矩阵的平方根。getV()
获取分解的矩阵V。getVT()
获取分解的矩阵V的转置。
-
字段详细资料
-
DEFAULT_EPSILON
public static final double DEFAULT_EPSILON用于内部epsilon的默认epsilon值- 另请参阅:
-
-
构造器详细资料
-
EigenDecompositionSymmetric
计算给定对称实矩阵的特征分解。此构造函数使用
默认epsilon
和递减顺序的特征值。- 参数:
-
matrix
- 要分解的矩阵。 - 抛出:
-
MathIllegalStateException
- 如果算法无法收敛。 -
MathRuntimeException
- 如果对一般矩阵的分解导致具有零范数的矩阵
-
EigenDecompositionSymmetric
public EigenDecompositionSymmetric(RealMatrix matrix, double epsilon, boolean decreasing) throws MathRuntimeException 计算给定实矩阵的特征分解。支持自3.1以来的一般矩阵的分解。
- 参数:
-
matrix
- 要分解的矩阵。 -
epsilon
- 用于内部测试的epsilon(例如奇异、特征值比率等)。 -
decreasing
- 如果为true,则特征值将按递减顺序排序 - 抛出:
-
MathIllegalStateException
- 如果算法无法收敛。 -
MathRuntimeException
- 如果对一般矩阵的分解导致具有零范数的矩阵 - 从以下版本开始:
- 3.0
-
EigenDecompositionSymmetric
public EigenDecompositionSymmetric(double[] main, double[] secondary) 计算对称三对角矩阵的特征分解。假定Householder矩阵为单位矩阵。
此构造函数使用
默认epsilon
和递减顺序的特征值。- 参数:
-
main
- 对称三对角形式的主对角线。 -
secondary
- 三对角形式的次对角线。 - 抛出:
-
MathIllegalStateException
- 如果算法无法收敛。
-
EigenDecompositionSymmetric
public EigenDecompositionSymmetric(double[] main, double[] secondary, double epsilon, boolean decreasing) 计算对称三对角矩阵的特征分解。假定Householder矩阵为单位矩阵。- 参数:
-
main
- 对称三对角形式的主对角线。 -
secondary
- 三对角形式的次对角线。 -
epsilon
- 用于内部测试的epsilon(例如奇异、特征值比率等)。 -
decreasing
- 如果为true,则特征值将按递减顺序排序 - 抛出:
-
MathIllegalStateException
- 如果算法无法收敛。 - 从以下版本开始:
- 3.0
-
-
方法详细资料
-
getV
获取分解的矩阵V。V是正交矩阵,即其转置也是其逆。V的列是原始矩阵的特征向量。不对V的列形成的系统轴的方向做任何假设(例如,在3维空间中,V可以形成左手系或右手系)。- 返回:
- V矩阵。
-
getD
获取分解的对角矩阵D。D是对角矩阵。- 返回:
- D矩阵。
- 另请参阅:
-
getEpsilon
public double getEpsilon()获取用于内部测试(例如奇异、特征值比率等)的epsilon值。- 返回:
- epsilon值。
-
getVT
获取分解的矩阵V的转置。V是正交矩阵,即其转置也是其逆。V的列是原始矩阵的特征向量。不对V的列形成的系统轴的方向做任何假设(例如,在3维空间中,V可以形成左手系或右手系)。- 返回:
- V矩阵的转置。
-
getEigenvalues
public double[] getEigenvalues()获取原始矩阵的特征值的副本。- 返回:
- 原始矩阵的特征值的副本。
- 另请参阅:
-
getEigenvalue
public double getEigenvalue(int i) 返回原始矩阵的第i个特征向量的副本。- 参数:
-
i
- 特征值的索引(从0开始计数) - 返回:
- 原始矩阵的第i个特征值的实部。
- 另请参阅:
-
getEigenvector
获取原始矩阵的第i个特征向量的副本。请注意,如果第i个是复数,则此方法将抛出异常。
- 参数:
-
i
- 特征向量的索引(从0开始计数)。 - 返回:
- 原始矩阵的第i个特征向量的副本。
- 另请参阅:
-
getDeterminant
public double getDeterminant()计算矩阵的行列式。- 返回:
- 矩阵的行列式。
-
getSquareRoot
计算矩阵的平方根。此实现假定矩阵是正定的。- 返回:
- 矩阵的平方根。
- 抛出:
-
MathRuntimeException
- 如果矩阵不对称或不是正定的。
-
getSolver
获取用于在精确线性意义下找到\(A \times X = B\)解的求解器。- 返回:
- 一个求解器
-