syms

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

Описание

пример

syms var1 ... varN создает символьные скалярные переменные var1 ... varN из типа sym. Разделите различные переменные пробелами. Этот синтаксис очищает все предыдущие определения var1 ... varN. Начиная с 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. Этот синтаксис очищает все предыдущие определения var1,...,varN включая символьные предположения. Можно создать несколько символьных функций в одном вызове. Например, 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 или вектор из символьных скалярных переменных или массив ячеек символьных скалярных переменных и функций. Этот синтаксис очищает все предыдущие определения переменных, заданных в symArray включая символьные предположения. Используйте этот синтаксис только, когда такой массив будет возвращен другой функцией, такой как solve или symReadSSCVariables.

пример

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

пример

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

Примеры

свернуть все

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

syms x y
x
x = x
y
y = y

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

syms a [1 4]
a
a = (a1a2a3a4)
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_b
p_b = (pb1pb2pb3pb4)

Создайте матрицу 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)

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

syms x y integer

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

syms z positive rational

Проверяйте предположения.

assumptions
ans = (xZyZzQ0<z)

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

assumptions(x)
ans = xZ

Очистите предположения на 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)

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

syms s(t) f(x,y)

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

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

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

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

f(1,2)
ans = 5

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

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

(xx3x2x4)

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

f(2)
ans = 

(28416)

Вычислите значение этой функции для 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)

Создайте символьную матрицу 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) и 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) и f2_2(x,y) при помощи subs функция.

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

(2xf1,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)

Начиная с R2021a

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

syms A B [2 3] matrix
A
A = A
B
B = B

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

X = A + B
X = A+B

Тип данных 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)

Тип данных 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)

isequal(Y,Y2)
ans = logical
   1

Начиная с R2021a

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

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

syms A B [2 2] matrix

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

A*B - B*A
ans = AB-BA
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
H = diff(f,X,X.')
H = AT+A

Определенные функции, такие как 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 = k

Создайте параметр 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. Если вы хотите создать символьную скалярную переменную с тем же именем как функция MATLAB в функции или скрипте, использовать sym вместо этого. Например, используйте alpha = sym('alpha').

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

  • Следующие имена переменных недопустимы с 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