- EigenSymmetricDC
- EigenSymmetricQR
- EigenSymmetricRobust
- EigenSymmetricBisect
- EigenSymmetricDC2s
- EigenSymmetricQR2s
- EigenSymmetricRobust2s
- EigenSymmetricBisect2s
- EigenSymmetric2DC
- EigenSymmetric2QR
- EigenSymmetric2Bisect
EigenSymmetric2Bisect
Вычисление всех собственных значений и, при необходимости, собственных векторов обобщенной симметрично определенной собственной задачи вида A*x=(lambda)*B*x, A*Bx=(lambda)*x или B*A*x=(lambda)*x.
Предполагается, что матрицы A и B симметричны (или эрмитовы), а матрица B также положительно определена. Собственные значения и собственные векторы можно выбрать, указав либо диапазон значений, либо диапазон индексов для желаемых собственных значений. Метод использует алгоритм бисекции (функции LAPACK: SYGVX, HEGVX).
Вычисления для типа matrix<double>
bool matrix::EigenSymmetric2Bisect(
|
Вычисления для типа matrix<float>
bool matrixf::EigenSymmetric2Bisect(
|
Вычисления для типа matrix<complex>
bool matrixc::EigenSymmetric2Bisect(
|
Вычисления для типа matrix<complexf>
bool matrixcf::EigenSymmetric2Bisect(
|
Параметры
itype
[in] Значение перечисления ENUM_EIGS2_TYPE, указывающее тип решаемой задачи: A*x=(lambda)*B*x, A*Bx=(lambda)*x или or B*A*x=(lambda)*x.
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 не переполняется.
Б
[in] Вторая матрица B. Должна быть положительно определенной симметричной (или эрмитово сопряженной) матрицей.
eigen_values
[out] Вектор собственных значений.
eigen_vectors
[out] Матрица собственных векторов.
triangular_factor
[out] Треугольный множитель U или L из разложения Холецкого = U**T*U или B = L*L**T.
Возвращаемое значение
Возвращает true в случае успеха, иначе false в случае ошибки.
Примечание
Расчет зависит от значения параметров jobv и range.
При значении BLASRANGE_A вычисляются все собственные значения, при этом параметры lower и upper игнорируются.
При значении BLASRANGE_V вычисляются только те собственные значения (и их векторы), которые попадают в диапазон вещественных значений, заданных параметрами lower и upper
При значении BLASRANGE_I вычисляются только те собственные значения (и их векторы), которые попадают в диапазон целочисленных индексов, заданных параметрами lower и upper. Например, при параметрах lower=0 и upper=2 вычисляются только первые три собственные значения.
На вход можно подать симметричную (эрмитову), верхнетреугольную или нижнетреугольную матрицу. Треугольные матрицы подразумеваются симметричными (эрмитово сопряженными). Вторая матрица B должна быть положительно определенной симметричной матрицей. Если входная матрица и вторая матрица B являются треугольными, то обе должны быть одного типа: верхнетреугольными или нижнетрегольными.
ENUM_EIGS2_TYPE
Перечисление, определяющее тип решаемой задачи.
Идентификатор |
Описание |
---|---|
EIGS2TYPE_1 |
1: A*x = (lambda)*B*x |
EIGS2TYPE_2 |
2: A*B*x = (lambda)*x |
EIGS2TYPE_3 |
3: B*A*x = (lambda)*x |
ENUM_EIG_VALUES
Перечисление, определяющее необходимость вычисления собственных векторов.
Идентификатор |
Описание |
---|---|
EIGVALUES_V |
Вычисляются собственные векторы и собственные значения. |
EIGVALUES_N |
Вычисляются только собственные значения, без векторов. |
ENUM_BLAS_RANGE
Перечисление, определяющее способ вычисления правых сингулярных векторов.
Идентификатор |
Описание |
---|---|
BLASRANGE_A |
Будут найдены все сингулярные или собственные значения. |
BLASRANGE_V |
Будут найдены все сингулярные или собственные значения в полуоткрытом интервале (VL,VU]. |
BLASRANGE_I |
Вычисляются особые или собственные значения с IL-го по IU-е. |