syms

Создайте символьные скалярные переменные, функции и матричные переменные

Описание

пример

syms var1 ... varN создает символьные скалярные переменные var1 ... varN типа sym. Разделите различные переменные по пространствам. С R2018b года syms удаление всех допущений из переменных.

пример

syms var1 ... varN [n1 ... nM] создает массивы символьных скалярных переменных var1 ... varN, где каждый массив имеет размер n1-by- ...-by- nM и содержит автоматически сгенерированные символьные скалярные переменные в качестве его элементов. Для краткости массив символьных скалярных переменных также называется символьным массивом. Для примера, syms a [1 3] создает символьный массив a = [a1 a2 a3] и символьные скалярные переменные a1, a2, и a3 в MATLAB® рабочей области. Для многомерных массивов эти элементы имеют префикс a далее следует индекс элемента с помощью _ как разделитель, например a1_3_2.

пример

syms var1 ... varN n создает n-by- n матрицы символьных скалярных переменных, заполненные автоматически сгенерированными элементами. Для краткости матрица символьных скалярных переменных также называется символьной матрицей.

пример

syms ___ set устанавливает предположение, что созданные символьные скалярные переменные принадлежат set, и очищает другие допущения. Здесь, set можно real, positive, integer, или rational. Можно также объединить несколько допущений с помощью пространств. Для примера, syms x positive rational создает символьную скалярную переменную x с положительным рациональным значением.

пример

syms f(var1,...,varN) создает символьную функцию f типа symfun и символьные скалярные переменные var1,...,varN, которые представляют входные параметры f. Можно создать несколько символьных функций в одном вызове. Для примера, syms f(x) g(t) создает две символьные функции (f и g) и двух символьных скалярных переменных (x и t).

пример

syms f(var1,...,varN) [n1 ... nM] создает n1-by- ...-by- nM символьный массив с автоматически сгенерированными символьными функциями как его элементы. Этот синтаксис также генерирует символьные скалярные переменные var1,...,varN которые представляют входные параметры f. Для примера, syms f(x) [1 2] создает символьный массив f(x) = [f1(x) f2(x)], символические функции f1(x) и f2(x)и символьную скалярную переменную x в рабочем пространстве MATLAB. Для многомерных массивов эти элементы имеют префикс f далее следует индекс элемента с помощью _ как разделитель, например f1_3_2.

пример

syms f(var1,...,varN) n создает n-by- n матрица символьных функций, заполненная автоматически сгенерированными элементами.

пример

syms var1 ... varN [nrow ncol] matrix создает символьные матричные переменные var1 ... varN типа symmatrix, где каждая переменная символьной матрицы имеет размер nrow-by- ncol. (с R2021a года)

пример

syms var1 ... varN n matrix создает n-by- n символьные матричные переменные. (с R2021a года)

пример

syms(symArray) создает символьные скалярные переменные и функции, содержащиеся в symArray, где symArray является или вектором символьных скалярных переменных, или массивом ячеек символьных скалярных переменных и функций. Используйте этот синтаксис только, когда такой массив возвращается другой функцией, такой как solve или symReadSSCVariables.

пример

syms перечисляет имена всех символьных скалярных переменных, функций и массивов в рабочем пространстве MATLAB.

пример

S = syms возвращает массив ячеек с именами всех символьных скалярных переменных, функций и массивов.

Примеры

свернуть все

Создайте символьные скалярные переменные x и y.

syms x y
x
x = xx
y
y = yy

Создайте вектор 1 на 4 символьных скалярных переменных a с автоматически сгенерированными элементами a1,,a4. Эта команда также создает символьные скалярные переменные a1..., a4 в рабочем пространстве MATLAB.

syms a [1 4]
a
a = (a1a2a3a4)[a1, a2, a3, a4]
whos
  Name      Size            Bytes  Class    Attributes

  a         1x4                 8  sym                
  a1        1x1                 8  sym                
  a2        1x1                 8  sym                
  a3        1x1                 8  sym                
  a4        1x1                 8  sym                

Формат именования сгенерированных элементов можно изменить с помощью вектора символов формата. Объявите символьные скалярные переменные, заключая каждое имя переменной в одинарные кавычки. syms заменяет %d в формате, векторе символов с индексом элемента, чтобы сгенерировать имена элементов.

syms 'p_a%d' 'p_b%d' [1 4]
p_a
p_a = (pa1pa2pa3pa4)[p_a1, p_a2, p_a3, p_a4]
p_b
p_b = (pb1pb2pb3pb4)[p_b1, p_b2, p_b3, p_b4]

