assume

Установите допущение на символьный объект

Описание

пример

assume(condition) утверждает, что condition является допустимым. assume не является аддитивной. Вместо этого он автоматически удаляет все предыдущие предположения о переменных в condition.

пример

assume(expr,set) утверждает, что expr принадлежит set. assume удаляет предыдущие допущения для переменных в expr.

пример

assume(expr,'clear') очищает все допущения для всех переменных в expr.

Примеры

Общие допущения

Установите допущение с помощью связанного синтаксиса.

Предположим, что «x» естьСинтаксис
реальныйassume(x,'real')
рациональныйassume(x,'rational')
положительныйassume(x,'positive')
положительное целое числоassume(x,{'positive','integer'})
меньше -1 или больше 1assume(x<-1 | x>1)
целое число от 2 до 10assume(in(x,'integer') & x>2 & x<10)
не целое числоassume(~in(z,'integer'))
не равно 0assume(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.

Создайте символьную матрицу 2 на 2 A с автоматически сгенерированными элементами. Задайте 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')

Входные параметры

свернуть все

Оператор допущения, заданный как символьное выражение, уравнение, отношение или вектор или матрица символьных выражений, уравнений или отношений. Можно также объединить несколько допущений при помощи логических операторов and, or, xor, notили их ярлыки.

Выражение для задания допущения, заданное как символьная переменная, выражение, вектор или матрица. Если expr является вектором или матрицей, затем assume(expr,set) устанавливает предположение, что каждый элемент expr принадлежит set.

Набор допущений, заданный как вектор символов, строковые массивы или массив ячеек. Доступные допущения 'integer', 'rational', 'real', или 'positive'.

Можно объединить несколько допущений, задав строковые массивы или массив ячеек из векторов символов. Для примера примите положительное рациональное значение путем определения set как ["positive" "rational"] или {'positive','rational'}.

Совет

  • 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
Введенный в R2012a