Substitute Variables in Symbolic Expressions
Solve the following trigonometric equation using the ReturnConditions
option
of the solver to obtain the complete solution. The solver returns
the solution, parameters used in the solution, and conditions on those
parameters.
syms x eqn = sin(2*x) + cos(x) == 0; [solx, params, conds] = solve(eqn, x, 'ReturnConditions', true)
solx = pi/2 + pi*k 2*pi*k - pi/6 (7*pi)/6 + 2*pi*k params = k conds = in(k, 'integer') in(k, 'integer') in(k, 'integer')
Replace the parameter k
with a new symbolic
variable a
. First, create symbolic variables k
and a
.
(The solver does not create variable k
in the MATLAB® workspace.)
syms k a
Now, use the subs
function to replace k
by a
in
the solution vector solx
, parameters params
,
and conditions conds
.
solx = subs(solx, k, a) params = subs(params, k, a) conds = subs(conds, k, a)
solx = pi/2 + pi*a 2*pi*a - pi/6 (7*pi)/6 + 2*pi*a params = a conds = in(a, 'integer') in(a, 'integer') in(a, 'integer')
Suppose, you know that the value of the parameter a
is 2
.
Substitute a
with 2
in the solution
vector solx
.
subs(solx, a, 2)
ans = (5*pi)/2 (23*pi)/6 (31*pi)/6
Alternatively, substitute params
with 2
.
This approach returns the same result.
subs(solx, params, 2)
ans = (5*pi)/2 (23*pi)/6 (31*pi)/6
Substitute parameter a
with a floating-point
number. The toolbox converts numbers to floating-point values, but
it keeps intact the symbolic expressions, such as sym(pi)
, exp(sym(1))
,
and so on.
subs(solx, params, vpa(2))
ans = 2.5*pi 3.8333333333333333333333333333333*pi 5.1666666666666666666666666666667*pi
Approximate the result of substitution with floating-point values
by using vpa
on the result returned by subs
.
vpa(subs(solx, params, 2))
ans = 7.8539816339744830961566084581988 12.042771838760874080773466302571 16.231562043547265065390324146944