Main Content

Check validity of equation or inequality

`logical`

Use `logical`

to check if `3/5`

is
less than `2/3`

:

logical(sym(3)/5 < sym(2)/3)

ans = logical 1

`logical`

Check the validity of this equation using `logical`

.
Without an additional assumption that `x`

is nonnegative,
this equation is invalid.

syms x logical(x == sqrt(x^2))

ans = logical 0

Use `assume`

to set an
assumption that `x`

is nonnegative. Now the expression `sqrt(x^2)`

evaluates
to `x`

, and `logical`

returns `1`

:

assume(x >= 0) logical(x == sqrt(x^2))

ans = logical 1

Note that `logical`

typically ignores assumptions
on variables.

syms x assume(x == 5) logical(x == 5)

ans = logical 0

To compare expressions taking into account assumptions on their
variables, use `isAlways`

:

isAlways(x == 5)

ans = logical 1

For further computations, clear the assumption on `x`

by recreating it
using `syms`

:

syms x

`logical`

Check if the following two conditions are both valid. To check
if several conditions are valid at the same time, combine these conditions
by using the logical operator `and`

or its shortcut `&`

.

syms x logical(1 < 2 & x == x)

ans = logical 1

`logical`

Check this inequality. Note that `logical`

evaluates
the left side of the inequality.

logical(sym(11)/4 - sym(1)/2 > 2)

ans = logical 1

`logical`

also evaluates more complicated symbolic
expressions on both sides of equations and inequalities. For example,
it evaluates the integral on the left side of this equation:

syms x logical(int(x, x, 0, 2) - 1 == 1)

ans = logical 1

`logical`

and `isAlways`

Do not use `logical`

to check equations and
inequalities that require simplification or mathematical transformations.
For such equations and inequalities, `logical`

might
return unexpected results. For example, `logical`

does
not recognize mathematical equivalence of these expressions:

syms x logical(sin(x)/cos(x) == tan(x))

ans = logical 0

`logical`

also does not realize that this inequality
is invalid:

logical(sin(x)/cos(x) ~= tan(x))

ans = logical 1

To test the validity of equations and inequalities that require
simplification or mathematical transformations, use `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

For symbolic equations,

`logical`

returns logical`1`

(`true`

) only if the left and right sides are identical. Otherwise, it returns logical`0`

(`false`

).For symbolic inequalities constructed with

`~=`

,`logical`

returns logical`0`

(`false`

) only if the left and right sides are identical. Otherwise, it returns logical`1`

(`true`

).For all other inequalities (constructed with

`<`

,`<=`

,`>`

, or`>=`

),`logical`

returns logical`1`

if it can prove that the inequality is valid and logical`0`

if it can prove that the inequality is invalid. If`logical`

cannot determine whether such inequality is valid or not, it throws an error.`logical`

evaluates expressions on both sides of an equation or inequality, but does not simplify or mathematically transform them. To compare two expressions applying mathematical transformations and simplifications, use`isAlways`

.`logical`

typically ignores assumptions on variables.

`assume`

| `assumeAlso`

| `assumptions`

| `in`

| `isAlways`

| `isequal`

| `isequaln`

| `isfinite`

| `isinf`

| `isnan`

| `sym`

| `syms`