<=
, >=
, _leequal
Неравенства, “меньше чем или равные” и “больше, чем или равный”
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Для <=
в MATLAB® смотрите le
.
x <= y x >= y _leequal(x
,y
)
x <= y
и x >= y
задают неравенства.
x <= y
представляет булев оператор “x
, меньше чем или равно y
”. Это эквивалентно вызову функции _leequal(x,y)
.
x >= y
представляет булев оператор “x
, больше, чем или равен y
”. Это всегда преобразовывается в y <= x
, который эквивалентен вызову функции _leequal(y,x)
.
Эти операторы возвращают символьные Булевы выражения. Если только вещественные числа Type::Real
включены, эти выражения могут быть выполнены к TRUE
или FALSE
функциональным bool
. Они также служат условиями управления в if
, repeat
и операторах while
. Для интервалов с плавающей точкой эти операторы интерпретированы как “строго меньше чем или равные” и “строго больше, чем или равные”. Смотрите Пример 2. Далее, Булевы выражения могут быть выполнены к TRUE
, FALSE
или UNKNOWN
функциональным is
. Тесты с помощью is
могут также быть применены к постоянным символьным выражениям. Смотрите Пример 4.
bool
также обрабатывает неравенства включающие символьные строки. Это сравнивает их относительно лексикографического упорядоченного расположения.
Неравенства имеют два операнда: левая сторона и правая сторона. Используйте lhs
и rhs
, чтобы извлечь эти операнды.
Операторы <=
и >=
производят символьные неравенства. Они могут быть оценены к TRUE
или FALSE
функциональным bool
, если только вещественные числа типа Type::Real
(целые числа, rationals, и плавания) включены:
1.5 <= 3/2; bool(%)
Сравнение интервалов интерпретировано как “строгое”, то есть, все комбинации чисел в интервалах должны выполнить отношение:
bool(0...1 <= 2...3), bool(0...2 <= 1...3), bool(0...1 <= 1...2)
Сравните символьные строки:
if "text" <= "t"."e"."x"."t"."book" then "yes" else "no" end
bool("a" >= "b")
Обратите внимание на то, что bool
не выполняет символьное упрощение и поэтому не может обработать некоторые комбинации символьных выражений; функциональный is
действительно выполняет символьное упрощение:
bool(sqrt(6) <= sqrt(2)*sqrt(3))
Error: Unable to evaluate to Boolean. [_leequal]
is(sqrt(6) <= sqrt(2)*sqrt(3))
Неравенства являются допустимыми входными объектами для системной функции solve
:
solve(x^2 - 2*x >= 3, x)
Оператор <=
может быть перегружен пользовательскими областями:
myDom := newDomain("myDom"): myDom::print := x -> extop(x):
Не перегружая _leequal
, элементы этой области не могут быть сравнены:
x := new(myDom, PI): y := new(myDom, sqrt(10)): bool(x <= y)
Error: Unable to evaluate to Boolean. [_leequal]
Теперь, slot"_less"
задан. Это называется, когда неравенство типа "_less"
оценено bool
. Слот сравнивает приближения с плавающей точкой, если аргументы не имеют типа Type::Real
:
myDom::_leequal := proc(x, y) begin x := extop(x, 1): y := extop(y, 1): if not testtype(x, Type::Real) then x := float(x): if not testtype(x, Type::Real) then error("cannot compare") end_if end_if: if not testtype(y, Type::Real) then y := float(y): if not testtype(y, Type::Real) then error("cannot compare") end_if end_if: bool(x <= y) end_proc:
x, y, bool(x <= y), bool(x >= y)
bool(new(myDom, I) <= new(myDom, PI))
Error: cannot compare [myDom::_leequal]
delete myDom, x, y:
|
Произвольные объекты MuPAD® |
Выражение типа "_leequal"
.
x, y