Разложение Холецкого
Разложением Холецкого симметричной (т. е. содержащей одинаковые элементы на местах, расположенных симметрично относительно главной диагонали) матрицы А является представление вида A=LLT, где L – треугольная матрица. Алгоритм Холецкого реализован во встроенной функции choiesky:
- choiesky (А) – разложение Холецкого:
- А – квадратная, положительно определенная симметричная матрица.
Пример разложения Холецкого приведен в листинге 8.18. Обратите внимание, что в результате получается верхняя треугольная матрица (нули сверху от диагонали), а транспонированная матрица является нижней треугольной. В последней строке листинга приведена проверка правильности найденного разложения.
Примечание
Исходя из математического вида разложения Холецкого, матрицу L иногда называют квадратным корнем матрицы А.
Листинг 8.18. Разложение Холецкого:
Решение СЛАУ, если разложение Холецкого для него известно, основано на замене исходной системы Аx=b другой системой b-у=b (где у=LT х), что иллюстрируется листингом 8.19. В первой строке листинга задается вектор правой части b и вычисляется стандартным методом Гаусса решение системы. В оставшейся части листинга СЛАУ решается при помощи разложения Холецкого, проведенного в листинге 8.18. После нахождения (простой подстановкой, т. к. матрица L – треугольная) вектора у, опять-таки подстановкой в уравнение у=LT х (т. к. LT – тоже треугольная матрица) отыскивается вектор х.
Внимание!
В листинге 8.19 использованы пользовательские функции решения треугольных СЛАУ, описанные в предыдущем разделе. Если вы набираете листинг "от руки", их можно заменить универсальной встроенной функцией isolve.
Листинг 8.19. Решение СЛАУ при помощи разложения Холецкого (продолжение листингов 8.18 и 8.17):