числовой::

Детерминант матрицы

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

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

Синтаксис

numeric::det(A, <mode>, <MinorExpansion>, <NoWarning>)

Описание

numeric::det(A) возвращает детерминант матричного A.

Без опции Symbolic все записи A должны быть числовыми. Числовые выражения такой как, и т.д. приняты и преобразованы в плавания. Если символьные записи найдены в матрице, numeric::det автоматически переключается на Symbolic, выдающий предупреждение.

Symbolic опции должен использоваться, если матрица содержит символьные объекты, которые не могут быть преобразованы в числа с плавающей точкой.

Примечание

Матрицы A матричной области, такие как Dom::Matrix(...) или Dom::SquareMatrix(...) внутренне преобразованы в массивы по выражениям через expr(A). Обратите внимание на то, что det должен использоваться, когда детерминант должен быть вычислен по области компонента. Смотрите Пример 2. Обратите внимание на то, что Symbolic опции должен использоваться, если записи не могут быть преобразованы в числовые выражения.

Взаимодействия среды

Без опции Symbolic функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.

Примеры

Пример 1

Числовые матрицы могут быть обработаны с или без опции Symbolic:

A := array(1..3, 1..3,[[1, 1, I], [1, exp(1), I], [1, 2, 2]]): 
numeric::det(A), numeric::det(A, Symbolic)

Symbolic опции должен использоваться, когда матрица имеет нечисловые записи:

A := array(1..2, 1..2, [[1/(x + 1),  1], [1/(x + 2), PI]]):
numeric::det(A, Symbolic)

Если опция, MinorExpansion используется, символьные записи, принята, даже если опция Symbolic не задана:

detN := numeric::det(A, MinorExpansion);
detS := numeric::det(A, Symbolic, MinorExpansion)

Упростите эти результаты с помощью Simplify:

Simplify(detN), Simplify(detS)

delete A:

Пример 2

Следующая матрица имеет доменные компоненты:

A := Dom::Matrix(Dom::IntegerMod(7))([[6, -1], [1, 6]])

Обратите внимание на то, что numeric::det вычисляет детерминант следующей матрицы:

expr(A), numeric::det(A)

det должен использоваться, если детерминант должен быть вычислен по доменному Dom::IntegerMod компонента (7):

det(A)

delete A:

Пример 3

Мы демонстрируем использование аппаратных плаваний. Гильбертовы матрицы известно плохо обусловлены: вычисление детерминанта подвергается серьезным эффектам отмены. Следующие результаты, оба с HardwareFloats, а также с SoftwareFloats, омрачены числовым округлением:

A := linalg::hilbert(15):
float(numeric::det(A, Symbolic)),
numeric::det(A, HardwareFloats),
numeric::det(A, SoftwareFloats)

delete A:

Параметры

A

Квадратная матрица доменный тип DOM_ARRAY или DOM_HFARRAY, или категории Cat::Matrix

mode

Один из флагов Hard, HardwareFloats, Soft, SoftwareFloats или Symbolic

Опции

Hard, HardwareFloats, Soft, SoftwareFloats

С Hard (или HardwareFloats), вычисления сделаны с помощью быстрой аппаратной плавающей арифметики из сеанса MuPAD®. Hard и HardwareFloats эквивалентны. При использовании этой опции входные данные преобразованы в аппаратные плавания и обработаны скомпилированным кодом С. Результат повторно преобразован в плавания MuPAD и возвращен в сеанс MuPAD.

С Soft (или SoftwareFloats) вычисления являются плавающей арифметикой программного обеспечения использования купола, обеспеченной ядром MuPAD. Soft и SoftwareFloats эквивалентны. SoftwareFloats используется по умолчанию, если текущее значение DIGITS больше, чем 15 и входная матрица, A не имеет доменного типа DOM_HFARRAY.

По сравнению с SoftwareFloats, используемым ядром MuPAD, вычисление с HardwareFloats может быть много раз быстрее. Обратите внимание, однако, что точность аппаратной арифметики ограничивается приблизительно 15 цифрами. Далее, размер чисел с плавающей запятой не может быть больше, чем приблизительно 10 308 и не меньшим, чем приблизительно 10 - 308.

Если никакой HardwareFloats или SoftwareFloats не требуют явным образом, следующая стратегия используется: Если текущее значение DIGITS меньше, чем 16 или если матричный A является аппаратным плавающим массивом доменного типа DOM_HFARRAY, то аппаратную арифметику пробуют. Если это успешно, результат возвращен.

Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют.

Если текущее значение DIGITS больше, чем 15 и входная матрица, A не имеет доменного типа DOM_HFARRAY, или если одна из опций, Soft, SoftwareFloats или Symbolic заданы, MuPAD, вычисляет результат со своей арифметикой программного обеспечения, не пытаясь использовать аппаратные плавания сначала.

Может быть несколько причин аппаратной арифметики, чтобы перестать работать:

  • Текущее значение DIGITS больше, чем 15.

  • Данные содержат символьные объекты.

  • Данные содержат числа, больше, чем 10 308 или меньший, чем 10 - 308, который не может быть представлен аппаратными плаваниями.

Если ни HardwareFloats, ни SoftwareFloats не заданы, пользователю не сообщают, используются ли аппаратные плавания или плавания программного обеспечения.

Если HardwareFloats задан, но перестал работать из-за одной из причин выше, предупреждение выдано, что (намного более медленное) программное обеспечение арифметика с плавающей точкой ядра MuPAD используется.

Обратите внимание на то, что HardwareFloats может только использоваться, если все входные данные могут быть преобразованы в числа с плавающей запятой.

Запаздывающие цифры в результатах с плавающей точкой, вычисленных с HardwareFloats и SoftwareFloats, могут отличаться.

Примечание

Для плохих обусловленных матриц результаты, возвращенные с HardwareFloats и SoftwareFloats, могут значительно отличаться! Смотрите Пример 3.

Symbolic

Эта опция предотвращает преобразование входных данных к плаваниям. При использовании этой опции приняты символьные записи. Это заменяет опцию HardwareFloats.

Примечание

Эта опция не должна использоваться для матриц с плавающей точкой! Алгоритм Symbolic не реализует гарантии против числовой нестабильности в операциях с плавающей точкой.

MinorExpansion

При использовании этой опции используется рекурсивное незначительное расширение вдоль столбцов. Эта опция может быть полезна для маленьких матриц с символьными записями.

Эта опция подразумевает SoftwareFloats.

При использовании этой опции приняты символьные записи, даже если опция Symbolic не используется.

NoWarning

Отключает предупреждения

Возвращаемые значения

По умолчанию детерминант возвращен как число с плавающей запятой. С опцией Symbolic возвращено выражение.

Алгоритмы

Без опции Symbolic QR - используется факторизация A через преобразования Домовладельца.

С Symbolic LU - используется факторизация A.

Смотрите также

Функции MuPAD