logical

Check validity of equation or inequality

Description

example

logical(cond) checks whether the condition cond is valid. To test conditions that require assumptions or simplifications, use isAlways instead of logical.

Examples

Test Condition Using logical

Use logical to check if 3/5 is less than 2/3:

logical(sym(3)/5 < sym(2)/3)
ans =
  logical
   1

Test Equation Using 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

Test Multiple Conditions Using 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

Test Inequality Using 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

Compare 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

Input Arguments

collapse all

Input, specified as a symbolic equation, inequality, or a symbolic array of equations or inequalities. You also can combine several conditions by using the logical operators and, or, xor, not, or their shortcuts.

Tips

  • 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.

Introduced in R2012a