Solve Parametric Equations in ReturnConditions Mode
This example shows you how to solve parameterized algebraic equations using the Symbolic Math Toolbox™.
To solve algebraic equations symbolically, use the solve
function. The solve function can provide complete information about all solutions of an equation, even if there are infinitely many, by introducing a parameterization. It can also provide information under which conditions these solutions are valid. To obtain this information, set the option ReturnConditions to true.
Solve the equation sin(C*x) = 1
. Specify x
as the variable to solve for. The solve
function handles C
as a constant. Provide three output variables for the solution, the newly generated parameters in the solution, and the conditions on the solution.
syms C x eq = sin(C*x) == 1; [solx, params, conds] = solve(eq, x, 'ReturnConditions', true)
solx =
params =
conds =
To verify the solution, substitute the solution into the equation using subs
. To work on under the assumptions in conds
for the rest of this example, use assume
. Test the solution using isAlways
. The isAlways
function returns logical 1
(true
) indicating that the solution always holds under the given assumptions.
SolutionCorrect = subs(eq, x, solx)
SolutionCorrect =
assume(conds) isAlways(SolutionCorrect)
ans = logical
1
To obtain one solution out of the infinitely many solutions, find a value of the parameters params
by solving the conditions conds
for the parameters; do not specify the ReturnConditions option. Substitute this value of k
into the solution using subs
to obtain a solution out of the solution set.
k0 = solve(conds, params)
k0 =
subs(solx, params, k0)
ans =
To obtain a parameter value that satisfies a certain condition, add the condition to the input to solve
. Find a value of the parameter greater than 99/4
and substitute in to find the solution.
k1 = solve([conds, params > 99/4], params)
k1 =
subs(solx, params, k1)
ans =
To find a solution in a specified interval, you can solve the original equation with the inequalities that specify the interval.
[solx1, params1, conds1] = solve([eq, x > 2, x < 7], x, 'ReturnConditions', true)
solx1 =
params1 =
conds1 =
Alternatively, you can also use the existing solution, and restrict it with additional conditions. Note that while the condition changes, the solution remains the same. The solve
function expresses solx
and solx1
with different parameterizations, although they are equivalent.
[~, ~, conds2] = solve(x == solx, x < 7, x > 2, x, 'ReturnConditions', true)
conds2 =
Obtain those parameter values that satisfy the new condition, for a particular value of the constant C:
conds3 = subs(conds2, C, 5)
conds3 =
solve(conds3, params)
ans =