Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Чтобы вычислить определитель квадратной матрицы численно, используйте numeric::det функция. Например, вычислите определитель 5 ×5 матриц Паскаля:
numeric::det(linalg::pascal(5))
![]()
Когда вы используете числовые функции, результат может быть чрезвычайно чувствителен к ошибкам округления. Например, определитель матрицы Паскаля любого размера равняется 1. Однако, если вы используете numeric::det функция, чтобы вычислить определитель 25×25 матрица Паскаля, вы получаете следующий неправильный результат:
numeric::det(linalg::pascal(15))
![]()
Когда вычислительные определители численно, можно использовать HardwareFloats и SoftwareFloats опции, чтобы использовать оборудование или программное обеспечение пускают в ход арифметику, соответственно. (Можно использовать краткие названия в этих опциях: Hard и Soft.)
Когда вы используете HardwareFloats опция, MuPAD® преобразует все входные данные в аппаратные числа с плавающей запятой и передает данные для обработки скомпилированным кодом С за пределами сеанса MuPAD. Затем результаты возвращаются в сеанс MuPAD. Аппаратная арифметика часто позволяет вам выполнять расчеты намного быстрее, чем арифметика программного обеспечения, которая использует ядро MuPAD в выполнении расчетов.
Точность аппаратной арифметики ограничивается приблизительно 15 цифрами. По умолчанию, numeric::det функционируйте использует HardwareFloats опция. Функциональные переключатели к арифметике программного обеспечения при одном или нескольких следующих условий:
Вы используете SoftwareFloats опция или MinorExpansion опция явным образом.
Текущее значение DIGITS больше, чем 15.
Входные данные или вычисленные данные включают числа, которые больше, чем 10 308 или меньше, чем 10 - 308. Аппаратные плавания не могут представлять такие числа.
Точность аппаратной и программной арифметики может отличаться. Поэтому результаты получены с HardwareFloats и SoftwareFloats опции также могут отличаться. Например, вычислите определитель 25 ×25 матриц Паскаля, использующих каждую из опций. Обоими числовыми результатами являются несколько порядков, больше, чем правильный ответ из-за ошибок округления. Однако результатом, полученным с помощью арифметики программного обеспечения, являются несколько порядков ближе к правильному ответу:
P := linalg::pascal(25): detP := det(P): float(detP); numeric::det(P, SoftwareFloats); numeric::det(P, HardwareFloats)
![]()
![]()
![]()
Другим примером численно плохо обусловленных матриц являются Гильбертовы матрицы. Например, создайте 20×20 Гильбертова матрица, вычислите ее определитель символически, и затем аппроксимируйте результат численно:
H := linalg::hilbert(15): detH := det(H): float(detH)
![]()
Теперь используйте numeric::det функция, чтобы вычислить определитель численно:
numeric::det(H)
![]()
Числовой результат получен с SoftwareFloats опция ближе к правильному результату:
numeric::det(linalg::hilbert(15), SoftwareFloats)
![]()
Предотвратить преобразование входных данных к числам с плавающей запятой при использовании numeric::det функция, используйте Symbolic опция. Эта опция позволяет вам вычислять определитель точно (без ошибок округления). Для матриц по конкретным звонкам и полям, определитель вычисляется numeric::det с Symbolic опция может отличаться от определителя, вычисленного det. Причиной является тот det выполняет расчеты по области компонента входной матрицы. numeric::det функция с Symbolic опция всегда выполняет расчеты по полю произвольных выражений MuPAD. Например, создайте следующую матрицу по доменному Dom::IntegerMod(5):
A := Dom::Matrix(Dom::IntegerMod(5))([[1, 2], [3, 4]])

det функция вычисляет определитель по доменному Dom::IntegerMod(5) компонента:
det(A)
![]()
numeric::det функция с Symbolic опция вычисляет определитель следующей матрицы вместо исходного матричного A:
expr(A)
![]()
Определитель этой матрицы является целым числом:
numeric::det(A, Symbolic)
![]()
numeric::det функциональные переключатели к Symbolic опция при одном или нескольких следующих условий:
Вы используете Symbolic опция явным образом.
Входные данные содержат символьные объекты.