нижние индексы

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

Синтаксис

subs(s,old,new)
subs(s,new)
subs(s)

Описание

пример

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

пример

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

пример

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

Примеры

Одна замена

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

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

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

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

Переменная замены по умолчанию

Замените переменной по умолчанию в этом выражении с 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 =
x^2

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

subs(y)
ans =
4

Несколько замен

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

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

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

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

Замените скалярами с массивами

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

syms a t
subs(exp(a*t) + 1, a, -magic(3))
ans =
[ exp(-8*t) + 1,   exp(-t) + 1, exp(-6*t) + 1]
[ exp(-3*t) + 1, exp(-5*t) + 1, exp(-7*t) + 1]
[ exp(-4*t) + 1, exp(-9*t) + 1, exp(-2*t) + 1]

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

A = sym('A', [2,2])
B = sym('B', [2,2])
A =
[ A1_1, A1_2]
[ A2_1, A2_2]
 
B =
[ B1_1, B1_2]
[ B2_1, B2_2]

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

A44 = subs(A, A(1,1), B)
A44 =
[ B1_1, B1_2, A1_2, A1_2]
[ B2_1, B2_2, A1_2, A1_2]
[ A2_1, A2_1, A2_2, A2_2]
[ A2_1, A2_1, A2_2, A2_2]

subs не позволяет вам заменить нескалярное на скаляр.

Замените несколькими скалярами с массивами

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

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

Обратите внимание на то, что эти замены поэлементны.

[0 1; -1 0].*[1 -1; -2 1]
ans =
     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)^2/x^2 + x^2

Замены в функциях

Замените 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)
argnames(f)
ans =
a + y
 
ans =
[ x, y]

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

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
S.y
ans =
 -2^(1/2)/2
  2^(1/2)/2
ans =
 -2^(1/2)/2
  2^(1/2)/2

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

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

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

свернуть все

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

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

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

Советы

  • 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