- MatrixBalance
- EigenVectorsBackward
- ReduceToHessenbergBalanced
- ReflectHessenbergBalancedToQ
- EigenHessenbergBalancedSchurQ
ReduceToHessenbergBalanced
Преобразует вещественную или комплексную общую сбалансированную матрицу A размера n на n к верхней форме Хессенберга H с помощью ортогонального преобразования подобия: Q**T * A * Q = H. Функция LAPACK GEHRD.
Вычисления для типа matrix<double>
bool matrix::ReduceToHessenbergBalanced(
|
Вычисления для типа matrix<float>
bool matrixf::ReduceToHessenbergBalanced(
|
Вычисления для типа matrix<complex>
bool matrixc::ReduceToHessenbergBalanced(
|
Вычисления для типа matrix<complexf>
bool matrixcf::ReduceToHessenbergBalanced(
|
Параметры
ilo
[in] Индекс нижней границы сбалансированной матрицы. Значение, возвращаемое методом MatrixBalance.
ihi
[in] Индекс верхней границы сбалансированной матрицы. Значение, возвращаемое методом MatrixBalance.
H
[out] Верхняя матрица Хессенберга.
reflect_q
[out] Перезаписанная сбалансированная матрица A. Элементы ниже первой поддиагонали вместе с массивом tau_q представляют ортогональную матрицу Q как произведение элементарных отражений.
tau_q
[out] Вектор скалярных множителей элементарных отражателей, представляющих ортогональную матрицу Q.
Возвращаемое значение
Возвращает true в случае успеха, иначе false в случае ошибки.
Примечание
Предполагается, что матрица A уже имеет верхнетреугольный вид в строках и столбцах 1:ilo-1 и ihi+1:N. Значения ilo и ihi обычно задаются функцией MatrixBalance. В противном случае их следует установить равными 1 и N соответственно.
Матрица Q представлена как произведение (ihi-ilo) элементарных отражений:
Q = H(ilo) H(ilo+1) . . . H(ihi-1).
Каждый H(i) имеет вид
H(i) = I - tau * v * v**T
Где tau — это вещественный скаляр, а v — вещественный вектор, при этом v(1:i) = 0, v(i+1) = 1 и v(ihi+1:n) = 0; v(i+2:ihi) сохраняется в матрице reflect_q(i+2:ihi,i), а tau — в массиве tau_q(i)
В примере ниже показано содержимое матрицы reflect_q. Здесь n = 7, ilo = 2 и ihi = 6:
input matrix on entry, reflect_q on exit, ( a a a a a a a ) ( a a h h h h a ) ( a a a a a a ) ( a h h h h a ) ( a a a a a a ) ( h h h h h h ) ( a a a a a a ) ( v2 h h h h h ) ( a a a a a a ) ( v2 v3 h h h h ) ( a a a a a a ) ( v2 v3 v4 h h h ) ( a ) ( a )
|
где a означает элемент исходной матрицы A, h — модифицированный элемент верхней матрицы Хессенберга H, а vi — элемент вектора, определяющего H(i).
Матрица Q может быть получена с помощью метода ReflectHessenbergBalancedToQ, примененного к матрице reflect_q.