solve  solve one or more equations

Calling Sequence


solve(equations, variables, options)


Parameters


equations



expression, equation, inequality, or procedure; or set or list of expressions, equations, or inequalities

variables



(optional) name or set or list of names; unknown(s) for which to solve

options



(optional) a sequence of equations option=value.





Options


Options may be supplied as listed below, or in all lowercase.

allsolutions



Return more solutions for nonalgebraic equations (default is false).



conditionalsolutions



conditionalsolutions = truefalse


Return piecewise conditional solutions (default is true).



dropmultiplicity



dropmultiplicity = truefalse


Do not return multiple identical solutions of polynomials (default is false).



explicit



explicit = {posint, truefalse}


Express RootOfs in solution as radicals when possible (default is false).



maxsols



maxsols = {posint, pos_infinity}


Limit the number of solutions returned (default is 100).



tryhard



Use radical form for quadratic solutions (default is false).



useassumptions


•

useassumptions = truefalse


Convert assumptions into additional inequalities (default is false).




Basic Information


•

This help page contains complete information about the solve command. For basic information on the solve command, see the solve help page.



Description


•

The solve command solves one or more equations or inequalities for the specified unknowns. The unknowns may be names, including indexed names (though for efficiency reasons, indexed names should be avoided when possible), or functions. Both indexed names and functions are considered to be independent of each other and of all other unknowns.

•

To find parameterized solutions of the equations, specify variables that are functions of a free variable.

•

If you use the abs command, the solve command assumes that the argument to abs is realvalued.



Calling Sequence Shortcuts


•

In the equations parameter, if you specify an expression expr, Maple interprets it as the equation .

•

If you do not specify the variables parameter, Maple solves for all the variables that appear in equations, that is, indets(equations, name).



Output


•

The data type of the solution depends on the data type of the first (equations) and second (unknowns for which to solve) arguments.


 If the second argument is a name and the first argument is an equation, then the solution is an expression sequence.


 If the second argument is a name and the first argument is a set or list of equations, then the solution is comprised of sets.


 If the second argument is a list of names, then for any type of first argument, the solution is a list of lists.


 If there is no second argument, then the solution for a single variable equation is an expression sequence, and the solution for a multi variable equation or a set or list of equations is comprised of sets.

•

If the solve command does not find any solutions, then it returns the empty sequence (NULL) (instead of an expression sequence or sets) or empty list (instead of a list of lists). This means that there are no solutions or the solve command cannot find the solutions.


Missed Solutions


•

If the solve command cannot confirm that the solution set returned is complete, it sets the global variable _SolutionsMayBeLost to true and issues a warning.



Conditional Solutions


•

The solve command can return conditional solutions to many types of parametric equations and inequalities. Systems of linear inequalities in one or more variables are fully supported, as well as relations involving some types of simple functions of linear expressions. Conditional solutions are returned in the form of piecewise functions whose conditions depend upon the values of the parameters. Each output of the piecewise function will be a list of lists or sets, identifying all of the solutions that are valid under the corresponding condition. If a branch of the piecewise function contains no solutions, then its output will be an empty list.

•

To prevent solve from returning conditional solutions, use the solve option conditionalsolutions=false. In this case, if solve encounters a conditional solution, it will be discarded, a warning message will be displayed, and only solutions that hold unconditionally, if any, will be returned. You can also set the environment variable _EnvConditionalSolutions := false.



Controlling the Form of Solutions


•

A single quadratic equation with constant coefficients in one variable is solved directly by substitution into the quadratic formula. To attempt to express solutions in the common radical form, which may take a longer time to process use the option tryhard=true. You can also set the environment variable _EnvTryHard := true.

•

In general, explicit solutions in terms of radicals do not exist for polynomial equations of degree greater than 4. The solve command returns explicit solutions for low degree polynomial equations (by default, degree less than 4). For higher degree equations, implicit solutions are given in terms of RootOf.


To control the form of solutions returned, use the option explicit. The behavior is described in the following table.

explicit=Value

Behavior

not given

return explicit solutions for polynomial equations of degree less than or equal to 3

true

return explicit solutions for polynomial equations of degree less than or equal to 4

false

return explicit solutions for polynomial equation solutions that are rational

numeric

return explicit solutions for polynomial equations with a length less than the numeric value specified





You can also control this by setting the environment variable _EnvExplicit.


Controlling the Number of Solutions


•

By default, solve may return multiple identical solutions to a polynomial (i.e. the roots of multiplicity greater than one). To have solve return only one of each of these multiple roots use the option dropmultiplicity=true or set the environment variable _EnvDropMultiplicity := true.

