syms

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

Синтаксис

syms var1 ... varN
syms var1 ... varN [n1 ... nM]
syms var1 ... varN n
syms ___ set
syms f(var1,...,varN)
syms f(var1,...,varN) [n1 ... nM]
syms f(var1,...,varN) n
syms(symArray)
syms
S = syms

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

syms x y

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

syms a [1 4]
a
a =
[ a1, a2, a3, a4]

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

syms 'a_%d' 'b_%d' [1 4]
a
b
a =
[ a_1, a_2, a_3, a_4]

b =
[ b_1, b_2, b_3, b_4]

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

syms x y integer

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

syms z positive rational

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

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

Также проверяйте предположения на каждой переменной. Например, проверяйте набор предположений на переменной x.

assumptions(x)
ans =
in(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 =
[ 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 + 2*y

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

f(1,2)
ans =
5

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

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

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

f(2)
ans =
[ 2,  8]
[ 4, 16]

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

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

Доступ к содержимому ячейки в массиве ячеек при помощи фигурных скобок.

y{1}
ans =
[ 1, 2, 3]
[ 4, 5, 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) и 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) и f2_2(x,y) при помощи функции subs.

A = subs(f)
A(x, y) =
[        2*x, f1_2(x, y)]
[ f2_1(x, y),      x - y]

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

A(2,3)
ans =
[          4, f1_2(2, 3)]
[ f2_1(2, 3),         -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 =
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 =
  8×1 cell array
    {'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-by-3 матрица.

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

Советы

  • 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