Вычислите факторизацию Холесского

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Факторизация Холесского выражает комплексную Эрмитовую (самопримыкающую) положительную определенную матрицу как продукт нижнего треугольного матричного L, и его Эрмитовы транспонируют L H: A = L  LH. Эрмитовы транспонируют матрицы, сопряженное комплексное число транспонирования той матрицы. Для действительных и симметричных матриц транспонирование совпадает с Эрмитовым, транспонируют. Таким образом факторизацией Холесского действительной симметричной положительной определенной матрицы является A = L  LT, где L T является транспонированием L.

Создайте 5×5 матрица Паскаля. Эта матрица симметрична и положительная определенный:

P := linalg::pascal(5)

Чтобы вычислить разложение Холесского матрицы, используйте функцию linalg::factorCholesky. Результатом является следующая нижняя треугольная матрица:

L := linalg::factorCholesky(P)

Продукт треугольной матрицы L и транспонировать дает исходный матричный P:

testeq(P = L*linalg::transpose(L))

Примечание

MuPAD® возвращает нижнюю треугольную матрицу в результате факторизации Холесского. MATLAB® возвращает верхнюю треугольную матрицу, которая является транспонированием результата, возвращенного MuPAD.

Когда MuPAD не может определить, является ли матрица Эрмитовой, linalg::factorCholesky выдает ошибку:

A := matrix([[a, b, c], [b, c, a], [c, a, b]]):
linalg::factorCholesky(A)
Error: Hermitian matrix expected. [linalg::factorCholesky]

Если вы знаете, что матрица является Эрмитовой, можно подавить эту ошибку. Опция NoCheck подавляет ошибку и позволяет linalg::factorCholesky функционировать, продолжают вычисление:

linalg::factorCholesky(A, NoCheck)

Если вы знаете, что матрица действительна и симметрична, используйте опцию Real, чтобы избежать сопряженных комплексных чисел (подразумеваемый |a | = a *ā) в результате:

linalg::factorCholesky(A, NoCheck, Real)