Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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
Was this topic helpful?