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