syms

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

syms x y
x
x = xx
y
y = yy

Создайте символьный векторный a 1 на 4 с автоматически сгенерированными элементами 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)]

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

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

свернуть все

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

Пример: x y123 z_1

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

Пример: [2 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, возвратились как массив ячеек из символьных векторов.

Советы

  • 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