EigenTridiagonalBisect

Вычисление собственных значений и собственных векторов симметричной трехдиагональной матрицы с использованием алгоритма бисекции (lapack-функция STEVX).

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

bool  matrix::EigenTridiagonalBisect(
   ENUM_EIG_VALUES       jobv,               // необходимость вычисления собственных векторов
   ENUM_BLAS_RANGE       range,              // подмножество вычисляемых собственных значений
   double                lower,              // нижняя граница подмножества
   double                upper,              // верхняя граница подмножества
   double                abstol,             // размер допустимой абсолютной ошибки (absolute error tolerance)
   vector&               eigen_values,       // вектор рассчитанных собственных значений
   matrix&               eigen_vectors       // матрица рассчитанных собственных векторов
   );

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

bool  matrixf::EigenTridiagonalBisect(
   ENUM_EIG_VALUES       jobv,               // необходимость вычисления собственных векторов
   ENUM_BLAS_RANGE       range,              // подмножество вычисляемых собственных значений
   float                 lower,              // нижняя граница подмножества
   float                 upper,              // верхняя граница подмножества
   float                 abstol,             // размер допустимой абсолютной ошибки (absolute error tolerance)
   vectorf&              eigen_values,       // вектор рассчитанных собственных значений
   matrixf&              eigen_vectors       // матрица рассчитанных собственных векторов
   );

Параметры

jobv

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

range

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

lower

[in]  Нижняя граница подмножества собственных значений, задается в зависимости от значения параметра range.

upper

[in]  Верхняя граница подмножества собственных значений, задается в зависимости от значения параметра range.

abstol

[in]  Размер абсолютной допустимой ошибки.

Размер абсолютной допустимой ошибки, с которой требуется определить каждое собственное значение/собственный вектор.

Если jobv = 'V', то собственные значения и собственные векторы на выходе имеют нормы невязок, ограниченные значением abstol, и при этом скалярные произведения между различными собственными векторами также ограничены значением abstol.

Если abstol < n *eps*|T|, тогда используется значение n *eps*|T|, где eps — это машинная точность, а |T| — это 1-норма матрицы T. Собственные значения вычисляются с точностью eps*|T| независимо от abstol.

В случае, если важна высокая относительная точность, необходимо установить abstol в безопасное минимальное значение X такое, что 1.0/X не переполняется.

eigen_values

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

V

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

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

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

Примечание

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

При значении BLASRANGE_A все собственные значения вычисляются, при этом параметры lower и upper игнорируются.

При значении BLASRANGE_V вычисляются только те собственные значения (и их векторы), которые попадают в диапазон вещественных значений, заданных параметрами lower и upper

При значении BLASRANGE_I вычисляются только те собственные значения (и их векторы), которые попадают в диапазон целочисленных индексов, заданных параметрами lower и upper. Например, при параметрах lower=0 и upper=2 вычисляются только первые три собственные значения.

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

ENUM_EIG_VALUES

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

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

Описание

EIGVALUES_V

Вычисляются собственные векторы и собственные значения.

EIGVALUES_N

Вычисляются только собственные значения, без векторов.

ENUM_BLAS_RANGE

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

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

Описание

BLASRANGE_A

Будут найдены все сингулярные или собственные значения.

BLASRANGE_V

Будут найдены все сингулярные или собственные значения в полуоткрытом интервале (VL,VU].

BLASRANGE_I

Вычисляются особые или собственные значения с IL-го по IU-е.