123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- \section{Roots Package}
- \begin{Introduction}{Roots Package}
- \index{roots}\index{polynomial}
- The root finding package is designed so that it can
- be used to find some or all of the roots of univariate
- polynomials with real or complex coefficients, to the accuracy
- specified by the user.
- Not all operators of \name{roots package} are described here. For using
- the operators
- \nameindex{isolater} (intervals isolating real roots)
- \nameindex{rlrootno} (number of real roots in an interval)
- \nameindex{rootsat-prec} (roots at system precision)
- \nameindex{rootval} (result in equation form)
- \nameindex{firstroot} (computing only one root)
- \nameindex{getroot} (selecting roots from a collection)
- please consult the full documentation of the package.
- \end{Introduction}
- \begin{Operator}{MKPOLY}
- \index{polynomial}\index{roots}\index{interpolation}
- Given a roots list as returned by \nameref{roots},
- the operator \name{mkpoly} constructs a
- polynomial which has these numbers as roots.
- \begin{Syntax}
- \name{mkpoly} \meta{rl}
- \end{Syntax}
- where \meta{rl} is a \nameref{list} with equations, which
- all have the same \nameref{kernel} on their left-hand sides
- and numbers as right-hand sides.
- \begin{Examples}
- mkpoly{x=1,x=-2,x=i,x=-i};&
- x**4 + x**3 - x**2 + x - 2\\
- \end{Examples}
- Note that this polynomial is unique only up to a numeric
- factor.
- \end{Operator}
- \begin{Operator}{NEARESTROOT}
- \index{roots}\index{solve}
- The operator \name{nearestroot} finds one root of a polynomial
- with an iteration using a given starting point.
- \begin{Syntax}
- \name{nearestroot}\(\meta{p}\,\meta{pt}\)
- \end{Syntax}
- where \meta{p} is a univariate polynomial
- and \meta{pt} is a number.
- \begin{Examples}
- nearestroot(x^2+2,2);&\{x=1.41421*i\}\\
- \end{Examples}
- The minimal accuracy of the result values is controlled by
- \nameref{rootacc}.
- \end{Operator}
- \begin{Operator}{REALROOTS}
- \index{roots}\index{solve}
- The operator \name{realroots} finds that real roots of a polynomial
- to an accuracy that is sufficient to separate them and which is
- a minimum of 6 decimal places.
- \begin{Syntax}
- \name{realroots}\(\meta{p}\) or \\
- \name{realroots}\(\meta{p}\,\meta{from},\meta{to}\)
- \end{Syntax}
- where \meta{p} is a univariate polynomial.
- The optional parameters \meta{from} and \meta{to} classify
- an interval: if given, exactly the real roots in this
- interval will be returned. \meta{from} and \meta{to}
- can also take the values \name{infinity} or \name{-infinity}.
- If omitted all real roots will be returned.
- Result is a \nameref{list}
- of equations which represent the roots of the polynomial at the
- given accuracy.
- \begin{Examples}
- realroots(x^5-2);&\{x=1.1487\}\\
- realroots(x^3-104*x^2+403*x-300,2,infinity);&\{x=3.0,x=100.0\}\\
- realroots(x^3-104*x^2+403*x-300,-infinity,2);&\{x=1\}\\
- \end{Examples}
- The minimal accuracy of the result values is controlled by
- \nameref{rootacc}.
- \end{Operator}
- \begin{Operator}{ROOTACC}
- \index{roots}\index{accuracy}
- The operator \name{rootacc} allows you to set the accuracy
- up to which the roots package computes its results.
- \begin{Syntax}
- \name{rootacc}\(\meta{n}\)
- \end{Syntax}
- Here \meta{n} is an integer value. The internal accuracy of
- the \name{roots} package is adjusted to a value of
- \name{max(6,n)}. The default value is \name{6}.
- \end{Operator}
- \begin{Operator}{ROOTS}
- \index{roots}\index{solve}\index{polynomial}
- The operator \name{roots}
- is the main top level function of the roots package.
- It will find all roots, real and complex, of the polynomial p
- to an accuracy that is sufficient to separate them and which is
- a minimum of 6 decimal places.
- \begin{Syntax}
- \name{roots}\(\meta{p}\)
- \end{Syntax}
- where \meta{p} is a univariate polynomial. Result is a \nameref{list}
- of equations which represent the roots of the polynomial at the
- given accuracy. In addition, \name{roots} stores
- separate lists of real roots and complex roots in the global
- variables \nameref{rootsreal} and \nameref{rootscomplex}.
- \begin{Examples}
- roots(x^5-2);&\begin{multilineoutput}{3cm}
- \{x=-0.929316 + 0.675188*i,
- x=-0.929316 - 0.675188*i,
- x=0.354967 + 1.09248*i,
- x=0.354967 - 1.09248*i,
- x=1.1487\}
- \end{multilineoutput}\\
- \end{Examples}
- The minimal accuracy of the result values is controlled by
- \nameref{rootacc}.
- \end{Operator}
- \begin{Operator}{ROOT\_VAL}
- \index{roots}\index{solve}\index{polynomial}
- The operator \name{root\_val} computes the roots of a
- univariate polynomial at system precision
- (or greater if required for root separation) and presents
- its result as a list of numbers.
- \begin{Syntax}
- \name{roots}\(\meta{p}\)
- \end{Syntax}
- where \meta{p} is a univariate polynomial.
- \begin{Examples}
- root_val(x^5-2);&\begin{multilineoutput}{3cm}
- \{-0.929316490603 + 0.6751879524*i,
- -0.929316490603 - 0.6751879524*i,
- 0.354967313105 + 1.09247705578*i,
- 0.354967313105 - 1.09247705578*i,
- 1.148698355\}
- \end{multilineoutput}\\
- \end{Examples}
- \end{Operator}
- \begin{Variable}{ROOTSCOMPLEX}
- \index{roots}\index{complex}
- When the operator \nameref{roots} is called the complex
- roots are collected in the global variable \name{rootscomplex}
- as \nameref{list}.
- \end{Variable}
- \begin{Variable}{ROOTSREAL}
- \index{roots}\index{complex}
- When the operator \nameref{roots} is called the real
- roots are collected in the global variable \name{rootreal}
- as \nameref{list}.
- \end{Variable}
|