exponenta event banner

syms

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

Описание

пример

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

пример

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

пример

syms var1 ... varN n создает nоколо-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около-...около-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около-n матрица символьных функций, заполненных автоматически формируемыми элементами.

пример

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

пример

syms var1 ... varN n matrix создает nоколо-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)[in(a1, 'real'), in(a2, 'real'), in(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). При назначении этих выражений символьная матрица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), -sym(1)]

С R2021a г.

Создание двух символьных переменных матрицы с размером 2около-3. Нескалярные символьные переменные матрицы отображаются полужирным шрифтом в интерактивном редакторе и окне команд.

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около-3 и 3около-1 символьные матричные переменные.

syms A 3 matrix
syms X [3 1] matrix

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

f = X.'*A*X
f = XTAXtranspose(symmatrix('X', [3 1]))*symmatrix('A', [3 3])*symmatrix('X', [3 1])
H = diff(f,X,X.')
H = AT+Atranspose(symmatrix('A', [3 3])) + symmatrix('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около-3 матрица символьных скалярных переменных.

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

Матричные размеры символьных матричных переменных, определяемые как вектор целых чисел. В качестве сочетания можно создать переменную квадратной символьной матрицы, указав только одно целое число. Например, syms x 3 matrix создает квадрат 3около-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, возвращаемые как массив ячеек символьных векторов.

Ограничения

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

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

  • Чтобы показать все функции панели инструментов символьной математики, которые принимают переменные символьной матрицы в качестве входных данных, используйте команду 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