and
, _and
Логический “и”
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
b1 and b2
_and(b1, b2, …
)
b1 and b2
представляет логический and
из Булевых выражений b1
, b2
.
MuPAD® использует логику с тремя состояниями с булевыми константами TRUE
ложь
, и UNKNOWN
. Они обрабатываются можно следующим образом:
and | TRUE | FALSE | UNKNOWN |
TRUE | TRUE | FALSE | UNKNOWN |
FALSE | FALSE | FALSE | FALSE |
UNKNOWN | UNKNOWN | FALSE | UNKNOWN |
Булевы выражения могут состоять из этих констант, а также из произвольных арифметических выражений. Как правило, уравнения, такие как x = y
, и неравенства, такие как x <> y
, x < y
, и x <= y
, используются, чтобы создать Булевы выражения.
_and(b1, b2, ...)
эквивалентно b1 and b2 and ...
. Это выражение представляет TRUE
если каждое выражение оценивает к TRUE
. Это представляет FALSE
если по крайней мере одно выражение оценивает к FALSE
. Это представляет UNKNOWN
если по крайней мере одно выражение оценивает к UNKNOWN
и все другие оценивают к TRUE
.
_and()
возвращает TRUE
.
Комбинации констант TRUE
ложь
, UNKNOWN
в Булевом выражении упрощены автоматически. Однако символьные булевы подвыражения, равенства и неравенства не оценены и упрощены логическими операторами. Используйте bool
выполнять такие выражения к одной из булевых констант. Отметьте, однако, тот bool
может оценить неравенства x < y
, x <= y
и так далее, только если они состоят из количеств типа Type::Real
. Смотрите пример 2.
Используйте simplify
с опцией logic
упростить выражения, включающие символьные булевы подвыражения. Смотрите Пример 3.
Приоритеты логических операторов следующие. Если в сомнении, используйте круглые скобки, чтобы гарантировать, что выражение анализируется, как желаемый.
Оператор not
более сильная привязка, чем and
, то есть, not b1 and b2
= (not b1) and b2
.
Оператор and
более сильная привязка, чем xor
, то есть, b1 and b2 or b3
= (b1 and b2) xor b3
.
Оператор xor
более сильная привязка, чем or
, то есть, b1 xor b2 or b3
= (b1 xor b2) or b3
.
Оператор or
более сильная привязка, чем ==>
, то есть, b1 or b2 ==> b3
= (b1 or b2) ==> b3
.
Оператор ==>
более сильная привязка, чем <=>
, то есть, b1 ==> b2 <=> b3
= (b1 ==> b2) <=> b3
.
В условном контексте if
повторение
, и while
операторы, Булевы выражения выполнены через “отложенные вычисления” (см. _lazy_and
, _lazy_or
). В любом другом контексте оценены все операнды.
Комбинации булевых констант TRUE
ложь
, и UNKNOWN
упрощены автоматически до одной из констант:
TRUE and not (FALSE or TRUE)
FALSE and UNKNOWN, TRUE and UNKNOWN
Логические операторы упрощают подвыражения, которые оценивают к константам TRUE
ложь
, UNKNOWN
.
b1 or b2 and TRUE
FALSE or ((not b1) and TRUE)
b1 and (b2 or FALSE) and UNKNOWN
FALSE or (b1 and UNKNOWN) or x < 1
TRUE and ((b1 and FALSE) or (b1 and TRUE))
Однако равенства и неравенства не оценены:
(x = x) and (1 < 2) and (2 < 3) and (3 < 4)
Булева оценка осуществляется через bool
:
bool(%)
Выражения, включающие символьные булевы подвыражения, не упрощены and
, or
, not
. Упрощение нужно требовать явным образом через функциональный simplify
:
(b1 and b2) or (b1 and (not b2)) and (1 < 2)
simplify(%, logic)
Булевы функции _and
и _or
примите произвольные последовательности Булевых выражений. Следующий вызов использует isprime
чтобы проверять, являются ли все элементы данного набора главными:
set := {1987, 1993, 1997, 1999, 2001}: _and(isprime(i) $ i in set)
Следующий вызов проверяет, является ли по крайней мере одно из чисел главным:
_or(isprime(i) $ i in set)
delete set:
|
Булевы выражения |
Булево выражение.
b
, b_1
, b_2