subs

Символьная замена

Описание

пример

snew = subs(s,old,new) возвращает копию s, заменяя все случаи old с new, и затем оценивает s. Здесь, s выражение, которое содержит символьные скалярные переменные и old задает скалярные переменные, которыми подставятся.

пример

snew = subs(s,new) возвращает копию s, заменяя все случаи символьной скалярной переменной по умолчанию в s с new, и затем оценивает s. Переменная по умолчанию задана symvar(s,1).

пример

snew = subs(s) возвращает копию s, заменяя символьные скалярные переменные в s, с их значениями, полученными из вызова, функционируют и MATLAB® Рабочая область, и затем оценивает s. Переменные без присвоенных значений остаются как переменные.

пример

sMnew = subs(sM,oldM,newM) возвращает копию sM, заменяя все случаи oldM с newM, и затем оценивает sM. Здесь, sM выражение, которое содержит переменные символьной матрицы и oldM задает матричные переменные, которыми подставятся. (начиная с R2021b)

пример

sMnew = subs(sM,newM) возвращает копию sM, заменяя все случаи переменной символьной матрицы по умолчанию в sM с newM, и затем оценивает sM. (начиная с R2021b)

Примеры

свернуть все

Замените a с 4 в этом выражении.

syms a b
subs(a + b,a,4)
ans = b+4

Замените a*b с 5 в этом выражении.

subs(a*b^2,a*b,5)
ans = 5b

Замените символьной скалярной переменной по умолчанию в этом выражении с a. Если вы не задаете скалярную переменную или выражение, чтобы заменить, subs использование symvar найти переменную по умолчанию. Для x + y, переменной по умолчанию является x.

syms x y a
symvar(x + y,1)
ans = x

Поэтому нижние индексы заменяют x с a.

subs(x + y,a)
ans = a+y

Когда вы присваиваете новое значение символьной скалярной переменной, выражения, содержащие переменную, автоматически не выполнены. Вместо этого выполните выражения при помощи subs.

Задайте выражение y = x^2.

syms x
y = x^2;

Присвойте 2 к x. Значение y все еще x^2 вместо 4.

x = 2;
y
y = x2

Оцените y с новым значением x при помощи subs.

subs(y)
ans = 4

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

syms a b
subs(cos(a) + sin(b), [a,b], [sym('alpha'),2])
ans = sin(2)+cos(α)

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

subs(cos(a) + sin(b), {a,b}, {sym('alpha'),2})
ans = sin(2)+cos(α)

Замените символьную скалярную переменную a в этом выражении с 3х3 матрицей магического квадрата. Обратите внимание на то, что постоянный 1 расширяется до 3х3 матрицы со всеми ее элементами, равными 1.

syms a t
subs(exp(a*t) + 1, a, -magic(3))
ans = 

(e-8t+1e-t+1e-6t+1e-3t+1e-5t+1e-7t+1e-4t+1e-9t+1e-2t+1)

Можно также заменить элемент вектора, матрицы или массива с нескалярным значением. Например, создайте эти матрицы 2 на 2.

A = sym('A',[2,2])
A = 

(A1,1A1,2A2,1A2,2)

B = sym('B',[2,2])
B = 

(B1,1B1,2B2,1B2,2)

Замените первый элемент матричного A с матричным B. При создании этой замены, subs расширяет матричный A 2 на 2 в эту матрицу 4 на 4.

A44 = subs(A, A(1,1), B)
A44 = 

(B1,1B1,2A1,2A1,2B2,1B2,2A1,2A1,2A2,1A2,1A2,2A2,2A2,1A2,1A2,2A2,2)

subs не позволяет вам заменить нескалярное или матрицу со скаляром, который уменьшает матричный размер.

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

syms x y z
S = struct('f1',x*y,'f2',y + z,'f3',y^2)
S = struct with fields:
    f1: x*y
    f2: y + z
    f3: y^2

Замените символьные скалярные переменные xY, и z с числовыми значениями.

Sval = subs(S,[x y z],[0.5 1 1.5])
Sval = struct with fields:
    f1: 1/2
    f2: 5/2
    f3: 1

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

syms x y
subs(x*y, {x,y}, {[0 1; -1 0], [1 -1; -2 1]})
ans = 

(0-120)

Обратите внимание на то, что начиная с x и y скаляры, эти замены поэлементны.

[0 1; -1 0].*[1 -1; -2 1]
ans = 2×2

     0    -1
     2     0

Устраните скалярные переменные из уравнения при помощи значения переменной от другого уравнения. Во втором уравнении изолируйте переменную на левой стороне с помощью isolate, и затем замените правой стороной с переменной в первом уравнении.

Во-первых, объявите уравнения eqn1 и eqn2.

