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 lower-case.
|
•
|
AllSolutions = truefalse
|
|
Return more solutions for non-algebraic equations (default is false).
|
•
|
ConditionalSolutions = truefalse
|
|
Return piecewise conditional solutions (default is true).
|
•
|
DropMultiplicity = truefalse
|
|
Do not return multiple identical solutions of polynomials (default is false).
|
•
|
Explicit = {posint, truefalse}
|
|
Express RootOfs in solution as radicals when possible (default is false).
|
•
|
MaxSols = {posint, pos_infinity}
|
|
Limit the number of solutions returned (default is 100).
|
|
Use radical form for quadratic solutions (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 real-valued.
|
|
|
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 non-negative 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^2-1,{x}, useassumptions) assuming x>0;
|
| (1) |
is equivalent to:
>
|
solve({x^2-1, 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
|
|
>
|
|
| (4) |
>
|
|
| (5) |
>
|
|
| (6) |
>
|
f := proc(x) x-cos(x) end proc:
|
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
>
|
|
| (10) |
>
|
|
| (11) |
>
|
|
| (12) |
|
|
Ignoring Multiple Identical Solutions
|
|
>
|
|
| (13) |
>
|
|
| (14) |
|
|
Evaluating Solutions to Floating-Point Values and Verifying Solutions
|
|
>
|
|
| (15) |
>
|
|
| (16) |
>
|
|
| (17) |
>
|
|
| (18) |
|
To convert to floating-point values, use the evalf command.
|
>
|
|
| (19) |
>
|
|
| (20) |
>
|
|
| (21) |
|
To verify the solution, use the eval command.
|
>
|
|
| (22) |
|
|
Implicit Solutions
|
|
>
|
|
| (23) |
|
To convert to floating-point values, use the evalf command.
|
>
|
|
| (24) |
|
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.
|
>
|
|
| (25) |
>
|
|
| (26) |
>
|
|
| (27) |
>
|
|
| (28) |
|
|
Assigning Solutions to Corresponding Names
|
|
>
|
|
| (29) |
>
|
|
| (30) |
>
|
|
| (31) |
>
|
|
| (32) |
>
|
|
>
|
|
| (33) |
|
|
Finding All Solutions
|
|
>
|
|
| (34) |
>
|
|
| (35) |
|
Substitute 3 for in .
|
>
|
|
| (36) |
|
|
Finding All Solutions with Restrictions
|
|
>
|
|
| (37) |
>
|
|
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))
| |
>
|
|
| (38) |
|
|
Conditional Solutions
|
|
>
|
|
>
|
|
| (39) |
>
|
|
| (40) |
>
|
|
| (41) |
>
|
|
| (42) |
>
|
|
|
|
|
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 low-level commands
|
|
|
See Also
|
|
allvalues, assign, eval, evalf, Groebner, indets, invfunc, isolate, match, op, RootOf, simplex
|
|