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 | Вычисляются левые и правые собственные векторы, собственные значения вычисляются всегда. |