Блокноты 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
опция явным образом.
Входные данные содержат символьные объекты.