Установите предположение на символьном объекте
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