Создайте матрицу 3 на 4 символьных скалярных переменных с автоматически сгенерированными элементами. Элементы имеют вид Ai,j, который генерирует переменные символьной матрицы A1,1,,A3,4.

syms A [3 4]
A
A = 

(A1,1A1,2A1,3A1,4A2,1A2,2A2,3A2,4A3,1A3,2A3,3A3,4)[A1_1, A1_2, A1_3, A1_4; A2_1, A2_2, A2_3, A2_4; A3_1, A3_2, A3_3, A3_4]

Создайте символьные скалярные переменные x и y, и предположим, что они являются целыми числами.

syms x y integer

Создайте другую скалярную переменную z, и предположим, что это имеет положительное рациональное значение.

syms z positive rational

Проверяйте допущения.

assumptions
ans = (xZyZzQ0<z)[in (x, 'integer'), in (y, 'integer'), in (z, 'rational'), 0 < z]

Кроме того, проверяйте допущения для каждой переменной. Например, проверяйте допущения, установленные на переменной x.

assumptions(x)
ans = xZin(x, 'integer')

Ясные допущения по x, y, и z.

assume([x y z],'clear')
assumptions
 
ans =
 
Empty sym: 1-by-0
 

Создайте символьный массив 1 на 3 a и предположим, что элементы массива имеют вещественные значения.

syms a [1 3] real
assumptions
ans = (a1Ra2Ra3R)[в (a1, 'real'), в (a2, 'real'), в (a3, 'real')]

Создайте символьные функции с одним и двумя аргументами.

syms s(t) f(x,y)

Оба s и f являются абстрактными символьными функциями. Им не назначены символические выражения, поэтому тела этих функций s(t) и f(x,y), соответственно.

Задайте следующую формулу для f.

f(x,y) = x + 2*y
f(x, y) = x+2yx + 2 * y

Вычислите значение функции в точке x = 1 и y = 2.

f(1,2)
ans = 5sym (5)

Создайте символьную функцию и задайте ее формулу с помощью матрицы символьных скалярных переменных.

syms x
M = [x x^3; x^2 x^4];
f(x) = M
f(x) = 

(xx3x2x4)[x, x ^ 3; x ^ 2, x ^ 4]

Вычислите значение функции в точке x = 2:

f(2)
ans = 

(28416)[sym (2), sym (8); sym (4), sym (16)]

Вычислите значение этой функции для x = [1 2 3; 4 5 6]. Результатом является массив ячеек из символьных матриц.

xVal = [1 2 3; 4 5 6];
y = f(xVal)
y=2×2 cell array
    {2x3 sym}    {2x3 sym}
    {2x3 sym}    {2x3 sym}

Доступ к содержимому камеры в массиве ячеек с помощью скобок.

y{1}
ans = 

(123456)[sym (1), sym (2), sym (3); sym (4), sym (5), sym (6)]

Создайте символьную матрицу 2 на 2 с автоматически сгенерированными символьными функциями в качестве ее элементов.

syms f(x,y) 2
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))[f1_1 (x, y), f1_2 (x, y); f2_1 (x, y), f2_2 (x, y)]

Присвойте символьные выражения символьным функциям f1_1(x,y) и f2_2(x,y). Эти функции отображаются как f1,1(x,y) и f2,2(x,y) в Live Editor. Когда вы присваиваете эти выражения, символьная матрица f все еще содержит начальные символические функции в своих элементах.

f1_1(x,y) = 2*x;
f2_2(x,y) = x - y;
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))[f1_1 (x, y), f1_2 (x, y); f2_1 (x, y), f2_2 (x, y)]

Замените выражения, присвоенные f1_1(x,y) и f2_2(x,y) при помощи subs функция.

A = subs(f)
A(x, y) = 

(2xf1,2(x,y)f2,1(x,y)x-y)[2 * x, f1_2 (x, y); f2_1 (x, y), x - y]

Вычислите значение символьной матрицы A, который содержит замещенные выражения в x = 2 и y = 3.

A(2,3)
ans = 

(4f1,2(2,3)f2,1(2,3)-1)[sym (4), f1_2 (2, 3); f2_1 (2, 3), -сим (1)]

Начиная с R2021a

Создайте две переменные символьной матрицы с 2 size-by- 3. Нескалярные переменные символьной матрицы отображаются жирными символами в Live Editor и Командном окне.

syms A B [2 3] matrix
A
A = Asymmatrix('A', [2 3])
B
B = Bsymmatrix('B', [2 3])

Добавьте две матрицы. Результат представлен матричным обозначением A+B.

X = A + B
X = A+Bsymmatrix('A', [2 3]) + symmatrix('B', [2 3])

Тип данных X является symmatrix.

class(X)
ans = 
'symmatrix'

