This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

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.

Use Assumptions on Symbolic Variables

Default Assumption

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:

ans =
Empty sym: 1-by-0

Set Assumptions

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:


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.

Check Existing Assumptions

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:


To see all assumptions used for all symbolic variables in the MATLAB workspace, use assumptions without input arguments:


For details, see Check Assumptions Set On Variables.

Delete Symbolic Objects and Their Assumptions

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

syms x

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 x2 + 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:

  1. To clear the assumption, enter

    syms x
  2. To delete the symbolic object, enter

    clear x

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

Related Topics