Numeric type of symbolic input
The syntax in(x,type)
expresses
the condition that x
is of the specified type
.
Express the condition that x
is of type Real
.
syms x cond = in(x,'real')
cond = in(x, 'real')
Evaluate the condition using isAlways
.
Because isAlways
cannot determine the condition,
it issues a warning and returns logical 0
(false
).
isAlways(cond)
Warning: Unable to prove 'in(x, 'real')'. ans = logical 0
Assume the condition cond
is true using assume
,
and evaluate the condition again. The isAlways
function
returns logical 1
(true
) indicating
that the condition is true.
assume(cond) isAlways(cond)
ans = logical 1
To use x
in further computations, clear its assumption recreating it using
syms
.
syms x
Functions such as solve
use in
in
output to express conditions.
Solve the equation sin(x) == 0
using solve
.
Set the option ReturnConditions
to true
to
return conditions on the solution. The solve
function
uses in
to express the conditions.
syms x [solx, params, conds] = solve(sin(x) == 0,'ReturnConditions',true)
solx = pi*k params = k conds = in(k, 'integer')
The solution is pi*k
with parameter k
under
the condition in(k,'integer')
. You can use this
condition to set an assumption for further computations. Under the
assumption, solve
returns only integer values
of k
.
assume(conds) k = solve(solx > 0, solx < 5*pi, params)
k = 1 2 3 4
To find the solutions corresponding to these values of k
,
use subs
to substitute for k
in solx
.
subs(solx,k)
ans = pi 2*pi 3*pi 4*pi
Clear the assumption on k
to use it in further
computations.
assume(params, 'clear')
Create symbolic matrix M
.
syms x y z M = sym([1.22 i x; sin(y) 3*x 0; Inf sqrt(3) sym(22/7)])
M = [ 61/50, 1i, x] [ sin(y), 3*x, 0] [ Inf, 3^(1/2), 22/7]
Use isAlways
to test if the elements of M
are
rational numbers. The in
function acts on M
element-by-element.
Note that isAlways
returns logical 0
(false
)
for statements that cannot be decided and issues a warning for those
statements.
in(M,'rational')
ans = [ in(61/50, 'rational'), in(1i, 'rational'), in(x, 'rational')] [ in(sin(y), 'rational'), in(3*x, 'rational'), in(0, 'rational')] [ in(Inf, 'rational'), in(3^(1/2), 'rational'), in(22/7, 'rational')]
isAlways(in(M,'rational'))
Warning: Unable to prove 'in(sin(y), 'rational')'. Warning: Unable to prove 'in(3*x, 'rational')'. Warning: Unable to prove 'in(x, 'rational')'. ans = 3×3 logical array 1 0 0 0 0 1 0 0 1
assume
| assumeAlso
| false
| imag
| isalways
| isequal
| isequaln
| isfinite
| isinf
| piecewise
| real
| true