# Solve

Solve[expr,vars]

attempts to solve the system expr of equations or inequalities for the variables vars.

Solve[expr,vars,dom]

solves over the domain dom. Common choices of dom are Reals, Integers, and Complexes.

# Details and Options    • The system expr can be any logical combination of:
•  lhs==rhs equations lhs!=rhs inequations lhs>rhs or lhs>=rhs inequalities expr∈dom domain specifications {x,y,…}∈reg region specification ForAll[x,cond,expr] universal quantifiers Exists[x,cond,expr] existential quantifiers
• Solve[{expr1,expr2,},vars] is equivalent to Solve[expr1&&expr2&&,vars].
• A single variable or a list of variables can be specified.
• Solve gives solutions in terms of rules of the form:
•  {} no solutions {{x->solx,y->soly,…},…} several solutions {{}} solution set is full dimensional
• When a single variable is specified and a particular root of an equation has multiplicity greater than one, Solve gives several copies of the corresponding solution.
• Solve[expr,vars] assumes by default that quantities appearing algebraically in inequalities are real, while all other quantities are complex.
• Solve[expr,vars,dom] restricts all variables and parameters to belong to the domain dom.
• If dom is Reals, or a subset such as Integers or Rationals, then all constants and function values are also restricted to be real.
• Solve[expr&&varsReals,vars,Complexes] solves for real values of variables, but function values are allowed to be complex.
• Solve[expr,vars,Integers] solves Diophantine equations over the integers.
• Solve[,xreg,Reals] constrains x to be in the region reg. The different coordinates for x can be referred to using Indexed[x,i].
• Algebraic variables in expr free of the and of each other are treated as independent parameters.
• Solve deals primarily with linear and polynomial equations.
• When expr involves only polynomial equations and inequalities over real or complex domains, then Solve can always in principle solve directly for all the .
• When expr involves transcendental conditions or integer domains, Solve will often introduce additional parameters in its results.
• Solve can give explicit representations for solutions to all linear equations and inequalities over the integers and can solve a large fraction of Diophantine equations described in the literature.
• When expr involves only polynomial conditions over real or complex domains, Solve[expr,vars] will always be able to eliminate quantifiers.
• Solve gives generic solutions only. Solutions that are valid only when continuous parameters satisfy equations are removed. Other solutions that are only conditionally valid are expressed as ConditionalExpression objects.
• Conditions included in ConditionalExpression solutions may involve inequalities, Element statements, equations and inequations on non-continuous parameters, and equations with full-dimensional solutions. Inequations and NotElement conditions on continuous parameters and variables are dropped.
• Solve uses non-equivalent transformations to find solutions of transcendental equations and hence it may not find some solutions and may not establish exact conditions on the validity of the solutions found.
• Solve uses special efficient techniques for handling sparse systems of linear equations with approximate numerical coefficients.
• The following options can be given:
•  Cubics False whether to use explicit radicals to solve all cubics GeneratedParameters C how to name parameters that are generated InverseFunctions Automatic whether to use symbolic inverse functions MaxExtraConditions 0 how many extra equational conditions on continuous parameters to allow Method Automatic what method should be used Modulus 0 modulus to assume for integers Quartics False whether to use explicit radicals to solve all quartics VerifySolutions Automatic whether to verify solutions obtained using non-equivalent transformations WorkingPrecision Infinity precision to be used in computations
• With , only solutions that require the minimal number of equational conditions on continuous parameters are included.
• With , solutions that require arbitrary conditions on parameters are given and all conditions are included.
• With , only solutions that require at most k equational conditions on continuous parameters are included.
• With , Solve uses only equivalent transformations and finds all solutions.
• Solve[eqns,,Modulus->m] solves equations over the integers modulo m. With , Solve will attempt to find the largest modulus for which the equations have solutions.

# Examples

open allclose all

## Basic Examples(5)

Solve simultaneous equations in and :

Solve an equation over the reals:

Solve an equation over the positive integers:

Solve equations in a geometric region:

## Scope(73)

### Basic Uses(6)

Solutions are given as lists of replacements:

Use ReplaceAll (/.) to replace by solutions:

