Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

**MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.**

**MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.**

The solver accepts both equations and expressions. If you call `solve`

for an expression,
the command assumes the right side to be 0:

S1 := solve(x^3 - 1, x); S2 := solve(x^3 = 8, x); S3 := solve(x^3 - 3*x^2 = 1 - 3*x, x)

Assign individual solutions to variables by indexing into the result:

sol := S1[3]

Specifying the variable that you want to solve an equation for
is optional. If you specify a variable, the `solve`

command returns solutions as a
set of numbers. Otherwise, the command returns a set of lists as a
solution:

solve(x^2 - 3*x + 2 = 0, x); solve(x^2 - 3*x + 2 = 0)

If your equation contains symbolic parameters, specify the variable for which you want to solve the equation:

solve(a*x^2 + b*x + c, x)

If you solve an equation with symbolic parameters and do not
specify the variable, `solve`

uses
all parameters as variables and returns a set of all possible solutions.
For example, solving the following equation the solver assumes that
both `x`

and `y`

are free variables.
when returning all possible solutions for this equation, the solver
uses an arbitrary parameter `z`

:

solve(x^3 + y^3)

To specify more than one variable, provide a list of variables as a second argument:

solve(a*x^2 + b*x + c, [a, b, c])

`solve`

also
can return an expression as `x in S`

, where `x`

is
a list of variables for which you solve an equation, and `S`

is
a set of the solution vectors:

solve(a*x + 1/x)

When you solve a higher-order polynomial equation, the solver
sometimes uses `RootOf`

to return the results:

solve(x^3 + 2*x + 1 = 0, x)

To get an explicit solution for such equations, try calling
the solver with the option `MaxDegree`

. The option
specifies the maximal degree of polynomials for which the solver tries
to return explicit solutions. By default, `MaxDegree=2`

.
Increasing this value, you can get explicit solutions for higher-order
polynomials. For example, specify `MaxDegree=3`

and
get explicit solutions instead of `RootOf`

for the third-order polynomial:

solve(x^3 + 2*x + 1 = 0, x, MaxDegree = 3)

When you solve a fifth- or higher-order polynomial equation,
the solver might be unable to return the solution explicitly, even
with the option `MaxDegree`

:

solve(x^5 + 2*x + 1 = 0, x); solve(x^5 + 2*x + 1 = 0, x, MaxDegree = 5)

In general, there are no explicit expressions for the roots
of polynomials of degrees higher than 4. Setting the option `MaxDegree`

to
4 or a higher value makes no difference.

`RootOf`

symbolically
represents the set of the roots of a polynomial. You can use the expressions
containing `RootOf`

in
your further computations. For example, find the sum over all roots
of the polynomial:

sum(S^2 + S + 2, S in RootOf(X^5 + 2*X + 1, X));

To get the numeric approximation of the roots, use the `float`

command:

float(RootOf(X^4 + X + 1, X))

For more details on numeric approximations, see Solving Equations Numerically.

For univariate polynomial equations, MuPAD^{®} also can compute
intervals containing the real roots. See Isolating Real Roots
of Polynomial Equations.

By default, the `solve`

command
does not return the multiplicity of the roots. When the solution of
an equation contains multiple roots, MuPAD removes duplicates:

solve(x^2 - 6*x + 9 = 0, x)

The solver does not display multiple roots because it returns
results as a set. A set
in MuPAD cannot contain duplicate elements. To obtain polynomial
roots with their multiplicities, use the option `Multiple`

:

solve(x^2 - 6*x + 9 = 0, x, Multiple); solve((x - 1)^3*(x - 2)^7, x, Multiple)

For some polynomial equations, the solver cannot return the explicit symbolic solutions.

p:= x^5 - 31*x^4/32 + 32*x^3/33 - 33*x^2/34 - 34*x/35 + 35/36: solve(p, x)

If you prefer a solution in a form other than `RootOf`

and want to avoid
numeric methods, use `polylib::realroots`

to
find all intervals containing real solutions:

p:= x^5 - 31*x^4/32 + 32*x^3/33 - 33*x^2/34 - 34*x/35 + 35/36: polylib::realroots(p)

`solve`

can solve inequalities. Typically,
the solution set of an inequality is `interval`

or a union of
intervals:

solve(x^2 > 5, x)

Use `solve`

to solve the following inequality.
The solution includes the set of all complex numbers, excluding and :

solve(x^2 <> 7, x)