- EigenSolver
- EigenSolverX
- EigenSolverShur
- EigenSolver2
- EigenSolver2X
- EigenSolver2Shur
- EigenSolver2Blocked
- EigenSolver2ShurBlocked
EigenSolver2Blocked
Вычисление обобщённых собственных значений и собственных векторов для пары обычных квадратных матриц при помощи блочного алгоритма (lapack-функция GGEV3). Обе матрицы должны быть одинакового размера. Параметры метода точно такие же, как и у EigenSolver2.
Вычисления для типа matrix<double>
bool matrix::EigenSolver2Blocked(
|
Вычисления для типа matrix<float>
bool matrixf::EigenSolver2Blocked(
|
Вычисления для типа matrix<complex>
bool matrix::EigenSolver2Blocked(
|
Вычисления для типа matrix<complexf>
bool matrixcf::EigenSolver2(
|
Параметры
B
[out] Вторая матрица в паре.
jobv
[in] Значение из перечисления ENUM_EIG_VECTORS, определяющее способ вычисления левых и правых собственных векторов.
alpha
[out] Вектор собственных значений.
beta
[out] Вектор делителей собственных значений.
left_eigenvectors
[out] Матрица левых собственных векторов.
righeft_eigenvectors
[out] Матрица правых собственных векторов.
Возвращаемое значение
Возвращает true в случае успеха или false в случае ошибки.
Примечание
Расчёт зависит от значений параметра jobv.
Обобщённое собственное значение для пары матриц (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). В противном случае нужно учитывать только реальные части комплексных значений вектора собственных значений.
ENUM_EIG_VECTORS
Перечисление, определяющее необходимость вычисления собственных векторов.
Идентификатор |
Описание |
---|---|
EIGVECTORS_N |
Вычисляются только собственные значения, без векторов. |
EIGVECTORS_L |
Вычисляются только левые собственные векторы. |
EIGVECTORS_R |
Вычисляются только правые собственные векторы. |
EIGVECTORS_LR |
Вычисляются левые и правые собственные векторы, собственные значения вычисляются всегда. |