Check that solutions satisfy the equations:

Solve uses {} to represent the empty solution or no solution:

Solve uses {{}} to represent the universal solution or all points satisfying the equations:

Find solutions over specified domains:

Solve equations with coefficients involving a symbolic parameter:

Plot the real parts of the solutions for y as a function of the parameter a:

Solution of this equation over the reals requires conditions on the parameters:

Replace x by solutions and simplify the results:

Use Normal to remove the conditions:

Solution of this equation over the positive integers requires introduction of a new parameter:

List the first 10 solutions:

### Complex Equations in One Variable(11)

General polynomial equations:

Polynomial equations with multiple roots:

Polynomial equations with symbolic coefficients:

Algebraic equations:

Transcendental equations:  Univariate elementary function equations over bounded regions:

Univariate holomorphic function equations over bounded regions: Here Solve finds some solutions but is not able to prove there are no other solutions: Equation with a purely imaginary period over a vertical stripe in the complex plane:

Symbolic functions: ### Systems of Complex Equations in Several Variables(8)

Systems of linear equations:

Linear equations with symbolic coefficients:

Underdetermined systems of linear equations: Linear equations with no solutions:

Systems of polynomial equations:

Polynomial equations with symbolic coefficients:

Algebraic equations: Transcendental equations:   ### Real Equations in One Variable(13)

Polynomial equations:

Polynomial equations with multiple roots:

Polynomial equations with symbolic coefficients:

Algebraic equations:

Piecewise equations:

Transcendental equations, solvable using inverse functions:

Transcendental equations, solvable using special function zeros:

Transcendental inequalities, solvable using special function zeros:

Exp-log equations:

High-degree sparse polynomial equations:

Equations involving non-rational real powers:

Equation with a double root:

Tame elementary function equations:

Elementary function equations in bounded intervals:

Holomorphic function equations in bounded intervals: Periodic elementary function equations over the reals:

### Systems of Real Equations and Inequalities in Several Variables(9)

Linear systems:

Polynomial systems:

Quantified polynomial systems:

Algebraic systems:

Piecewise systems:

Transcendental systems, solvable using inverse functions:

Systems exp-log in the first variable and polynomial in the other variables:

Quantified system:

Systems elementary and bounded in the first variable and polynomial in the other variables:

Quantified system:

Systems holomorphic and bounded in the first variable and polynomial in the other variables: Quantified system: ### Diophantine Equations(11)

Linear systems of equations:

Linear systems of equations and inequalities:

Univariate polynomial equations:

Thue equations:

Sum of squares equations:

The Pythagorean equation:

Bounded systems of equations and inequalities:

Highdegree systems with no solutions:

Transcendental Diophantine systems:

Polynomial systems of congruences:

### Modular Equations(4)

Linear systems:

Univariate polynomial equations:

Systems of polynomial equations and inequations:

Quantified polynomial systems:

### Systems with Mixed Variable Domains(2)

Mixed real and complex variables:

Mixed real and integer variables:

### Geometric Regions(9)

Solve over special regions in 2D:

Plot it:

Solve over special regions in 3D:

Plot it:

A quantified system:

An implicitly defined region:

A parametrically defined region:

Derived regions:

Plot it:

Eliminate quantifiers over a Cartesian product of regions:

Regions dependent on parameters:

The answer depends on the parameter value :

Use to specify that is a vector in :

In this case is a vector in :

## Generalizations & Extensions(1)

All variables are solved for:

## Options(15)

### Cubics(1)

By default, Solve uses general formulas for solving cubics in radicals:

With , Solve does not use the formulas:

### GeneratedParameters(1)

Solve may introduce new parameters to represent the solution:

Use GeneratedParameters to control how the parameters are generated:

### InverseFunctions(3)

By default, Solve uses inverse functions but prints warning messages:  For symbols with the NumericFunction attribute, symbolic inverses are not used: With , Solve does not print inverse function warning messages:

Symbolic inverses are used for all symbols:

With , Solve does not use inverse functions: Solving algebraic equations does not require using inverse functions:

Here, a method based on Reduce is used, as it does not require using inverse functions:

### MaxExtraConditions(4)

