Добавьте допущение к символическому объекту
assumeAlso(
утверждает, что condition
)condition
действителен для всех символьных переменных в condition
. Он сохраняет все допущения, ранее установленные на этих символьных переменных.
Установите допущения используя assume
. Затем добавьте больше допущений, используя assumeAlso
.
Решить это уравнение, принимая, что оба x
и y
являются неотрицательными.
syms x y assume(x >= 0 & y >= 0) s = solve(x^2 + y^2 == 1, y)
Warning: Solutions are valid under the following conditions: x <= 1; x == 1. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'. > In solve>warnIfParams (line 482) In solve (line 357) s = (1 - x)^(1/2)*(x + 1)^(1/2) -(1 - x)^(1/2)*(x + 1)^(1/2)
Решатель предупреждает, что оба решения удерживаются только при определенные обстоятельства.
Добавьте предположение, что x < 1
. Чтобы добавить новое предположение, не удаляя предыдущее, используйте assumeAlso
.
assumeAlso(x < 1)
Решить то же уравнение под расширенным набором допущений.
s = solve(x^2 + y^2 == 1, y)
s = (1 - x)^(1/2)*(x + 1)^(1/2)
Для дальнейших расчетов очистите допущения.
assume([x y],'clear')
Установите допущения используя syms
. Затем добавьте больше допущений, используя assumeAlso
.
При объявлении символьной переменной n
, установите предположение, что n
положительно.
syms n positive
Использование assumeAlso
, добавьте дополнительные допущения к той же переменной n
. Для примера примите также, что n
- целое число.
assumeAlso(n,'integer')
Верните все допущения, влияющие на переменные n
использование assumptions
. В этом случае n
является положительным целым числом.
assumptions(n)
ans = [ 0 < n, in(n, 'integer')]
Для дальнейших расчетов очистите допущения.
assume(n,'clear')
Используйте предположение на матрице как ярлык для установки того же предположения на каждом элементе матрицы.
Создайте символьную матрицу 3 на 3 A
с автоматически сгенерированными элементами. Чтобы принять каждый элемент A
рационально, задайте set
как 'rational'
.
A = sym('A',[3 3],'rational')
A = [ A1_1, A1_2, A1_3] [ A2_1, A2_2, A2_3] [ A3_1, A3_2, A3_3]
Теперь добавьте предположение, что каждый элемент A
больше 1.
assumeAlso(A > 1)
Возвратные допущения, влияющие на элементы A
использование assumptions
:
assumptions(A)
ans = [ 1 < A1_1, 1 < A1_2, 1 < A1_3, 1 < A2_1, 1 < A2_2, 1 < A2_3,... 1 < A3_1, 1 < A3_2, 1 < A3_3,... in(A1_1, 'rational'), in(A1_2, 'rational'), in(A1_3, 'rational'),... in(A2_1, 'rational'), in(A2_2, 'rational'), in(A2_3, 'rational'),... in(A3_1, 'rational'), in(A3_2, 'rational'), in(A3_3, 'rational')]
Для дальнейших расчетов очистите допущения.
assume(A,'clear')
Когда вы добавляете допущения, гарантируйте, что новые допущения не противоречат предыдущим предположениям. Противоречивые предположения могут привести к непоследовательным и непредсказуемым результатам. В некоторых случаях assumeAlso
обнаруживает конфликтующие допущения и выдает ошибку.
Попытайтесь задать противоречивые предположения. assumeAlso
возвращает ошибку.
syms y assume(y,'real') assumeAlso(y == i)
Error using mupadengine/feval (line 172) Inconsistent assumptions. Error in sym/assumeAlso (line 627) feval(symengine, 'assumeAlso', cond);
assumeAlso
не гарантирует обнаружение противоречивых допущений. Например, предположим, что y
ненулевое, и то и другое y
и y*i
являются реальными значениями.
syms y assume(y ~= 0) assumeAlso(y,'real') assumeAlso(y*i,'real')
Верните все допущения, влияющие на переменные y
использование assumptions
:
assumptions(y)
ans = [ in(y, 'real'), in(y*1i, 'real'), y ~= 0]
Для дальнейших расчетов очистите допущения.
assume(y,'clear')
assumeAlso
сохраняет все допущения, ранее установленные на символьных переменных. Чтобы заменить предыдущие допущения новым, используйте assume
.
При добавлении допущений всегда проверяйте, что новое предположение не противоречит существующим предположениям. Чтобы увидеть существующие допущения, используйте assumptions
. Symbolic Math Toolbox™ не гарантирует обнаружение конфликтующих допущений. Противоречивые предположения могут привести к непредсказуемым и непоследовательным результатам.
Когда вы удаляете символьную переменную из 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
.
Тулбокс не поддерживает допущения о символических функциях. Делайте предположения о символьных переменных и выражениях вместо этого.
Вместо добавления допущений один за другим можно задать несколько допущений в одном вызове функции. Чтобы задать несколько допущений, используйте assume
и объедините эти допущения при помощи логических операторов and
, or
, xor
, not
, all
, any
или их ярлыки.