числовой::Факторизация Холесского матрицы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
numeric::factorCholesky(A, options)
numeric::factorCholesky(A) возвращает факторный L факторизации Холесского A = L LH положительной определенной Эрмитовой матрицы A.
numeric::factorCholesky(A, Symmetric) возвращает факторный L факторизации типа Холесского A = L LT симметрической матрицы A.
Факторизацией Холесского квадратной Эрмитовой матрицы является A = L LH, где L является регулярной комплексной нижней треугольной матрицей и L, H является Эрмитовым, транспонируют L (т.е. сопряженное комплексное число транспонирования L). Такая факторизация только существует, если A положителен определенный.
По умолчанию числовая факторизация вычисляется. Если опция, Symbolic не используется, все компоненты матрицы, преобразована в числа с плавающей запятой. В этом случае матрица не должна содержать символьные объекты, которые не могут быть преобразованы в плавания. Числовые символьные выражения, такие как π
,
и т.д. приняты.
Если никакие не возвращаются, тип задан с помощью опции ReturnType = d, доменный тип Фактора Холесского, L зависит от типа входной матрицы A:
Фактором плотной матрицы типа Dom::DenseMatrix() является плотная матрица типа Dom::DenseMatrix() по звонку выражений MuPAD®.
Для всех других матриц категории Cat::Matrix факторный L возвращен как matrix типа Dom::Matrix() по звонку выражений MuPAD. Это включает входные матрицы A типа Dom::Matrix(...), Dom::SquareMatrix(...), Dom::MatrixGroup(...) и т.д.
Фактор Холесского, возвращенный numeric::factorCholesky, нормирован таким образом, что его диагональные элементы действительны и положительны.
Без опции Symbolic функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.
Мы рассматриваем матрицу
A := array(1..2, 1..2, [[1, I] , [-I, PI]]):
Мы вычисляем числовую факторизацию
numeric::factorCholesky(A)
![]()
и символьная факторизация:
L := numeric::factorCholesky(A, Symbolic)

Для последующей обработки Фактор Холесского (доменного типа DOM_ARRAY) преобразован в элемент матричного доменного Dom::Matrix ():
L := matrix(L):
Теперь, перегруженные арифметические операторы +, *, ^ и т.д. может использоваться для дальнейших вычислений:
L*linalg::transpose(conjugate(L))

delete A, L:
Следующая матрица не положительна определенный:
A := matrix([[-2, sqrt(2)], [sqrt(2), 1]]): numeric::factorCholesky(A)
Error: Matrix not positive definite within working precision. [stdlib::hfa::factorCh] Evaluating: numeric::factorCholesky
Однако симметричная факторизация с комплексным Фактором Холесского действительно существует:
numeric::factorCholesky(A, Symmetric)

delete A:
NoCheck опции должен использоваться, когда матрица содержит символьные объекты:
assume(x > 0): assume(z > 0): A := array(1..2, 1..2, [[x, conjugate(y)], [y, z]]): numeric::factorCholesky(A, Symbolic, NoCheck)

Обратите внимание на то, что с NoCheck, это принято, что матрица Эрмитова и положительная определенный! Проигнорированы все верхние треугольные записи. Следующий результат неявно принимает u = conjugate(y):
A := array(1..2, 1..2, [[x, u], [y, z]]): numeric::factorCholesky(A, Symbolic, NoCheck)

delete A:
Мы демонстрируем использование аппаратных плаваний. Гильбертовы матрицы являются известно плохо обусловленными и трудными к фактору с низкими значениями DIGITS. Следующие результаты, оба с HardwareFloats, а также с SoftwareFloats, омрачены числовым округлением. Следовательно, факторизация с и без аппаратных плаваний, соответственно, значительно отличается:
A := linalg::hilbert(13): L1 := numeric::factorCholesky(A, HardwareFloats): L2 := numeric::factorCholesky(A, SoftwareFloats): L1[13, 13] <> L2[13, 13]
![]()
Все Гильбертовы матрицы положительны определенный. Однако в следующем вызове, числовое округление делает оборудование инструмент, с плавающей точкой думает, что матрица не является определенной:
numeric::factorCholesky(linalg::hilbert(14), HardwareFloats):
Error: Matrix not positive definite within working precision. [stdlib::hfa::factorCh] Evaluating: numeric::factorCholesky
Факторизация вычисляется успешно с SoftwareFloats:
L := numeric::factorCholesky(linalg::hilbert(14), SoftwareFloats): norm(linalg::hilbert(14) - L*linalg::transpose(L))
![]()
delete A, L1, L2, L:
|
Квадратная матрица доменный тип |
|
С С По сравнению с Если никакой Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют. Если текущее значение Может быть несколько причин аппаратной арифметики, чтобы перестать работать:
Если ни Если Обратите внимание на то, что Запаздывающие цифры в результатах с плавающей точкой, вычисленных с ПримечаниеДля плохих обусловленных матриц результаты, возвращенные с |
|
Предотвращает преобразование входных данных к числам с плавающей запятой. Точная арифметика используется. Эта опция заменяет Обычная арифметика для выражений MuPAD используется. При использовании этой опции матричный A может содержать символьные объекты. Обратите внимание на то, что |
|
Заставляет Симметричной факторизацией Холесского квадратной симметрической матрицы является A = L LT, где L является регулярной комплексной нижней треугольной матрицей и L, T является транспонированием L. Матричный A не должен быть положителен определенный. Следовательно, с опцией Для действительных симметричных положительных определенных матриц A Фактор Холесского L действителен и Эрмитова факторизация A = L, LH совпадает с симметричной факторизацией A = L LT. |
|
Препятствует тому Без опции ПримечаниеПри использовании этой опции Эта опция не имеет никакого эффекта, когда опция |
|
Отключает предупреждения Если символьные коэффициенты найдены, |
|
Опция, заданная как Возвратите Фактор Холесского как матрицу доменного типа |
В зависимости от типа входной матрицы A нижний треугольный Фактор Холесского L возвращен как матрица доменного типа DOM_ARRAY, DOM_HFARRAY, Dom::Matrix() или Dom::DenseMatrix(). Его компоненты являются действительными или комплексными плаваниями, если опция Symbolic не используется. Без опции NoCheck повышена ошибка, если матрица не Эрмитова или не положительная определенный.