•

To control the total number of solutions returned, use the option maxsols. This integer specifies the maximum number of solutions returned. The default value is 100. You can set the environment variable _MaxSols.

•

The solve command returns all solutions for polynomial equations. In general for transcendental equations, the solve command returns only one solution, but does not set _SolutionsMayBeLost to true. To force the solve command to return the entire set of solutions for all inverse transcendental functions, provide the solve option allsolutions = true or set the environment variable _EnvAllSolutions := true.


In the solution, Maple may generate variables that take numeric values. Normally such variables are named with the prefix _Z for integer values, _NN for nonnegative integer values, and _B for binary values (0 and 1). If other conditions on these values apply, then the conditions will be converted to assumptions and simplified, if possible. If such conditions are sufficient to allow Maple to determine that the variable may only take on a finite number of values, then the full list of solutions can be requested by using the option explicit=true.



Using Assumptions



In most cases, solve ignores assumptions on the variables for which it is solving. However, the useassumptions option may be supplied to force solve to inspect any assumptions on the variables, and extract inequalities that it will add to the input. For example:

>

solve(x^21,{x}, useassumptions) assuming x>0;

 (1) 
is equivalent to:
>

solve({x^21, x>0},{x});

 (2) 
but, in some case, the user may find the former more convenient The useassumptions option will not make use of any assumptions that cannot be rewritten as polynomial inequations. In particular, it does not process assumptions restricting the domain:
>

solve(x^2+1,{x}, useassumptions) assuming x::real;

 (3) 
instead one should use RealDomain[solve] or isolve for solutions over the real numbers or over the integers, respectively.



Additional Information


•

Further information is available for the subtopics solve/subtopic where subtopic is one of



Examples



Simple Examples



Solving an implicit equation


>


 (4) 


Solving a quadratic equation


>


 (5) 


Specifying variables



To ignore parameters, specify the variables for which to solve.

>


 (6) 


Solving a set of equations



When the solved for variables are provided as set, the solutions to the set of equations are returned as sets of equation sequences.

>


 (7) 


Solving trigonometric equations


>


 (8) 


Solving inequations


>


 (9) 
>


 (10) 

You can add inequations to filter out unwanted solutions. In this case, the previous call to solve has two solutions. Adding filters out one of these solutions.

>


 (11) 



Ignoring Multiple Identical Solutions


>


 (12) 
>


 (13) 


Evaluating Solutions to FloatingPoint Values and Verifying Solutions


>


 (14) 
>


 (15) 
>


 (16) 
>


 (17) 

To convert to floatingpoint values, use the evalf command.

>


 (18) 
>


 (19) 
>


 (20) 

To verify the solution, use the eval command.

>


 (21) 


Implicit Solutions


>


 (22) 

To convert to floatingpoint values, use the evalf command.

>


 (23) 

To find an explicit symbolic representation for the roots, use map with the allvalues command. This applies allvalues to each solution and is generally better than applying allvalues directly to all the solutions at once.

>


 (24) 
>


 (25) 
>


 (26) 
>


 (27) 


Assigning Solutions to Corresponding Names


>


 (28) 
>


 (29) 
>


 (30) 
>


 (31) 
>


>


 (32) 


Finding All Solutions


>


 (33) 
>


 (34) 

Substitute 3 for in .

>


 (35) 


Finding All Solutions with Restrictions


>


 (36) 
>


Originally _Z4, renamed _Z4~:
is assumed to be: AndProp(integer,RealRange(0,2))
 
>


Originally _Z5, renamed _Z5~:
is assumed to be: AndProp(integer,RealRange(1,3))
 
>


 (37) 


Conditional Solutions


>


>


 (38) 
>


 (39) 
>


 (40) 
>


 (41) 
>





Other Maple solvers



dsolve  solve an ordinary differential equation (ODE) or system of ODEs


fsolve  solve equations and inequalities using numeric methods


intsolve  solve a linear integral equation


isolve  solve equations for integer solutions


Groebner[Solve]  preprocess an algebraic system before solving with the solve command (to solve using Groebner methods)


msolve  solve equations in Z mod m


pdsolve  solve a partial differential equation (PDE) or system of PDEs


rsolve  solve a recurrence equation


SolveTools  solve a system of algebraic equations using lowlevel commands



See Also


allvalues, assign, eval, evalf, Groebner, indets, invfunc, isolate, match, op, RootOf, simplex

