Числовой тип символьного ввода
Синтаксис 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