Главная       Скачать       Коммерческая поддержка       FAQ       Forum       О нас       Английская версия

Обобщенная симметричная положительно определенная задача собственных значений

Обобщенной симметричной положительно определенной задачей собственных значений называется одна из трех задач поиска собственных значений вида

Ax = λBx
ABx = λx
BAx = λx

где матрица A - симметричная, а матрица B - симметричная положительно определенная.

Очевидно, что эта задача легко сводится к задаче поиска собственных значений несимметричной матрицы общего вида (во втором и третьем случаях достаточно просто умножить матрицы A и B, в первом - умножить обе части системы на B -1). Однако, несимметричная задача собственных значений на порядок сложнее симметричной, так что имеет смысл поискать более эффективный путь. Например, можно свести задачу к классической симметричной задаче, если воспользоваться разложением Холецкого матрицы B (ниже приведен пример для первой задачи).

Ax = λBx
Ax = λLL Tx
AL -TL Tx = λLL Tx
L -1AL -TL Tx = λL Tx
(L -1AL -T)(L Tx) = λ(L Tx)

откуда получаем задачу

Cy = λy
C = L -1AL -T
y = L Tx

Здесь матрица C симметричная, так что мы получили хорошо изученную и эффективно решаемую задачу. Собственные числа в обоих задачах совпадают, собственные векторы исходной задачи могут быть получены путем решения системы линейных уравнений с треугольной матрицей. Аналогичные преобразования могут быть проведены в двух других случаях.

Описание подпрограмм

В этом модуле реализовано две подпрограммы для решения обобщенной симметричной положительно определенной задачи собственных значений. Первая из них, SMatrixGEVDReduce, осуществляет приведение вышеуказанных задач к классической симметричной задаче, возвращая матрицы C (матрицу задачи) и R (треугольную матрицу, позволяющую восстановить собственные векторы). Вторая подпрограмма, SMatrixGEVD, использует первую для решения обобщенной задачи, самостоятельно осуществляя все необходимые вызовы и преобразуя полученные векторы.

Manual entries

C++ spdgevd subpackage   
C# spdgevd subpackage   

This article is intended for personal use only.

Скачать ALGLIB

C#

Исходный код на C#

Downloads page

 

C++

Исходный код на C++

Downloads page

 

C++, арифметика высокой точности

Исходный код на C++, использующий библиотеки MPFR/GMP.

Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.

Downloads page

 

FreePascal

Исходный код на Free Pascal.

Downloads page

 

Delphi

Исходный код на Delphi.

Downloads page

 

VB.NET

Исходный код на VB.NET.

Downloads page

 

VBA

Исходный код на VBA.

Downloads page

 

Python

Исходный код на Python (CPython и IronPython).

Downloads page

 

 

ALGLIB® - numerical analysis library, 1999-2017.
ALGLIB is registered trademark of the ALGLIB Project.