Добавьте предположение на символьном объекте
assumeAlso(condition)
assumeAlso(expr,set)
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 195) Inconsistent assumptions. Error in sym/assumeAlso (line 622) 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
или их ярлыки.