![]() |
Обобщенной симметричной положительно определенной задачей собственных значений называется одна из трех задач поиска собственных значений вида
Ax = λBxгде матрица A - симметричная, а матрица B - симметричная положительно определенная.
Очевидно, что эта задача легко сводится к задаче поиска собственных значений несимметричной матрицы общего вида (во втором и третьем случаях достаточно просто умножить матрицы A и B, в первом - умножить обе части системы на B -1). Однако, несимметричная задача собственных значений на порядок сложнее симметричной, так что имеет смысл поискать более эффективный путь. Например, можно свести задачу к классической симметричной задаче, если воспользоваться разложением Холецкого матрицы B (ниже приведен пример для первой задачи).
Ax = λBxоткуда получаем задачу
Cy = λyЗдесь матрица C симметричная, так что мы получили хорошо изученную и эффективно решаемую задачу. Собственные числа в обоих задачах совпадают, собственные векторы исходной задачи могут быть получены путем решения системы линейных уравнений с треугольной матрицей. Аналогичные преобразования могут быть проведены в двух других случаях.
В этом модуле реализовано две подпрограммы для решения обобщенной симметричной положительно определенной задачи собственных значений. Первая из них, SMatrixGEVDReduce, осуществляет приведение вышеуказанных задач к классической симметричной задаче, возвращая матрицы C (матрицу задачи) и R (треугольную матрицу, позволяющую восстановить собственные векторы). Вторая подпрограмма, SMatrixGEVD, использует первую для решения обобщенной задачи, самостоятельно осуществляя все необходимые вызовы и преобразуя полученные векторы.
C++ | spdgevd subpackage | |
C# | spdgevd subpackage |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VB.NET.
Исходный код на VBA.
Исходный код на Python (CPython и IronPython).
ALGLIB® - numerical analysis library, 1999-2018. |