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
, FALSE
или UNKNOWN