Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

In Symbolic Math
Toolbox™, symbolic variables are complex
variables by default. For example, if you declare `z`

as
a symbolic variable using

syms z

then MATLAB^{®} assumes that `z`

is a complex
variable. You can always check if a symbolic variable is assumed to
be complex or real by using `assumptions`

.
If `z`

is complex, `assumptions(z)`

returns
an empty symbolic object:

assumptions(z)

ans = Empty sym: 1-by-0

To set an assumption on a symbolic variable, use the `assume`

function. For example, assume
that the variable `x`

is nonnegative:

syms x assume(x >= 0)

`assume`

replaces all previous assumptions
on the variable with the new assumption. If you want to add a new
assumption to the existing assumptions, use `assumeAlso`

.
For example, add the assumption that `x`

is also
an integer. Now the variable `x`

is a nonnegative
integer:

assumeAlso(x,'integer')

`assume`

and `assumeAlso`

let
you state that a variable or an expression belongs to one of these
sets: integers, positive numbers, rational numbers, and real numbers.

Alternatively, you can set an assumption while declaring a symbolic
variable using `sym`

or `syms`

.
For example, create the real symbolic variables `a`

and `b`

,
and the positive symbolic variable `c`

:

a = sym('a', 'real'); b = sym('b', 'real'); c = sym('c', 'positive');

or more efficiently:

syms a b real syms c positive

The assumptions that you can assign to a symbolic object with `sym`

or `syms`

are
real, rational, integer and positive.

To see all assumptions set on a symbolic variable, use the `assumptions`

function with the name of
the variable as an input argument. For example, this command returns
the assumptions currently used for the variable `x`

:

assumptions(x)

To see all assumptions used for all symbolic variables in the MATLAB workspace,
use `assumptions`

without input arguments:

assumptions

For details, see Check Assumptions Set On Variables.

Symbolic objects and their assumptions are stored separately.
When you set an assumption that `x`

is real using

syms x assume(x,'real')

you actually create a symbolic object `x`

and
the assumption that the object is real. The object is stored in the MATLAB workspace,
and the assumption is stored in the symbolic engine. When you delete
a symbolic object from the MATLAB workspace using

clear x

the assumption that `x`

is real stays in the symbolic engine. If you declare
a new symbolic variable `x`

later using `sym`

, it
inherits the assumption that `x`

is real instead of getting a
default assumption. If later you solve an equation and simplify an expression with
the symbolic variable `x`

, you could get incomplete results.

If you declare a variable using `syms`

, existing assumptions
are cleared. If you declare a variable using `sym`

, existing
assumptions are not cleared.

For example, the assumption that `x`

is real causes the
polynomial `x`

^{2} + 1 to have no
roots:

syms x real clear x x = sym('x'); solve(x^2 + 1 == 0, x)

ans = Empty sym: 0-by-1

The complex roots of this polynomial disappear because the symbolic
variable `x`

still has the assumption that `x`

is
real stored in the symbolic engine. To clear the assumption, enter

syms x

After you clear the assumption, the symbolic object stays in the MATLAB workspace. If you want to remove both the symbolic object and its assumption, use two commands:

To clear the assumption, enter

`syms x`

To delete the symbolic object, enter

`clear x`

For details on clearing symbolic variables, see Clear Assumptions and Reset the Symbolic Engine.