Символьная замена
subs(s,old,new)
subs(s,new)
subs(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
как матрицу. Все постоянные условия заменяются константой, умноженной на единичную матрицу.