Блокноты 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])