Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Предположим, что вы хотите проверить решения этого полиномиального уравнения:
equation := x^3 + 4 = 0: solution := solve(equation)
Чтобы проверить правильность возвращенных решений, замените решениями в исходное уравнение. Чтобы заменить результатами, данными в форме уравнений, оцените исходные уравнения в точках решения. Используйте evalAt
или вертикальную панель |
как ярлык. Для первого решения команда возвращает идентичность:
equation | solution[1]
Чтобы проверять, что левая сторона уравнения равна правой стороне, используйте команду testeq
:
testeq(equation | solution[1])
Для второго решения evalAt
возвращает уравнение с неупрощенной левой стороной. Во многих случаях MuPAD® автоматически не упрощает выражения, например:
equation | solution[2];
testeq
упрощает выражения с обеих сторон уравнения:
testeq(equation | solution[2])
Как альтернатива оценке в точке, используйте команду subs
, чтобы заменить решением в исходное уравнение:
equation := x^3 + 4 = 0: solution := solve(equation); testeq(subs(equation, solution[1])); testeq(subs(equation, solution[2])); testeq(subs(equation, solution[3]))
Чтобы проверить решения системы уравнений, протестируйте каждое уравнение отдельно:
equations := {x^2 + 2*y = 3, 4*x^2 + 5*y = 6}: solutions := solve(equations, {x, y}); testeq((equations|solutions[1])[1]); testeq((equations|solutions[1])[2]); testeq((equations|solutions[2])[1]); testeq((equations|solutions[2])[2])
Предположим, что вы хотите проверить решения этого тригонометрического уравнения:
equation := sin(x)/x = 0: solution := solve(equation, x)
Чтобы проверить результаты, оцените исходное уравнение в точках решения. Оценка в точке требует решения быть в форме уравнения. Если у вас есть решение в форме членства, evalAt
возвращает ошибку:
equation | op(solution)
Error: Equation expected.
Вы не можете использовать выражение x = solution
непосредственно, потому что solution
представлен набором. Этот набор содержит решение для переменной x
, независимая переменная k
и условие на переменной k
:
op(solution)
Извлеките решение для x
, переменной k
и условий на переменной k
из набора. MuPAD возвращает переменную k
и ее условия как списки. Используйте дополнительные квадратные скобки, чтобы извлечь k
и условия из списков:
op(solution)[1]; op(solution)[2][1]; op(solution)[3][1]
Теперь оцените исходное уравнение в точках решения x = π k при условиях для k
:
testeq(equation | x = op(solution)[1]) assuming op(solution)[2][1] in op(solution)[3][1]
Также используйте команду subs
, чтобы заменить решением в исходное уравнение:
testeq(subs(equation, x = op(solution)[1])) assuming op(solution)[2][1] in op(solution)[3][1]
IgnoreAnalyticConstraints
Если вы проверяете решения уравнения или системы, решенной с опцией IgnoreAnalyticConstraints
, testeq
может возвратить FALSE
или UNKNOWN
, например:
equation := ln(x) + ln(x + 10) = ln(y): solutions := solve(equation, x, IgnoreAnalyticConstraints); testeq(subs(equation, x = solutions[1])); testeq(subs(equation, x = solutions[2]))
Когда вы решаете уравнение, неравенство или систему с помощью опции IgnoreAnalyticConstraints
, решатель использует дополнительный набор упрощенных математических правил. Эти правила намеренно обменивают математическую строгость и правильность для простоты результатов. Несмотря на то, что эта опция часто приводит к самому практическому и ожидаемым результатам, она также может привести к неправильным результатам. Для ряда правил применяется IgnoreAnalyticConstraints
, смотрите страницу справки команды solve
.
Чтобы проверить такие решения, попытайтесь использовать ту же опцию IgnoreAnalyticConstraints
для testeq
. Когда вы будете использовать эту опцию, команда testeq
не гарантирует, что решения правильны везде на комплексной плоскости. Команда проверяет, что решения правильны для значений параметров, для которых правила, примененные IgnoreAnalyticConstraints
, допустимы:
testeq(subs(equation, x = solutions[1]), IgnoreAnalyticConstraints); testeq(subs(equation, x = solutions[2]), IgnoreAnalyticConstraints)
Команда testeq
не проверяла оба решения. При попытке доказать эквивалентность двух выражений, testeq
запускает случайные тесты прежде, чем применить IgnoreAnalyticConstraints
. Если тесты для случайных значений идентификаторов показывают, что выражения не эквивалентны, testeq
игнорирует опцию IgnoreAnalyticConstraints
и возвращает FALSE
. Чтобы подавить запускающие случайные тесты, обнулите количество этих тестов:
testeq(subs(equation, x = solutions[2]), NumberOfRandomTests = 0, IgnoreAnalyticConstraints)
Проверка числовых результатов, возвращенных решателем с помощью IgnoreAnalyticConstraints
, не требует использования той же опции. Замените числовыми результатами в исходные уравнения и вызовите testeq
, чтобы доказать эквивалентность выражений с обеих сторон уравнений:
equation := x^(11/2) = 1: solution := solve(equation, IgnoreAnalyticConstraints); testeq(equation | solution[1])