Преобразуйте переменную символьной матрицы X в матрицу символьных скалярных переменных Y. Результат обозначается суммой матричных компонентов.

Y = symmatrix2sym(X)
Y = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)[A1_1 + B1_1, A1_2 + B1_2, A1_3 + B1_3; A2_1 + B2_1, A2_2 + B2_2, A2_3 + B2_3]

Тип данных Y является sym.

class(Y)
ans = 
'sym'

Показать, что преобразованный результат в Y равен сумме двух матриц символьных скалярных переменных.

syms A B [2 3]
Y2 = A + B
Y2 = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)[A1_1 + B1_1, A1_2 + B1_2, A1_3 + B1_3; A2_1 + B2_1, A2_2 + B2_2, A2_3 + B2_3]

isequal(Y,Y2)
ans = logical
   1

Начиная с R2021a

Символьные матричные переменные представляют матрицы, векторы и скаляры в компактном матричном обозначении. При представлении нескаляров эти переменные являются некоммутативными. Когда математические формулы включают матрицы и векторы, запись их с помощью переменных символьной матрицы более кратка и ясна, чем запись их компонентно.

Создайте две переменные символьной матрицы.

syms A B [2 2] matrix

Проверьте отношение коммутации на умножение между двумя переменными символьной матрицы.

A*B - B*A
ans = AB-BAsymmatrix('A', [2 2])*symmatrix('B', [2 2]) - symmatrix('B', [2 2])*symmatrix('A', [2 2])
isequal(A*B,B*A)
ans = logical
   0

Проверьте отношение коммутации для сложения между двумя переменными символьной матрицы.

isequal(A+B,B+A)
ans = logical
   1

Начиная с R2021a

Создание 3-by- 3 и 3-by- 1 символьные матричные переменные.

syms A 3 matrix
syms X [3 1] matrix

Найдите матрицу Гессия XTAX. Производные уравнения, включающие переменные символьной матрицы, отображаются в наборе типов, как они были бы в учебниках.

