Числовой тип символьного входа
Синтаксис in(x,type)
выражает условие, что x
является заданным type
. Выразите условие, которое x
имеет тип Real
.
syms x cond = in(x,'real')
cond = in(x, 'real')
Оцените условие используя isAlways
. Поскольку isAlways
не может определить условие, выдает предупреждение и возвращает логическое 0
(false
).
isAlways(cond)
Warning: Unable to prove 'in(x, 'real')'. ans = logical 0
Примите условие cond
является true, используя assume
, и снова оцените условие. isAlways
функция возвращает логический 1
(true
), указывающий, что условие верно.
assume(cond) isAlways(cond)
ans = logical 1
Как использовать x
в дальнейших расчетах очистить его предположение о воссоздании его с помощью syms
.
syms x
Функции, такие как solve
использовать in
в выход выразить условия.
Решить уравнение sin(x) == 0
использование solve
. Установите опцию ReturnConditions
на true
для возврата условий на решение. solve
функция использует in
для выражения условий.
syms x [solx, params, conds] = solve(sin(x) == 0,'ReturnConditions',true)
solx = pi*k params = k conds = in(k, 'integer')
Решение такое pi*k
с параметром k
при условии in(k,'integer')
. Можно использовать это условие, чтобы задать предположение для дальнейших расчетов. В соответствии с допущением, solve
возвращает только целочисленные значения k
.
assume(conds) k = solve(solx > 0, solx < 5*pi, params)
k = 1 2 3 4
Чтобы найти решения , соответствующие этим значениям k
, использование subs
для замены k
в solx
.
subs(solx,k)
ans = pi 2*pi 3*pi 4*pi
Очистите предположение о k
использовать его в дальнейших расчетах.
assume(params, 'clear')
Создайте символьную матрицу 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]
Использовать isAlways
чтобы проверить, являются ли элементы M
являются рациональными числами. in
функция действует на M
элемент за элементом. Обратите внимание, что isAlways
возвращает логический 0
(false
) для операторов, которые не могут быть определены и выдает предупреждение для этих операторов.
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