Результаты испытаний

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