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

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

Для просмотра документации необходимо авторизоваться на сайте