Main Content

Test equality of symbolic inputs

`isequal(`

returns logical `a,b`

)`1`

(`true`

) if `a`

and `b`

are the same
size and their contents are of equal value. Otherwise, `isequal`

returns
logical `0`

(`false`

). `isequal`

does
not consider `NaN`

(not a number) values equal.
`isequal`

recursively compares the contents of symbolic data structures
and the properties of objects. If all contents in the respective locations are equal,
`isequal`

returns logical `1`

(`true`

).

`isequal(`

returns
logical `a1,a2,...,aN`

)`1`

(`true`

) if all the
inputs `a1,a2,...,aN`

are equal.

Test numeric or symbolic inputs for equality
using `isequal`

. If you compare numeric inputs
against symbolic inputs, `isequal`

returns `0`

(`false`

)
because double and symbolic are distinct data types.

Test if `2`

and `5`

are equal.
Because you are comparing doubles, the MATLAB^{®} `isequal`

function is called. `isequal`

returns `0`

(`false`

)
as expected.

isequal(2,5)

ans = logical 0

Test if the solution of the equation `cos(x) == -1`

is `pi`

.
The `isequal`

function returns `1`

(`true`

)
meaning the solution is equal to `pi`

.

syms x sol = solve(cos(x) == -1, x); isequal(sol,sym(pi))

ans = logical 1

Compare the double and symbolic representations of `1`

. `isequal`

returns `0`

(`false`

)
because double and symbolic are distinct data types. To return `1`

(`true`

)
in this case, use `logical`

instead.

usingIsEqual = isequal(pi,sym(pi)) usingLogical = logical(pi == sym(pi))

usingIsEqual = logical 0 usingLogical = logical 1

Test if the expressions `tan(x)`

and `sin(x)/cos(x)`

are syntactically the same. The `isequal`

function returns
`0`

(`false`

) since the expressions are different and
`isequal`

does not do a mathematical comparison between the
expressions.

syms x isequal(tan(x),sin(x)/cos(x))

ans = logical 0

Rewrite the expression `tan(x)`

in terms of
`sin(x)`

and `cos(x)`

. Test if
`rewrite`

correctly rewrites `tan(x)`

as
`sin(x)/cos(x)`

. The `isequal`

function returns
`1`

(`true`

) meaning the rewritten result equals the
test expression.

f = rewrite(tan(x),'sincos'); testf = sin(x)/cos(x); isequal(f,testf)

ans = logical 1

To check whether the mathematical comparison `tan(x) == sin(x)/cos(x)`

holds for all values of `x`

, use `isAlways`

.

isAlways(tan(x) == sin(x)/cos(x))

ans = logical 1

Test vectors and matrices for equality using `isequal`

.

Test if solutions of the quadratic equation found by `solve`

are
equal to the expected solutions. `isequal`

function
returns `1`

(`true`

) meaning the
inputs are equal.

syms a b c x eqn = a*x^2 + b*x + c; Sol = solve(eqn, x); testSol = [-(b+(b^2-4*a*c)^(1/2))/(2*a); -(b-(b^2-4*a*c)^(1/2))/(2*a)]; isequal(Sol,testSol)

ans = logical 1

The Hilbert matrix is a special matrix that is difficult to invert accurately. If the inverse is accurately computed, then multiplying the inverse by the original Hilbert matrix returns the identity matrix.

Use this condition to symbolically test if the inverse of `hilb(20)`

is
correctly calculated. `isequal`

returns `1`

(`true`

)
meaning that the product of the inverse and the original Hilbert matrix
is equal to the identity matrix.

H = sym(hilb(20)); prod = H*inv(H); eye20 = sym(eye(20)); isequal(prod,eye20)

ans = logical 1

`NaN`

Compare three vectors containing `NaN`

(not
a number). `isequal`

returns logical `0`

(`false`

)
because `isequal`

does not treat `NaN`

values
as equal to each other.

syms x A1 = [x NaN NaN]; A2 = [x NaN NaN]; A3 = [x NaN NaN]; isequal(A1, A2, A3)

ans = logical 0

When your inputs are not symbolic objects, the MATLAB

`isequal`

function is called. If one of the arguments is symbolic, then all other arguments are converted to symbolic objects before comparison, and the symbolic`isequal`

function is called.`isequal(a,b)`

checks if`a`

and`b`

are the same size and their contents are syntactically the same expression. To check whether the mathematical comparison`a == b`

holds for all values of variables in`a`

and`b`

, use`isAlways(a == b)`

.