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Целое число, или 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)[в (x, 'целое число'), в (y, 'целое число'), в (z, 'рациональный'), 0 <z]

В качестве альтернативы проверяйте предположения на каждой переменной. Например, проверяйте набор предположений на переменной x.

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

Очистите предположения на xY, и 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, 'действительный'), в (a2, 'действительный'), в (a3, 'действительный')]

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

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),-sym (1)]

Начиная с R2021a

Создайте две переменные символьной матрицы с размером 2- 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- 3 и 3- 1 переменные символьной матрицы.

syms A 3 matrix
syms X [3 1] matrix

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

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