- EigenSolver
- EigenSolverX
- EigenSolverSchur
- EigenSolver2
- EigenSolver2X
- EigenSolver2Schur
- EigenSolver2Blocked
- EigenSolver2SchurBlocked
- EigenHessenbergSchurQ
EigenSolver2
Вычисление обобщенных собственных значений и собственных векторов для пары обычных квадратных матриц (LAPACK-функция GGEV). Обе матрицы должны быть одинакового размера.
Вычисления для типа matrix<double>
bool matrix::EigenSolver2(
|
Вычисления для типа matrix<float>
bool matrixf::EigenSolver2(
|
Вычисления для типа matrix<complex>
bool matrixc::EigenSolver2(
|
Вычисления для типа matrix<complexf>
bool matrixcf::EigenSolver2(
|
Параметры
B
[in] Вторая матрица в паре.
jobv
[in] Значение из перечисления ENUM_EIG_VECTORS, определяющее способ вычисления левых и правых собственных векторов.
alpha
[out] Вектор собственных значений.
beta
[out] Вектор делителей собственных значений.
left_eigenvectors
[out] Матрица левых собственных векторов.
right_eigenvectors
[out] Матрица правых собственных векторов.
Возвращаемое значение
Возвращает true в случае успеха и false в случае ошибки.
Примечание
Расчет зависит от значений параметра jobv.
ENUM_EIG_VECTORS
Перечисление, определяющее необходимость вычисления собственных векторов.
Идентификатор |
Описание |
---|---|
EIGVECTORS_N |
Вычисляются только собственные значения, без векторов. |
EIGVECTORS_L |
Вычисляются только левые собственные векторы. |
EIGVECTORS_R |
Вычисляются только правые собственные векторы. |
EIGVECTORS_LR |
Вычисляются левые и правые собственные векторы, собственные значения вычисляются всегда. |
Обобщенное собственное значение для пары матриц (A,B) — это скалярное λ или такое отношение alpha/beta = lambda, при котором A - lambda*B является сингулярным. Обычно представляется в виде пары (alpha,beta), поскольку существует интерпретация для beta=0 и даже для alpha=0 и beta=0.
Правый собственный вектор v(j), соответствующий собственному значению lambda(j) матрицы (A,B), удовлетворяет условию
A * v(j) = lambda(j) * B * v(j).
Левый собственный вектор u(j), соответствующий собственному значению lambda(j) матрицы (A,B), удовлетворяет условию
u(j)**H * A = lambda(j) * u(j)**H * B .
где u(j)**H — сопряженно-транспонированное значение u(j).
Реальные (не комплексные) матрицы могут иметь комплексное решение. Поэтому входной вектор собственных значений должен быть комплексным. В случае комплексного решения код ошибки устанавливается в 4019 (ERR_MATH_OVERFLOW). В противном случае нужно учитывать только реальные части комплексных значений вектора собственных значений.