By default, no solutions requiring extra conditions are produced:

Unless the parameters are discrete:

The default setting, , gives no solutions requiring conditions:

gives solutions requiring up to one equation on parameters:

gives solutions requiring up to two equations on parameters:

Give solutions requiring the minimal number of parameter equations:

Give all solutions:

By default, Solve drops inequation conditions on continuous parameters:

With , Solve includes all conditions:

### Method(1)

By default, Solve uses inverse functions to solve non-polynomial complex equations: With , Solve uses Reduce to find the complete solution set:

### Modulus(2)

Solve equations over the integers modulo 9:

Find a modulus for which a system of equations has a solution:

### Quartics(1)

By default, Solve uses the general formulas for solving quartics in radicals:

With , Solve does not use the formulas:

### VerifySolutions(1)

Solve verifies solutions obtained using non-equivalent transformations:

With , Solve does not verify the solutions:

Some of the solutions returned with are not correct:

This uses a fast numeric test in an attempt to select correct solutions:

In this case numeric verification gives the correct solution set:

### WorkingPrecision(1)

By default, Solve finds exact solutions of equations:

Computing the solution using 100-digit numbers is faster:

The result agrees with the exact solution in the first 100 digits:

Computing the solution using machine numbers is much faster:

The result is still quite close to the exact solution:

## Applications(6)

Find intersection points of a circle and a parabola:

Find conditions for a quartic to have all roots equal:

A method using Subresultants:

A method using quantifier elimination:

Plot a space curve given by an implicit description:

Plot the projection of the space curve on the {x,y} plane:

Find a Pythagorean triple:

Find a sequence of Pythagorean triples:

Find how to pay \$2.27 postage with 10-, 23-, and 37-cent stamps:

The same task can be accomplished with IntegerPartitions:

## Properties & Relations(13)

Solutions satisfy the equations:

Solutions are given as replacement rules and can be directly used for substitution:

Solve uses {} to represent the empty solution or no solution:

Solve uses {{}} to represent the universal solution or all points satisfying the equations:

For univariate equations, Solve repeats solutions according to their multiplicity:

Solutions of algebraic equations are often given in terms of Root objects:

Use N to compute numeric approximations of Root objects:

Root objects may involve parameters:

Use Series to compute series expansions of Root objects:

The series satisfies the equation up to order 11:

Solve represents solutions in terms of replacement rules:

Reduce represents solutions in terms of Boolean combinations of equations and inequalities:

Solve uses fast heuristics to solve transcendental equations, but may give incomplete solutions:  Reduce uses methods that are often slower, but finds all solutions and gives all necessary conditions:

Use FindInstance to find solution instances:

Like Reduce, FindInstance can be given inequalities and domain specifications:

Use DSolve to solve differential equations:

Use RSolve to solve recurrence equations:

SolveAlways gives the values of parameters for which complex equations are always true:

The same problem can be expressed using ForAll and solved with Solve or Reduce:

Resolve eliminates quantifiers, possibly without solving the resulting quantifier-free system:

Eliminate eliminates variables from systems of complex equations:

This solves the same problem using Resolve:

Reduce and Solve additionally solve the resulting equations:

## Possible Issues(4)

Solve gives generic solutions; solutions involving equations on parameters are not given:

Reduce gives all solutions, including those that require equations on parameters:

With , Solve also gives non-generic solutions:

Solve results do not depend on whether some of the input equations contain only parameters. The following two systems are equivalent and have no generic solutions:

Use MaxExtraConditions to specify the number of parameter conditions allowed:

Use the Exists quantifier to find solutions that are valid for some value of parameter :

Solve does not eliminate solutions that are neither generically correct nor generically incorrect:

The solutions are correct for and incorrect for :

For transcendental equations, Solve may not give all solutions: Use Reduce to get all solutions:

Solve with Method->"Reduce" uses Reduce to find solutions, but returns replacement rules:

Using inverse functions allows Solve to find some solutions fast: Finding the complete solution may take much longer, and the solution may be large:

This finds the values of n for which x==2 is a solution:

Introduced in 1988
(1.0)
|
Updated in 1996
(3.0)
2014
(10.0)