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