details - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


solve

solve one or more equations

 

Calling Sequence

Parameters

Options

Basic Information

Description

Calling Sequence Shortcuts

Output

Additional Information

Examples

Other Maple solvers

Calling Sequence

solve(equations, variables, options)

Parameters

equations

-

expression, equation, or inequality; or set, list, or rtable of expressions, equations, or inequalities; or an equation (or relation) of rtables

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

  

allsolutions = truefalse

  

Return more solutions for non-algebraic 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

• 

tryhard = truefalse

  

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

useassumptions

• 

useassumptions = truefalse

  

Convert assumptions into additional inequalities (default is false).

useunits

• 

useunits = {truefalse, list(variable::unit)}

  

Do preprocessing to handle units in the solve input. By default solve does this automatically if it detects units. Set this option to true to force preprocessing if detection fails.  Set this option to false to have units treated as symbols. The default behavior is that solve analyzes the input to determine what units are associated with the symbols in the input.  To aid that analysis or to override the units it finds by other units, units can be specified in this option as a list of variable::unit pairs.

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 expr=0.

• 

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 generated inside the solve engine. The default value is 100. You can set the environment variable _MaxSols instead of using the option to the solve command, but take case, because other commands may also be effected by environment variables.

• 

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. Note that if the solution includes one of these variables, you can use about to find out information on the variable. 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;

x=1

(1)

is equivalent to:

solve({x^2-1, x>0},{x});

x=1

