Add assumption on symbolic object

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: The solutions are valid under the following conditions: x <= 1; x == 1. To include parameters and conditions in the solution, specify the 'ReturnConditions' option. > In solve>warnIfParams at 514 In solve at 356 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 = [ in(n, 'integer'), 0 < n]

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 = [ 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'),... 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]

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'), y ~= 0, in(y*1i, 'real')]

For further computations, clear the assumptions.

assume(y,'clear')

Was this topic helpful?