syms x y
eqn1 = sin(x)+y == x^2 + y^2;
eqn2 = y*x == cos(x);

Изолированный y в eqn2 при помощи isolate.

eqn2 = isolate(eqn2,y)
eqn2 = 

y=cos(x)x

Устраните y от eqn1 путем замены правой стороной eqn2 с левой стороной eqn2 в eqn1.

eqn1 = subs(eqn1,lhs(eqn2),rhs(eqn2))
eqn1 = 

sin(x)+cos(x)x=cos(x)2x2+x2

Замените x с a в этой символьной функции.

syms x y a
syms f(x,y)
f(x,y) = x + y;
f = subs(f,x,a)
f(x, y) = a+y

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

formula(f)
ans = a+y
argnames(f)
ans = (xy)

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

syms x y
f(x,y) = x + y;
f(a,y) = subs(f,x,a);
f
f(a, y) = a+y

Предположим, что вы хотите проверить решения этой системы уравнений.

syms x y
eqs = [x^2 + y^2 == 1, x == y];
S = solve(eqs,[x y]);
S.x
ans = 

(-2222)

S.y
ans = 

(-2222)

Проверьте решения путем замены решениями в исходную систему.

isAlways(subs(eqs,S))
ans = 2x2 logical array

   1   1
   1   1

Начиная с R2021b

Задайте продукт двух матриц 2 на 2. Объявите матрицы как переменные символьной матрицы с symmatrix тип данных.

syms X Y [2 2] matrix
sM = X*Y
sM = XY

Замените матричные переменные X и Y с символьными матрицами 2 на 2. Когда вы сделаете несколько замен включающими векторами или матрицами, используйте массивы ячеек, чтобы задать старые и новые значения.

S = subs(sM,{X,Y},{[0 1; -1 0], [1 -1; -2 1]})
S = 

Σ1Σ2where  Σ1=(01-10)  Σ2=(1-1-21)

Преобразуйте выражение S к sym тип данных, чтобы показать результат подставленного умножения матриц.

Ssym = symmatrix2sym(S)
Ssym = 

(-21-11)

Начиная с R2021b

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

A = sym([1 4 2; 4,1,2; 2,2,3])
A = 

(142412223)

Вычислите коэффициенты характеристического полинома A использование charpoly функция.

c = charpoly(A);

Затем задайте X как 3х3 переменная символьной матрицы. Используйте коэффициенты c создать полином p(X)=c1X3+c2X2+c3X+c4I3, где X неопределенное, которое представляет 3х3 матрицу.

syms X [3 3] matrix
p = c(1)*X^3 + c(2)*X^2 + c(3)*X + c(4)*X^0
p = 21I3-17X-5X2+X3

Замена X в полиноме p(X) с A использование subs функция. Согласно теореме Кэли-Гамильтона, это приводит к 3х3 нулевой матрице, начиная с коэффициентов c характеристический полином A. Используйте symmatrix2sym преобразовывать подставленное выражение в матрицу символьных чисел.

Y = subs(p,A)
Y = 

-17Σ1-5Σ12+Σ13+21I3where  Σ1=(142412223)

Z = symmatrix2sym(Y)
Z = 

(000000000)

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

свернуть все

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

Типы данных: sym | symfun | struct

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

Типы данных: sym | cell

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

Типы данных: sym | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | struct | cell

Начиная с R2021b

Введите в виде переменной символьной матрицы или символьного выражения, содержащего матричные переменные.

Типы данных: symmatrix

Начиная с R2021b

Матричная переменная, чтобы занять место в виде переменной символьной матрицы, символьного выражения или массива ячеек, содержащего матричные переменные.

Типы данных: symmatrix | cell

Начиная с R2021b

Новое значение, чтобы занять место с в виде номера, символьного числа, матричной переменной, выражения, массива или массива ячеек. newM должен иметь ту же размерность как oldM, или как переменная символьной матрицы по умолчанию в sM.

Типы данных: sym | symmatrix | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string | struct | cell

Советы

  • subs(s,old,new) не изменяет s. Изменить s, используйте s = subs(s,old,new).

  • Если old и new оба векторы или массивы ячеек, одного размера, subs замены каждый элемент old с соответствующим элементом new.

  • Если old скаляр и new вектор или матрица, затем subs(s,old,new) замены все экземпляры old в s с new, выполнение всех поэлементных операций. Все постоянные термины в s заменяются константой, умноженной на вектор или матрицу всей 1 с.

  • Если s одномерный полином и new числовая матрица, используйте polyvalm(sym2poly(s),new) оценивать s как матрица. Все постоянные термины заменяются константой, умноженной на единичную матрицу.

Представлено до R2006a