Символьная подстановка
Замените 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
расширяет матрицу 2 на 2 A
в эту матрицу 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]
Замените символьные переменные x
, y
, и 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
как матрица. Все постоянные члены заменяются константой, умноженной на единичную матрицу.