Установите предположение на символьном объекте
assume(condition)assume(expr,set)assume(expr,'clear')assume( состояния, что condition)condition допустим. assume не является дополнением. Вместо этого это автоматически удаляет все предыдущие предположения на переменных в condition.
Установите предположение с помощью связанного синтаксиса.
| Примите, что ‘x’ | Синтаксис |
|---|---|
| действительный | assume(x,'real') |
| рациональный | assume(x,'rational') |
| положительный | assume(x,'positive') |
| положительное целое число | assume(x,{'positive','integer'}) |
| меньше чем-1 или больше, чем 1 | assume(x<-1 | x>1) |
| целое число от 2 до 10 | assume(in(x,'integer') & x>2 & x<10) |
| не целое число | assume(~in(z,'integer')) |
| не равняются 0 | assume(x ~= 0) |
| даже | assume(x/2,'integer') |
| нечетный | assume((x-1)/2,'integer') |
| от 0 до 2π | assume(x>0 & x<2*pi) |
| кратное π | assume(x/pi,'integer') |
Примите, что x даже путем предположения, что x/2 является целым числом. Примите, что x нечетен путем предположения, что (x-1)/2 является целым числом.
Примите, что x ровен.
syms x assume(x/2,'integer')
Найдите все четные числа между 0 и 10 с помощью solve.
solve(x>0,x<10,x)
ans = 2 4 6 8
Примите, что x нечетен. assume не является дополнением, но вместо этого автоматически удаляет предыдущее предположение in(x/2, 'integer').
assume((x-1)/2,'integer') solve(x>0,x<10,x)
ans = 1 3 5 7 9
Очистите предположения на x для дальнейших вычислений.
assume(x,'clear')Последовательные команды assume не устанавливают несколько предположений. Вместо этого каждая команда assume удаляет предыдущие предположения и устанавливает новые предположения. Установите несколько предположений при помощи assumeAlso или оператора &.
Примите x > 5 и затем x < 10 при помощи assume. Используйте assumptions, чтобы проверять, что только второе предположение существует, потому что assume удалил первое предположение при установке второго.
syms x assume(x > 5) assume(x < 10) assumptions
ans = x < 10
Примите первое предположение в дополнение к второму при помощи assumeAlso. Проверяйте, что существуют оба предположения.
assumeAlso(x > 5) assumptions
ans = [ 5 < x, x < 10]
Очистите предположения на x.
assume(x,'clear')
Примите оба условия с помощью оператора &. Проверяйте, что существуют оба предположения.
assume(x>5 & x<10) assumptions
ans = [ 5 < x, x < 10]
Очистите предположения на x для будущих вычислений.
assume(x,'clear')
Вычислите неопределенный интеграл с и без предположения на символьном параметре a.
Используйте assume, чтобы установить предположение, что a не равняется -1.
syms x a assume(a ~= -1)
Вычислите этот интеграл.
int(x^a,x)
ans = x^(a + 1)/(a + 1)
Теперь, очистите предположение и вычислите тот же интеграл. Без предположений int возвращает этот кусочный результат.
assume(a,'clear') int(x^a, x)
ans = piecewise(a == -1, log(x), a ~= -1, x^(a + 1)/(a + 1))
Используйте предположения, чтобы ограничить возвращенные решения уравнения к конкретному интервалу.
Решите это уравнение.
syms x eqn = x^5 - (565*x^4)/6 - (1159*x^3)/2 - (2311*x^2)/6 + (365*x)/2 + 250/3; solve(eqn, x)
ans = -5 -1 -1/3 1/2 100
Используйте assume, чтобы ограничить решения интервала –1 <= x <= 1.
assume(-1 <= x <= 1) solve(eqn, x)
ans = -1 -1/3 1/2
Установите несколько предположений одновременно при помощи логических операторов and, or, xor, not или их ярлыки. Например, все отрицательные решения меньше, чем -1 и все положительные решения, больше, чем 1.
assume(x < -1 | x > 1) solve(eqn, x)
ans = -5 100
Для дальнейших вычислений очистите предположения.
assume(x,'clear')
Установка соответствующих предположений может привести к более простым выражениям.
Попытайтесь упростить выражение sin(2*pi*n) с помощью simplify. Функция simplify не может упростить вход и возвращает вход как есть.
syms n simplify(sin(2*n*pi))
ans = sin(2*pi*n)
Примите, что n является целым числом. simplify теперь упрощает выражение.
assume(n,'integer') simplify(sin(2*n*pi))
ans = 0
Для дальнейших вычислений очистите предположение.
assume(n,'clear')
Установите предположение на символьном выражении.
Можно установить предположения не только на переменных, но также и по выражениям. Например, вычислите этот интеграл.
syms x f = 1/abs(x^2 - 1); int(f,x)
ans = -atanh(x)/sign(x^2 - 1)
Установите предположение x 2 – 1> 0 приводить к более простому результату.
assume(x^2 - 1 > 0) int(f,x)
ans = -atanh(x)
Для дальнейших вычислений очистите предположение.
assume(x,'clear')
Докажите отношения, которые содержат при определенных обстоятельствах первым принятием условий и затем использованием isAlways.
Докажите, что sin(pi*x) никогда не равен 0, когда x не является целым числом. Функция isAlways возвращает логический 1 (true), что означает, что условие содержит для всех значений x под предположениями набора.
syms x assume(~in(x,'integer')) isAlways(sin(pi*x) ~= 0)
ans = logical 1
Установите предположения на всех элементах матрицы с помощью sym.
Создайте символьный матричный A 2 на 2 с автоматически сгенерированными элементами. Задайте set как rational.
A = sym('A',[2 2],'rational')A = [ A1_1, A1_2] [ A2_1, A2_2]
Возвратите предположения на элементах A с помощью assumptions.
assumptions(A)
ans = [ in(A1_1, 'rational'), in(A1_2, 'rational'),... in(A2_1, 'rational'), in(A2_2, 'rational')]
Можно также использовать assume, чтобы установить предположения на всех элементах матрицы. Теперь, примите, что все элементы A имеют положительные рациональные значения. Установите предположения как ячейку векторов символов {'positive','rational'}.
assume(A,{'positive','rational'})Возвратите предположения на элементах A с помощью assumptions.
assumptions(A)
ans = [ 0 < A1_1, 0 < A1_2, 0 < A2_1, 0 < A2_2,... in(A1_1, 'rational'), in(A1_2, 'rational'),... in(A2_1, 'rational'), in(A2_2, 'rational')]
Для дальнейших вычислений очистите предположения.
assume(A,'clear')
assume удаляет любые предположения, ранее установленные на символьных переменных. Чтобы сохранить предыдущие предположения при добавлении предположения, используйте assumeAlso.
Когда вы удаляете символьную переменную из рабочей области MATLAB® с помощью clear, все предположения, что вы устанавливаете на той переменной, остаются в символьном механизме. Если вы позже объявляете новую символьную переменную с тем же именем, это наследовало эти предположения.
Чтобы очистить весь набор предположений на символьной переменной var, используйте эту команду.
assume(var,'clear')Чтобы удалить все объекты в рабочем пространстве MATLAB и закрыть механизм Symbolic Math Toolbox™, сопоставленный с рабочим пространством MATLAB, очищающим все предположения, используйте эту команду:
clear allКомплексные числа проектов MATLAB в неравенствах к вещественной оси. Если condition является неравенством, то обе стороны неравенства должны представлять действительные значения. Неравенства с комплексными числами недопустимы, потому что поле комплексных чисел не является упорядоченным полем. (Невозможно сказать, больше ли 5 + i или меньше, чем 2 + 3*i.), Например, x > i становится x > 0, и x <= 3 + 2*i становится x <= 3.
Тулбокс не поддерживает предположения на символьных функциях. Сделайте предположения на символьных переменных и выражениях вместо этого.
Когда вы создаете новую символьную переменную с помощью sym и syms, также можно установить предположение, что переменная является действительной, положительной, целочисленной, или рациональной.
a = sym('a','real'); b = sym('b','rational'); c = sym('c','positive'); d = sym('d','positive'); e = sym('e',{'positive','integer'});
или более эффективно
syms a real syms b rational syms c d positive syms e positive integer
and | assumeAlso | assumptions | in | isAlways | not | or | piecewise | sym | syms