Note: This page has been translated by MathWorks. Please click here

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

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

Add assumption on symbolic object

`assumeAlso(condition)`

`assumeAlso(expr,set)`

Set assumptions using `assume`

.
Then add more assumptions using `assumeAlso`

.

Solve this equation assuming that both `x`

and `y`

are
nonnegative.

syms x y assume(x >= 0 & y >= 0) s = solve(x^2 + y^2 == 1, y)

Warning: Solutions are valid under the following conditions: x <= 1; x == 1. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'. > In solve>warnIfParams (line 508) In solve (line 357) s = (1 - x)^(1/2)*(x + 1)^(1/2) -(1 - x)^(1/2)*(x + 1)^(1/2)

The solver warns that both solutions hold only under certain conditions.

Add the assumption that `x < 1`

. To add
a new assumption without removing the previous one, use `assumeAlso`

.

assumeAlso(x < 1)

Solve the same equation under the expanded set of assumptions.

s = solve(x^2 + y^2 == 1, y)

s = (1 - x)^(1/2)*(x + 1)^(1/2)

For further computations, clear the assumptions.

assume([x y],'clear')

Set assumptions using `syms`

.
Then add more assumptions using `assumeAlso`

.

When declaring the symbolic variable `n`

, set
an assumption that `n`

is positive.

syms n positive

Using `assumeAlso`

, add more assumptions on
the same variable `n`

. For example, assume also that
n is and integer.

assumeAlso(n,'integer')

Return all assumptions affecting variable `n`

using `assumptions`

. In this case, `n`

is
a positive integer.

assumptions(n)

ans = [ 0 < n, in(n, 'integer')]

For further computations, clear the assumptions.

assume(n,'clear')

Use the assumption on a matrix as a shortcut for setting the same assumption on each matrix element.

Create the 3-by-3 symbolic matrix `A`

with
auto-generated elements. To assume every element of `A`

is
rational, specify `set`

as `'rational'`

.

A = sym('A',[3 3],'rational')

A = [ A1_1, A1_2, A1_3] [ A2_1, A2_2, A2_3] [ A3_1, A3_2, A3_3]

Now, add the assumption that each element of `A`

is
greater than 1.

assumeAlso(A > 1)

Return assumptions affecting elements of `A`

using `assumptions`

:

assumptions(A)

ans = [ 1 < A1_1, 1 < A1_2, 1 < A1_3, 1 < A2_1, 1 < A2_2, 1 < A2_3,... 1 < A3_1, 1 < A3_2, 1 < A3_3,... in(A1_1, 'rational'), in(A1_2, 'rational'), in(A1_3, 'rational'),... in(A2_1, 'rational'), in(A2_2, 'rational'), in(A2_3, 'rational'),... in(A3_1, 'rational'), in(A3_2, 'rational'), in(A3_3, 'rational')]

For further computations, clear the assumptions.

assume(A,'clear')

When you add assumptions, ensure that the new
assumptions do not contradict the previous assumptions. Contradicting
assumptions can lead to inconsistent and unpredictable results. In
some cases, `assumeAlso`

detects conflicting assumptions
and issues an error.

Try to set contradicting assumptions. `assumeAlso`

returns
an error.

syms y assume(y,'real') assumeAlso(y == i)

Error using mupadengine/feval (line 163) Assumptions are inconsistent. Error in sym/assumeAlso (line 551) feval(symengine, 'assumeAlso', cond);

`assumeAlso`

does not guarantee to detect contradicting
assumptions. For example, assume that `y`

is nonzero,
and both `y`

and `y*i`

are real
values.

syms y assume(y ~= 0) assumeAlso(y,'real') assumeAlso(y*i,'real')

Return all assumptions affecting variable `y`

using `assumptions`

:

assumptions(y)

ans = [ in(y, 'real'), in(y*1i, 'real'), y ~= 0]

For further computations, clear the assumptions.

assume(y,'clear')

`assumeAlso`

keeps all assumptions previously set on the symbolic variables. To replace previous assumptions with the new one, use`assume`

.When adding assumptions, always check that a new assumption does not contradict the existing assumptions. To see existing assumptions, use

`assumptions`

. Symbolic Math Toolbox™ does not guarantee to detect conflicting assumptions. Conflicting assumptions can lead to unpredictable and inconsistent results.When you delete a symbolic variable from the MATLAB

^{®}workspace using`clear`

, all assumptions that you set on that variable remain in the symbolic engine. If later you declare a new symbolic variable with the same name, it inherits these assumptions.To clear all assumptions set on a symbolic variable

`var`

use this command.`assume(var,'clear')`

To clear all objects in the MATLAB workspace and close the Symbolic Math Toolbox engine associated with the MATLAB workspace resetting all its assumptions, use this command.

`clear all`

MATLAB projects complex numbers in inequalities to the real axis. If

`condition`

is an inequality, then both sides of the inequality must represent real values. Inequalities with complex numbers are invalid because the field of complex numbers is not an ordered field. (It is impossible to tell whether`5 + i`

is greater or less than`2 + 3*i`

.) For example,`x > i`

becomes`x > 0`

, and`x <= 3 + 2*i`

becomes`x <= 3`

.The toolbox does not support assumptions on symbolic functions. Make assumptions on symbolic variables and expressions instead.

Instead of adding assumptions one by one, you can set several assumptions in one function call. To set several assumptions, use

`assume`

and combine these assumptions by using the logical operators`and`

,`or`

,`xor`

,`not`

,`all`

,`any`

, or their shortcuts.

Was this topic helpful?