Иллюстрированный самоучитель по MathCAD 12

Разложение Холецкого

Разложением Холецкого симметричной (т. е. содержащей одинаковые элементы на местах, расположенных симметрично относительно главной диагонали) матрицы А является представление вида A=LLT, где L – треугольная матрица. Алгоритм Холецкого реализован во встроенной функции choiesky:

  • choiesky (А) – разложение Холецкого:
    • А – квадратная, положительно определенная симметричная матрица.

Пример разложения Холецкого приведен в листинге 8.18. Обратите внимание, что в результате получается верхняя треугольная матрица (нули сверху от диагонали), а транспонированная матрица является нижней треугольной. В последней строке листинга приведена проверка правильности найденного разложения.

Примечание
Исходя из математического вида разложения Холецкого, матрицу L иногда называют квадратным корнем матрицы А
.

Листинг 8.18. Разложение Холецкого:

Иллюстрированный самоучитель по MathCAD 12 › Системы линейных уравнений › Разложение Холецкого

Решение СЛАУ, если разложение Холецкого для него известно, основано на замене исходной системы Аx=b другой системой b-у=b (где у=LT х), что иллюстрируется листингом 8.19. В первой строке листинга задается вектор правой части b и вычисляется стандартным методом Гаусса решение системы. В оставшейся части листинга СЛАУ решается при помощи разложения Холецкого, проведенного в листинге 8.18. После нахождения (простой подстановкой, т. к. матрица L – треугольная) вектора у, опять-таки подстановкой в уравнение у=LT х (т. к. LT – тоже треугольная матрица) отыскивается вектор х.

Внимание!
В листинге 8.19 использованы пользовательские функции решения треугольных СЛАУ, описанные в предыдущем разделе. Если вы набираете листинг "от руки", их можно заменить универсальной встроенной функцией isolve
.

Листинг 8.19. Решение СЛАУ при помощи разложения Холецкого (продолжение листингов 8.18 и 8.17):

Иллюстрированный самоучитель по MathCAD 12 › Системы линейных уравнений › Разложение Холецкого

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.