EigenTridiagonalDCQ

Вычисление собственных значений и собственных векторов симметричной трехдиагональной матрицы с использованием алгоритма "разделяй и властвуй" (lapack-функция STEDC). В отличие от метода EigenTridiagonalDC данный метод может быть использован для вычисления собственных векторов оригинальной симметричной матрицы. Симметричная матрица может быть преобразована (reduced) в трёхдиагональную форму методом ReduceSymmetricToTridiagonal. Ортогональная матрица Q, полученная в результате такого преобразования, используется для вычисления собственных векторов оригинальной симметричной матрицы.

Вычисления для типа matrix<double>

bool  matrix::EigenTridiagonalDCQ(
   ENUM_EIGTRIDIAG_Z     compv,              // необходимость вычисления собственных векторов
   matrix&               Q,                  // ортогональная матрица, используемая при приведении к трехдиагональному виду
   vector&               eigen_values,       // вектор рассчитанных собственных значений
   matrix&               eigen_vectors       // матрица рассчитанных собственных векторов
   );

Вычисления для типа matrix<float>

bool  matrixf::EigenTridiagonalDCQ(
   ENUM_EIGTRIDIAG_Z     compv,              // необходимость вычисления собственных векторов
   matrixf&              Q,                  // ортогональная матрица, используемая при приведении к трехдиагональному виду
   vectorf&              eigen_values,       // вектор рассчитанных собственных значений
   matrixf&              eigen_vectors       // матрица рассчитанных собственных векторов
   );

Вычисления для типа matrix<complex>

bool  matrixc::EigenTridiagonalDCQ(
   ENUM_EIGTRIDIAG_Z     compv,              // необходимость вычисления собственных векторов
   matrixc&              Q,                  // ортогональная матрица, используемая при приведении к трехдиагональному виду
   vector&               eigen_values,       // вектор рассчитанных собственных значений
   matrixc&              eigen_vectors       // матрица рассчитанных собственных векторов
   );

Вычисления для типа matrix<complexf>

bool  matrixcf::EigenTridiagonalDCQ(
   ENUM_EIGTRIDIAG_Z     compv,              // необходимость вычисления собственных векторов
   matrixcf&             Q,                  // ортогональная матрица, используемая при приведении к трехдиагональному виду
   vectorf&              eigen_values,       // вектор рассчитанных собственных значений
   matrixcf&             eigen_vectors       // матрица рассчитанных собственных векторов
   );

Параметры

compv

[in]  Значение из перечисления ENUM_EIGTRIDIAG_Z, определяющее способ вычисления собственных векторов.

Q

[in]  Ортогональная матрица Q, полученная методом ReflectTridiagonalToQ.

eigen_values

[out] Вектор собственных значений.

eigen_vectors

[out] Матрица собственных векторов.

Возвращаемое значение

Возвращает true в случае успеха, иначе false в случае ошибки.

Примечание

Расчет зависит от значения параметра compv.

При compv = EIGCOMPZ_N рассчитываются только собственные значения, собственные векторы при этом не вычисляются.

При значении EIGCOMPZ_V вычисляются собственные значения, а также собственные векторы исходной симметричной матрицы.

Если параметр compv установлен в значение EIGCOMPZ_I, в дополнение к собственным значениям вычисляются собственные векторы трехдиагональной матрицы.

На вход должна подаваться симметричная матрица в трехдиагональной форме.

ENUM_EIGTRIDIAG_Z

Перечисление, определяющее необходимость вычисления собственных векторов.

Идентификатор

Описание

EIGCOMPZ_N

'N' — вычислять только собственные значения

EIGCOMPZ_V

'V' — дополнительно вычислять собственные векторы симметричной матрицы

EIGCOMPZ_I

'I' — дополнительно вычислять собственные векторы трехдиагональной матрицы