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. Они обрабатываются можно следующим образом:

andTRUEFALSEUNKNOWN
TRUETRUEFALSEUNKNOWN
FALSEFALSEFALSEFALSE
UNKNOWNUNKNOWNFALSEUNKNOWN

Булевы выражения могут состоять из этих констант, а также из произвольных арифметических выражений. Как правило, уравнения, такие как 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). В любом другом контексте оценены все операнды.

Примеры

Пример 1

Комбинации булевых констант TRUEложь, и UNKNOWN упрощены автоматически до одной из констант:

TRUE and not (FALSE or TRUE)

FALSE and UNKNOWN, TRUE and UNKNOWN

Пример 2

Логические операторы упрощают подвыражения, которые оценивают к константам 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(%)

Пример 3

Выражения, включающие символьные булевы подвыражения, не упрощены and, or, not. Упрощение нужно требовать явным образом через функциональный simplify:

(b1 and b2) or (b1 and (not b2)) and (1 < 2)

simplify(%, logic)

Пример 4

Булевы функции _and и _or примите произвольные последовательности Булевых выражений. Следующий вызов использует isprime чтобы проверять, являются ли все элементы данного набора главными:

set := {1987, 1993, 1997, 1999, 2001}: 
_and(isprime(i) $ i in set)

Следующий вызов проверяет, является ли по крайней мере одно из чисел главным:

_or(isprime(i) $ i in set)

delete set:

Параметры

b1, b2, …

Булевы выражения

Возвращаемые значения

Булево выражение.

Перегруженный

b, b_1, b_2

Смотрите также

Функции MuPAD