summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/math/polynomials.man
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/math/polynomials.man')
-rwxr-xr-xtcllib/modules/math/polynomials.man219
1 files changed, 219 insertions, 0 deletions
diff --git a/tcllib/modules/math/polynomials.man b/tcllib/modules/math/polynomials.man
new file mode 100755
index 0000000..ede9a3c
--- /dev/null
+++ b/tcllib/modules/math/polynomials.man
@@ -0,0 +1,219 @@
+[comment {-*- tcl -*- doctools manpage}]
+[manpage_begin math::polynomials n 1.0.1]
+[keywords math]
+[keywords {polynomial functions}]
+[copyright {2004 Arjen Markus <arjenmarkus@users.sourceforge.net>}]
+[moddesc {Tcl Math Library}]
+[titledesc {Polynomial functions}]
+[category Mathematics]
+[require Tcl [opt 8.3]]
+[require math::polynomials [opt 1.0.1]]
+
+[description]
+[para]
+This package deals with polynomial functions of one variable:
+
+[list_begin itemized]
+[item]
+the basic arithmetic operations are extended to polynomials
+[item]
+computing the derivatives and primitives of these functions
+[item]
+evaluation through a general procedure or via specific procedures)
+[list_end]
+
+[section "PROCEDURES"]
+
+The package defines the following public procedures:
+
+[list_begin definitions]
+
+[call [cmd ::math::polynomials::polynomial] [arg coeffs]]
+
+Return an (encoded) list that defines the polynomial. A polynomial
+[example {
+ f(x) = a + b.x + c.x**2 + d.x**3
+}]
+can be defined via:
+[example {
+ set f [::math::polynomials::polynomial [list $a $b $c $d]
+}]
+
+[list_begin arguments]
+[arg_def list coeffs] Coefficients of the polynomial (in ascending
+order)
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::polynCmd] [arg coeffs]]
+
+Create a new procedure that evaluates the polynomial. The name of the
+polynomial is automatically generated. Useful if you need to evualuate
+the polynomial many times, as the procedure consists of a single
+[lb]expr[rb] command.
+
+[list_begin arguments]
+[arg_def list coeffs] Coefficients of the polynomial (in ascending
+order) or the polynomial definition returned by the [emph polynomial]
+command.
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::evalPolyn] [arg polynomial] [arg x]]
+
+Evaluate the polynomial at x.
+
+[list_begin arguments]
+[arg_def list polynomial] The polynomial's definition (as returned by
+the polynomial command).
+order)
+
+[arg_def float x] The coordinate at which to evaluate the polynomial
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::addPolyn] [arg polyn1] [arg polyn2]]
+
+Return a new polynomial which is the sum of the two others.
+
+[list_begin arguments]
+[arg_def list polyn1] The first polynomial operand
+
+[arg_def list polyn2] The second polynomial operand
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::subPolyn] [arg polyn1] [arg polyn2]]
+
+Return a new polynomial which is the difference of the two others.
+
+[list_begin arguments]
+[arg_def list polyn1] The first polynomial operand
+
+[arg_def list polyn2] The second polynomial operand
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::multPolyn] [arg polyn1] [arg polyn2]]
+
+Return a new polynomial which is the product of the two others. If one
+of the arguments is a scalar value, the other polynomial is simply
+scaled.
+
+[list_begin arguments]
+[arg_def list polyn1] The first polynomial operand or a scalar
+
+[arg_def list polyn2] The second polynomial operand or a scalar
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::divPolyn] [arg polyn1] [arg polyn2]]
+
+Divide the first polynomial by the second polynomial and return the
+result. The remainder is dropped
+
+[list_begin arguments]
+[arg_def list polyn1] The first polynomial operand
+
+[arg_def list polyn2] The second polynomial operand
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::remainderPolyn] [arg polyn1] [arg polyn2]]
+
+Divide the first polynomial by the second polynomial and return the
+remainder.
+
+[list_begin arguments]
+[arg_def list polyn1] The first polynomial operand
+
+[arg_def list polyn2] The second polynomial operand
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::derivPolyn] [arg polyn]]
+
+Differentiate the polynomial and return the result.
+
+[list_begin arguments]
+[arg_def list polyn] The polynomial to be differentiated
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::primitivePolyn] [arg polyn]]
+
+Integrate the polynomial and return the result. The integration
+constant is set to zero.
+
+[list_begin arguments]
+[arg_def list polyn] The polynomial to be integrated
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::degreePolyn] [arg polyn]]
+
+Return the degree of the polynomial.
+
+[list_begin arguments]
+[arg_def list polyn] The polynomial to be examined
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::coeffPolyn] [arg polyn] [arg index]]
+
+Return the coefficient of the term of the index'th degree of the
+polynomial.
+
+[list_begin arguments]
+[arg_def list polyn] The polynomial to be examined
+[arg_def int index] The degree of the term
+
+[list_end]
+
+[para]
+
+[call [cmd ::math::polynomials::allCoeffsPolyn] [arg polyn]]
+
+Return the coefficients of the polynomial (in ascending order).
+
+[list_begin arguments]
+[arg_def list polyn] The polynomial in question
+
+[list_end]
+
+[list_end]
+
+[section "REMARKS ON THE IMPLEMENTATION"]
+
+The implementation for evaluating the polynomials at some point uses
+Horn's rule, which guarantees numerical stability and a minimum of
+arithmetic operations.
+
+To recognise that a polynomial definition is indeed a correct
+definition, it consists of a list of two elements: the keyword
+"POLYNOMIAL" and the list of coefficients in descending order. The
+latter makes it easier to implement Horner's rule.
+
+[vset CATEGORY {math :: polynomials}]
+[include ../doctools2base/include/feedback.inc]
+[manpage_end]