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 не позволяет вам заменить нескалярное на скаляр.

Замените символьными переменными в массиве структур

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

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

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

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

Покажите значение каждого поля.

Sval.f1
ans =
1/2
Sval.f2
ans =
5/2
Sval.f3
ans =
1

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

Замените переменные 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
Для просмотра документации необходимо авторизоваться на сайте