testeq
Проверяйте математическую эквивалентность выражений
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
testeq(ex1
,options
) testeq(ex1
,ex2
,options
)
testeq(ex1, ex2)
проверки, ли выражения ex1
и ex2
математически эквивалентны.
testeq(ex1, ex2)
возвращает TRUE
если различие ex1 - ex2
может быть упрощен до нуля.
testeq
возвращает FALSE
если ex1
и ex2
достигните различных значений по крайней мере для одного выбора переменных, содержимых в них.
По умолчанию, testeq
выполняет пять случайных тестов. Если случайным образом выбранные значения переменных противоречивы с предположениями на этих переменных, или тест возвращает значение undefined
, testeq
функция выполняет дополнительный тест. Количество дополнительных тестов не может превысить количество начальных тестов. По умолчанию максимальное общее количество тестов равняется 10. Смотрите Пример 4.
Если эквивалентность ex1
и ex2
не может быть решен, testeq
возвращает UNKNOWN
.
Если только одно выражение передается testeq
, это проверяется, эквивалентно ли это выражение нулю.
testeq
использование Simplify(ex1 - ex2)
и is(ex1 - ex2 = 0)
определить его результат. Результат UNKNOWN
может быть вызван слабыми местами Simplify
и is
.
Используя опции, процесс упрощения может быть сделан более сильным за счет увеличенного времени выполнения.
Проверяйте математическую эквивалентность выражений:
testeq(sin(x)^2, 1 - cos(x)^2)
testeq(sin(2*x), 2*sin(x)*cos(x))
testeq((cos(a) + sin(a))^2, 2*(cos(PI/4 - a)^2))
Для того, чтобы быть эквивалентными, два выражения должны быть эквивалентными для всех значений, которых могут достигнуть их переменные. Для определенных значений параметра a
следующие два выражения эквивалентны, но для других значений они не; поэтому, они не эквивалентны:
testeq((cos(a) + sin(a))^2, 3*(cos(PI/4 - a)^2))
Применение expand
и rewrite
к выражению всегда производит эквивалентное выражение. Однако с настройкой по умолчанию 100
шаги для внутренней процедуры упрощения, эквивалентность не распознана в следующем примере:
f:= exp(arcsin(I*sin(x))): g:= rewrite(expand(f), ln): testeq(f, g)
После 1000
шаги, однако, выражения распознаны как являющийся эквивалентным:
testeq(f, g, Steps = 1000); delete f, g:
При попытке доказать эквивалентность двух выражений, testeq
команда запускает случайные тесты прежде, чем применить IgnoreAnalyticConstraints
. Если тесты для случайных значений идентификаторов показывают, что выражения не эквивалентны, testeq
игнорирует IgnoreAnalyticConstraints
опция и возвращает FALSE:
testeq(x^(ln(a))*x^(ln(b)) = x^(ln(a*b)), IgnoreAnalyticConstraints)
Если для данного количества попыток случайные тесты не находят неравенство между выражениями, testeq
применяет IgnoreAnalyticConstraints
опция:
testeq(ln(a) + ln(b) = ln(a*b), IgnoreAnalyticConstraints)
По умолчанию случайные тесты проверяют равенство выражений для пяти случайных множеств значений идентификаторов. Увеличение числа попыток может доказать неравенство:
testeq(ln(a) + ln(b) = ln(a*b), NumberOfRandomTests = 10, IgnoreAnalyticConstraints)
Когда testeq
выполняет тесты, это учитывает предположения на переменных, что вы задаете:
testeq(x, abs(x)) assuming x > 0
Если testeq
выбирает значения переменных, которые противоречивы с предположениями на этих переменных, это выполняет дополнительный тест. Количество тестов не может превысить 2n
, где n
исходное количество тестов, заданных NumberOfRandomTests
опция. Если testeq
выполняет 2n
тесты и все значения переменных противоречивы с предположениями на переменных, testeq
возвращает UNKNOWN
:
testeq(x, abs(x)) assuming x^2 + x + 7 = x^13 + 11
Для этого конкретного предположения MuPAD® не может найти, что выражение закрытой формы заменяет x
:
solve(x^2 + x + 7 = x^13 + 11, x)
Поэтому увеличение числа тестов не помогает testeq
решите, эквивалентны ли выражения:
testeq(x, abs(x), NumberOfRandomTests = 100) assuming x^2 + x + 7 = x^13 + 11
|
Любые выражения MuPAD |
|
Опция, заданная как Эта опция непосредственно передается |
|
Опция, заданная как Эта опция непосредственно передается |
|
Опция, заданная как Эта опция непосредственно передается Значение по умолчанию Опытный пользователь может задать ее собственную основу правила (см. |
|
Опция, заданная как Эта опция определяет число раз Значение по умолчанию |
|
Эта опция применяет чисто алгебраические упрощения в выражениях Обратите внимание на то, что случайные тесты имеют более высокий приоритет, чем |
TRUE
ложь
, или UNKNOWN