Проверяйте валидность уравнения или неравенства
logical
Использование logical
проверить, 3/5
ли меньше
2/3
:
logical(sym(3)/5 < sym(2)/3)
ans = logical 1
logical
Проверяйте валидность этого уравнения, используя logical
. Без дополнительного предположения, что x
неотрицательно, это уравнение недопустимо.
syms x logical(x == sqrt(x^2))
ans = logical 0
Использовать assume
чтобы задать предположение, что x
неотрицательная. Теперь выражение sqrt(x^2)
вычисляет, чтобы x
, и logical
возвращает 1
:
assume(x >= 0) logical(x == sqrt(x^2))
ans = logical 1
Обратите внимание, что logical
обычно игнорирует допущения к переменным.
syms x assume(x == 5) logical(x == 5)
ans = logical 0
Чтобы сравнить выражения с учетом допущений по их переменным, используйте isAlways
:
isAlways(x == 5)
ans = logical 1
Для дальнейших расчетов очистите предположение о x
путем воссоздания его с помощью syms
:
syms x
logical
Проверьте, действительны ли оба следующих условия. Чтобы проверить, действительны ли несколько условий одновременно, объедините эти условия с помощью логического оператора and
или его ярлык &
.
syms x logical(1 < 2 & x == x)
ans = logical 1
logical
Проверяйте это неравенство. Обратите внимание, что logical
оценивает левую часть неравенства.
logical(sym(11)/4 - sym(1)/2 > 2)
ans = logical 1
logical
также оценивает более сложные символьные выражения с обеих сторон уравнений и неравенств. Для примера он оценивает интеграл в левой части этого уравнения:
syms x logical(int(x, x, 0, 2) - 1 == 1)
ans = logical 1
logical
и isAlways
Не используйте logical
проверить уравнения и неравенства, которые требуют упрощения или математических преобразований. Для таких уравнений и неравенств logical
может привести к непредвиденным результатам. Для примера, logical
не распознает математическую эквивалентность этих выражений:
syms x logical(sin(x)/cos(x) == tan(x))
ans = logical 0
logical
также не понимает, что это неравенство недопустимо:
logical(sin(x)/cos(x) ~= tan(x))
ans = logical 1
Чтобы проверить валидность уравнений и неравенств, которые требуют упрощения или математических преобразований, используйте isAlways
:
isAlways(sin(x)/cos(x) == tan(x))
ans = logical 1
isAlways(sin(x)/cos(x) ~= tan(x))
Warning: Unable to prove 'sin(x)/cos(x) ~= tan(x)'. ans = logical 0
Для символьных уравнений, logical
возвращает логический 1
(true
) только если левая и правая стороны идентичны. В противном случае возвращается логический 0
(false
).
Для символьных неравенств, построенных с ~=
, logical
возвращает логический 0
(false
) только если левая и правая стороны идентичны. В противном случае возвращается логический 1
(true
).
Для всех других неравенств (построенных с <
, <=
, >
, или >=
), logical
возвращает логический 1
если это может доказать, что неравенство является допустимым и логическим 0
если это может доказать, что неравенство недопустимо. Если logical
не может определить, является ли такое неравенство допустимым или нет, это выдает ошибку.
logical
оценивает выражения с обеих сторон уравнения или неравенства, но не упрощает или математически не преобразует их. Чтобы сравнить два выражения, применяющие математические преобразования и упрощения, используйте isAlways
.
logical
обычно игнорирует допущения к переменным.
assume
| assumeAlso
| assumptions
| in
| isAlways
| isequal
| isequaln
| isfinite
| isinf
| isnan
| sym
| syms