(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;

Warning, solve may not respect assumed property 'real' on 'x'.

x=I,x=−I

(3)

instead one should use RealDomain[solve] or isolve for solutions over the real numbers or over the integers, respectively. SolveTools[SemiAlgebraic] or SolveTools[PolynomialSystem] (with the domain=real option) may also be helpful for finding real solutions.

Additional Information

• 

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

float

function

identity

ineq

linear

parametric

parametrized

radical

scalar

series

symbolic

system

Examples

Simple Examples

Solving an implicit equation

solve2yx12=2,y

12x2x+32

(4)

Solving a quadratic equation

solvex2x=2025,x

12+81012,1281012

(5)

Specifying variables

  

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

solvea2c24b2b=a6b4a3b,c

c=ba32a,c=ba32a

(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.

solvex+y<10&comma;x2=9&comma;x&comma;y

x=−3&comma;y<13&comma;x=3&comma;y<7

(7)

Solving trigonometric equations

solvecosx+y=9&comma;x

πarccosy9

(8)

Solving inequations

solve5<x2+x&comma;x

&comma;12212,12+212&comma;

(9)

solvex2y2=0&comma;xy=1

x=0&comma;y=−1&comma;x=1&comma;y=0

(10)
  

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

solvex0&comma;x2y2=0&comma;xy=1

x=1&comma;y=0

(11)

Examples Involving Units

solvex2=4Unitm2&comma;x

x=2m,x=2m

(12)

solvex2=4Unitm2&comma;x&comma;useunits=false

x=2m2,x=2m2

(13)

solvexy&comma;x2=4Unitm2

x=2m&comma;y=2m,x=2m&comma;y=2m

(14)

solvexy&comma;x2=4Unitm2&comma;useunits=x::Unitft&comma;y::Unitcm

x=2500381ft&comma;y=200cm,x=2500381ft&comma;y=200cm

(15)
  

Units can be specified for parameters

solvexy&comma;x2=a2Unitm2&comma;x&comma;y

x=am&comma;y=am,x=am&comma;y=am

(16)

solvexy&comma;x2=a2Unitm2&comma;x&comma;y&comma;useunits=a::Unit1m

x=a1m&comma;y=a1m,x=a1m&comma;y=a1m

(17)

Ignoring Multiple Identical Solutions

solvex4&comma;x

0,0,0,0

(18)

solvex4&comma;x&comma;dropmultiplicity

0

(19)

Evaluating Solutions to Floating-Point Values and Verifying Solutions

eqx45x2+6x=2

eqx45x2+6x=2

(20)

solveeq&comma;x

31&comma;13&comma;1&comma;1

(21)

solutionssolveeq&comma;x

solutions31&comma;13&comma;1&comma;1

(22)

solutions1

31

(23)
  

To convert to floating-point values, use the evalf command.

evalfsolutions

0.732050808&comma;−2.732050808&comma;1.&comma;1.

(24)

solutionssolveeq&comma;x

solutions1&comma;13&comma;31

(25)

solutions1

1

(26)
  

To verify the solution, use the eval command.

evaleq&comma;x=solutions1

2=2

(27)

Implicit Solutions

solvex4+x+1&comma;x

RootOf_Z4+_Z+1&comma;index=1,RootOf_Z4+_Z+1&comma;index=2,RootOf_Z4+_Z+1&comma;index=3,RootOf_Z4+_Z+1&comma;index=4

(28)
  

To convert to floating-point values, use the evalf command.

evalf

−0.72713608450.4300142883I&comma;−0.7271360845+0.4300142883I&comma;0.72713608450.9340992895I&comma;0.7271360845+0.9340992895I

(29)
  

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.

solvex42x3+2&comma;x

RootOf_Z42_Z3+2&comma;index=1,RootOf_Z42_Z3+2&comma;index=2,RootOf_Z42_Z3+2&comma;index=3,RootOf_Z42_Z3+2&comma;index=4

(30)

mapallvalues&comma;

12I24+2I2&comma;12I2+4+2I2&comma;12+I242I2&comma;12+I2+42I2

(31)

solvex2y2b&comma;x2y2a&comma;x&comma;y

x=RootOf_Z2RootOf_Z4+a_Z2b2a&comma;y=RootOf_Z4+a_Z2b

(32)

mapallvalues&comma;

x=a2+a2+4b2&comma;y=2a2+4b2a2&comma;x=a2+a2+4b2&comma;y=2a2+4b2a2&comma;x=a2+a2+4b2&comma;y=2a2+4b2a2&comma;x=a2+a2+4b2&comma;y=2a2+4b2a2&comma;x=a2a2+4b2&comma;y=2a2+4b2a2&comma;x=a2a2+4b2&comma;y=2a2+4b2a2&comma;x=a2a2+4b2&comma;y=2a2+4b2a2&comma;x=a2a2+4b2&comma;y=2a2+4b2a2

(33)

Assigning Solutions to Corresponding Names

equations3u+v=3&comma;u+v+w=1&comma;u2vw=0

equations3u+v=3&comma;u2vw=0&comma;u+v+w=1

(34)

solutionssolveequations

solutionsu=45&comma;v=35&comma;w=25

(35)
  

Check solutions.

evalequations&comma;solutions

0=0&comma;1=1&comma;3=3

(36)
  

Select one solution.

evalu&comma;solutions

45

(37)
  

Assign all solutions.

assignsolutions

u

45

(38)

Finding All Solutions

solvesinx=cosx1&comma;x&comma;allsolutions

2π_Z2~&comma;12π+2π_Z1~

(39)

rsolvecosx&comma;x&comma;allsolutions

r12π+π_Z3~

(40)
  

Substitute 3 for _Z3~ in r.

evalr&comma;opindetsr=3

7π2

(41)

Finding All Solutions with Restrictions

solvesinxcosx=0&comma;0<x&comma;x<10&comma;x&comma;allsolutions

x=π_Z5~&comma;x=12π+π_Z4~

(42)

about_Z4

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

about_Z5

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

solvesinxcosx=0&comma;0<x&comma;x<10&comma;x&comma;allsolutions&comma;explicit

x=π&comma;x=2π&comma;x=3π&comma;x=π2&comma;x=3π2&comma;x=5π2

(43)

Vector/Matrix/Array Equations

• 

equations can be given entry-wise in terms of any rtable

solvex+1|y+1&comma;z+2|w+2=1|1&comma;2|2

• 

a constant is interpreted as a constant rtable of the right dimensions

solvex+1|y+1&comma;z+2|w+2=1

• 

all other dimension mismatches will produce an error

solvex+1|y+1&comma;z+2|w+2=1&comma;2

Error, (in SolveTools:-rtableToEquations) invalid input: left- and right-hand sides have incompatible dimensions

• 

While it is possible to solve linear equations as solveM·v=b, it advisable to use LinearAlgebra:-LinearSolve instead.

Conditional Solutions

restart

solveb<ax&comma;x

x=xb<0a=0ba<x0<ax<baa<0otherwise

(44)

solve2<absx+a+absx+b&comma;x

a2b2+1<x&comma;x<a2b212+baa2+bbx&comma;x<a&comma;ax&comma;x<ba<2+bax&comma;x<b&comma;bx&comma;x<a2+b<aotherwise

(45)

solvex1x2x3=0&comma;ax1<2+bx1&comma;x

x=3&comma;x=2&comma;x=1a<1+bx=2&comma;x=11+baa<2+bx=1otherwise

(46)

solvex1x2x3=0&comma;ax1<2+bx1&comma;x&comma;conditionalsolutions=false

Warning, one or more conditional solutions have been discarded

x=1

(47)

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)

  

LinearAlgebra[LinearSolve] - solve a linear system A . x = b

  

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