assumeAlso
Add assumption on symbolic object
Description
Examples
Assumptions Specified as Relations
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 482) 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')
Assumptions Specified as Sets
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 an
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')
Assumptions on Matrix Elements
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')
Contradicting Assumptions
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 172) Inconsistent assumptions. Error in sym/assumeAlso (line 627) 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')
Input Arguments
Tips
assumeAlso
keeps all assumptions previously set on the symbolic variables. To replace previous assumptions with the new one, useassume
.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 whether5 + i
is greater or less than2 + 3*i
.) For example,x > i
becomesx > 0
, andx <= 3 + 2*i
becomesx <= 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 operatorsand
,or
,xor
,not
,all
,any
, or their shortcuts.
Version History
Introduced in R2012a