subs

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

Описание

пример

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