Root

Root[f,k]

represents the exact k^(th) root of the polynomial equation f[x]0.

Root[{f1,f2,},{k1,k2,}]

represents the last coordinate of the exact vector {a1,a2,} such that ai is the ki^(th) root of the polynomial equation fi[a1,,ai-1,x]0.

Root[{f,x0}]

represents the exact root of the general equation f[x]0 near x=x0.

Root[{f,x0,n}]

represents n roots of the equation f[x]0 near x=x0.

Details and Options

  • f must be a Function object such as (#^5-2#+1)&.
  • Root[f,k] is automatically reduced so that f has the smallest possible degree and smallest integer coefficients.
  • The ordering used by Root[f,k] takes real roots to come before complex ones, and takes complex conjugate pairs of roots to be adjacent.
  • The coefficients in the polynomial f[x] can involve symbolic parameters.
  • For linear and quadratic polynomials f[x], Root[f,k] is automatically reduced to explicit rational or radical form.
  • For other polynomials, ToRadicals can be used to convert to explicit radicals.
  • In Root[{f1,f2,},{k1,k2,}], fi must be a Function object with i formal parameters, and fi[a1,,ai-1,x] should be a polynomial in x of degree at least ki.
  • If for all i, fi[x1,,xi] is a polynomial in x1,,xi with rational number coefficients, then RootReduce can be used to represent Root[{f1,f2,},{k1,k2,}] in the Root[f,k] form.
  • Root[{f,x0}] represents an exact root of the general equation f[x]0, which can be transcendental.
  • In Root[{f,x0}], x0 must be an approximate real or complex number such that exactly one root of f[x] lies within the numerical region defined by its precision.
  • Root[{f,x0,n}] represents n roots, counting multiplicity, that lie within the numerical region defined by the precision of x0.
  • N finds the approximate numerical value of a Root object.
  • Operations such as Abs, Re, Round, and Less can be used on Root objects.
  • Root[f,k] is treated as a numeric quantity if f contains no symbolic parameters.
  • Root by default isolates the complex roots of a polynomial using validated numerical methods. SetOptions[Root,ExactRootIsolation->True] will make Root use symbolic methods that are usually much slower.
  • In StandardForm, Root[] is printed as , where approx is a numerical approximation to the root. It still represents an exact number and can be evaluated to arbitrary precision.

Examples

open allclose all

Basic Examples  (3)

Solution to a quintic:

Numerical values:

Real solutions to an exp-log equation:

Real solution to a system of equations:

Scope  (12)

Some exact values are generated automatically:

Evaluate to high precision:

Roots of a polynomial:

Real root of a triangular system of equations:

Real roots of an exp-log function:

Roots of an analytic function in a bounded region:

A triple root:

Roots of a polynomial with symbolic coefficients:

Roots of a quadratic with symbolic coefficients:

When a, b, c and the roots are real, the roots are always ordered by their values:

The "standard" formulas for the roots of a quadratic do not guarantee the ordering of roots:

Find the series with respect to a parameter:

Complex components of roots:

Exact comparisons:

Generalizations & Extensions  (2)

Algebraic number coefficients are automatically lifted to integers:

An alternative way of representing the same number:

Find Puiseux series at branch points:

Options  (1)

ExactRootIsolation  (1)

The setting of ExactRootIsolation is reflected in the third argument of a Root object:

Root isolation is performed the first time the numerical value of the root is needed:

The symbolic complex root isolation method is usually slower than the validated numeric one:

The root isolation method may affect the ordering of nonreal roots:

Applications  (17)

Solve polynomial equations of any degree in closed form in terms of Root:

Solve the characteristic equation of a Hilbert matrix:

Using Eigenvalues:

Find the minimum of a parameterized polynomial:

Solve a constant coefficient differential equation of any degree:

Solve a constant coefficient difference equation of any degree:

Find a solution of a triangular system of equations:

Represent the solution in the Root[f,k] form:

Here, the Root[f,k] representation would involve a polynomial of degree 1000000:

Compute an approximate value of the solution:

Resolve a piecewise function:

Solve univariate exp-log equations and inequalities over the reals:

Solve univariate elementary function equations over bounded intervals and regions:

Solve univariate analytic equations over bounded intervals and regions:

Find real roots of high-degree sparse polynomials and algebraic functions:

Solve univariate transcendental optimization problems:

Integrate a piecewise function with an exp-log inequality condition:

Evaluate the hard hexagon entropy constant:

Solve Kepler's equation:

Compute the Laplace limit constant:

Plot a root as a function of a parameter:

Properties & Relations  (8)

Extract the polynomial from a Root object:

Use ToRadicals to attempt to convert a Root object to radical ^(th) roots:

This root of a cubic polynomial can be expressed in terms of cube roots:

Series expansions of implicit solutions to equations:

Use RootReduce to canonicalize algebraic numbers, including from operations:

From a triangular system:

Simplify combinations of Root objects:

Reduce an equation for a parameter in a Root object:

Use RootApproximant to generate Root objects from numbers:

Roots are numeric expressions:

Possible Issues  (5)

Series at branch points may not be valid in all directions:

Canonicalization is only possible for parameterfree roots:

Parameterized roots can have complicated branch cuts in the complex parameter plane:

A non-polynomial Root object may represent a cluster of distinct roots:

Numerical computation with a higher precision yields an approximation of one of the roots:

The choice of root stays the same for subsequent computations:

A larger setting for $MaxExtraPrecision can be needed for roots with noninteger coefficients:

Neat Examples  (1)

A high power of a Pisot number that is nearly an integer:

Introduced in 1996
 (3.0)
 |
Updated in 2007
 (6.0)
2008
 (7.0)
2012
 (9.0)
2019
 (12.0)