f = X.'*A*X
f = XTAXтранспонирование (симматрица ('X', [3 1])) * симматрица ('A', [3 3]) * симматрица ('X', [3 1])
H = diff(f,X,X.')
H = AT+Aтранспонирование (симматрица ('A', [3 3])) + симматрица ('A', [3 3])

Некоторые функции, такие как solve и symReadSSCVariables, может вернуть вектор символьных скалярных переменных или массив ячеек символьных скалярных переменных и функций. Эти переменные или функции не появляются автоматически в рабочем пространстве MATLAB. Создайте эти переменные или функции из вектора или массива ячеек при помощи syms.

Решить уравнение sin(x) == 1 при помощи solve. Значение параметра k в решении не отображается в рабочем пространстве MATLAB.

syms x
eqn = sin(x) == 1;
[sol,parameter,condition] = solve(eqn,x,'ReturnConditions',true);
parameter
parameter = kk

Создайте параметр k при помощи syms. Значение параметра k теперь появляется в рабочем пространстве MATLAB.

syms(parameter)

Точно так же используйте syms для создания символьных объектов, содержащихся в векторе или массиве ячеек. Примерами функций, которые возвращают массив ячеек из символьных объектов, являются symReadSSCVariables и symReadSSCParameters.

Создайте некоторые символьные скалярные переменные, функции и массивы.

syms a f(x)
syms A [2 2]

Отобразите список всех символьных скалярных переменных, функций и массивов, которые в настоящее время существуют в рабочем пространстве MATLAB при помощи syms.

syms
Your symbolic variables are:

A     A1_1  A1_2  A2_1  A2_2  a     f     x                                   

Вместо отображения списка верните массив ячеек, предоставив выход syms.

S = syms
S = 8x1 cell
    {'A'   }
    {'A1_1'}
    {'A1_2'}
    {'A2_1'}
    {'A2_2'}
    {'a'   }
    {'f'   }
    {'x'   }

Создайте несколько символических объектов.

syms a b c f(x)

Верните все символические объекты как массив ячеек с помощью syms функция. Используйте cellfun функция для удаления всех символьных объектов в массиве ячеек symObj.

symObj = syms;
cellfun(@clear,symObj)

Проверьте, что вы удалили все символические объекты, позвонив syms. Этот выход пуст, что означает отсутствие символьных объектов в рабочем пространстве MATLAB.

syms

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

свернуть все

Символьные скалярные переменные, матрицы, массивы или матричные переменные (начиная с R2021a), заданные как допустимые имена переменной, разделенные пространствами. Каждое имя переменной должно начинаться с буквы и может содержать только алфавитно-цифровые символы и символ нижнего подчеркивания. Чтобы убедиться, что имя является допустимым именем переменной, используйте isvarname.

Пример: x y123 z_1

Векторные, матричные или массивные размерности символьных скалярных переменных, заданные как вектор целых чисел. В качестве ярлыка можно создать квадратную матрицу, задав только одно целое число. Для примера, syms x 3 создает квадратную 3-by- 3 матрица символьных скалярных переменных.

Пример: [2 3], [2,3]

Матричные размерности переменных символьной матрицы, заданные как вектор целых чисел. В качестве ярлыка можно создать переменную квадратной символьной матрицы, задав только одно целое число. Для примера, syms x 3 matrix создает квадратную 3-by- 3 символьная матричная переменная.

Пример: [2 3], [2,3]

Допущения к символьным скалярным переменным, заданные как real, positive, integer, или rational.

Можно объединить несколько допущений с помощью пространств. Для примера, syms x positive rational создает символьную скалярную переменную x с положительным рациональным значением.

Пример: rational

Символьная функция с ее входными параметрами, заданная как выражение с круглыми скобками. Имя функции f и имена переменных var1...varN должны быть допустимыми именами переменной. То есть они должны начинаться с буквы и могут содержать только алфавитно-цифровые символы и символ нижнего подчеркивания. Чтобы убедиться, что имя является допустимым именем переменной, используйте isvarname.

Пример: s(t), f(x,y)

Символьные скалярные переменные или функции, заданные как вектор символьных скалярных переменных или массив ячеек символьных скалярных переменных и функций. Такой вектор или массив обычно является выходом другой функции, такой как solve или symReadSSCVariables.

Выходные аргументы

свернуть все

Имена всех символьных скалярных переменных, функций и массивов в рабочем пространстве MATLAB, возвращенные как массив ячеек из векторов символов.

Ограничения

  • Используя Symbolic Math Toolbox™, можно создать символические функции, которые зависят от символьных скалярных переменных в качестве параметров. Однако переменные символьной матрицы не могут быть зависящими от параметра. Для примера, команда syms A(x) [3 2] matrix в настоящее время ошибки.

  • Функции дифференцирования, такие как jacobian и laplacian, в настоящее время не принимают переменные символьной матрицы как входные. Чтобы вычислить дифференциацию относительно векторов и матриц, можно использовать diff вместо этого функция.

  • Чтобы показать все функции в Symbolic Math Toolbox, которые принимают переменные символьной матрицы в качестве входных параметров, используйте команду methods symmatrix.

Совет

  • syms является ярлыком для sym. Этот ярлык позволяет вам создать несколько символьных скалярных переменных в одном вызове функции. Также можно использовать sym и создайте каждую переменную отдельно. Однако, когда вы создаете переменные, используя symвсе существующие допущения по созданным переменным сохраняются. Вы также можете использовать symfun для создания символьных функций.

  • В функциях и скриптах не используйте syms чтобы создать символьные скалярные переменные с теми же именами, что и функции MATLAB. Для этих имен MATLAB не создает символьных скалярных переменных, но сохраняет имена, присвоенные функциям. Если вы хотите создать символьную скалярную переменную с таким же именем, как функция MATLAB, внутри функции или скрипта, используйте sym вместо этого. Для примера используйте alpha = sym('alpha').

  • Следующие имена переменных недопустимы syms: integer, real, rational, positive, и clear. Чтобы создать символьные скалярные переменные с этими именами, используйте sym. Для примера, real = sym('real').

  • clear x не очищает символический объект от его допущений, таких как реальные, положительные или какие-либо допущения, заданные assume, sym, или syms. Чтобы удалить допущения, используйте один из следующих опций:

    • syms x удаляет все допущения из x.

    • assume(x,'clear') удаляет все допущения из x.

    • clear all очищает все объекты в рабочем пространстве MATLAB и сбрасывает символьный механизм.

    • assume и assumeAlso обеспечивают большую гибкость для настройки допущений на символьные скалярные переменные.

  • Когда вы заменяете один или несколько элементы массива числовых векторов или матриц на символьное число, MATLAB преобразует это число в число двойной точности.

    A = eye(3);
    A(1,1) = sym(pi)
    A =
        3.1416         0         0
             0    1.0000         0
             0         0    1.0000

    Вы не можете заменить элементов массива числовой вектор или матрицу на символьный скаляр переменную, выражение или функцию, потому что эти элементы не могут быть преобразованы в числа с двойной точностью. Для примера, syms a; A(1,1) = a выдает ошибку.

Вопросы совместимости

расширить все

Поведение изменено в R2018b

Предупреждает, начиная с R2018b

Представлено до R2006a