Public Member Functions | Private Member Functions | Private Attributes | Friends | Related Functions
vnl_real_npolynomial Class Reference

real polynomial in N variables. More...

#include <vnl_real_npolynomial.h>

List of all members.

Public Member Functions

 vnl_real_npolynomial ()
 vnl_real_npolynomial (const vnl_vector< double > &c, const vnl_matrix< unsigned int > &p)
 Construct the polynomial with coefficients vector c and with exponents matrix p.
double eval (const vnl_vector< double > &x)
 Evaluate the polynomial at x.
double deval (const vnl_vector< double > &x, unsigned int i)
 Evaluate the derivative of the polynomial at x with respect to the ith variable.
vnl_vector< double > deval (const vnl_vector< double > &x)
 Evaluate the gradient of the polynomial at x.
vnl_real_npolynomial deriv (unsigned int i)
 Differentiate the polynomial with respect to the ith variable.
vnl_real_npolynomial operator- () const
vnl_real_npolynomial operator+ (vnl_real_npolynomial const &) const
vnl_real_npolynomial operator- (vnl_real_npolynomial const &) const
vnl_real_npolynomial operator* (vnl_real_npolynomial const &) const
vnl_real_npolynomialoperator+= (vnl_real_npolynomial const &rhs)
vnl_real_npolynomialoperator-= (vnl_real_npolynomial const &rhs)
vnl_real_npolynomialoperator*= (vnl_real_npolynomial const &rhs)
vnl_real_npolynomial operator+ (double) const
vnl_real_npolynomial operator- (double P) const
vnl_real_npolynomial operator* (double) const
vnl_real_npolynomialoperator*= (double P)
vnl_real_npolynomial operator/ (double P) const
vnl_real_npolynomialoperator/= (double P)
unsigned int degree () const
 Return the degree (highest total power of all terms) of the polynomial.
unsigned int maxdegree () const
 Return the highest degree of the polynomial in an individual variable.
vcl_vector< unsigned int > degrees () const
 Return the degrees (highest power of all terms) in each of the variables.
double & operator[] (unsigned int i)
 Access to the polynomial coefficients.
double operator[] (unsigned int i) const
 Access to the polynomial coefficients.
const vnl_vector< double > & coefficients () const
 Return the vector of coefficients.
vnl_vector< double > & coefficients ()
 Return the vector of coefficients.
void set (const vnl_vector< double > &c, const vnl_matrix< unsigned int > &p)
 Set vector of coefficients of each product.
const vnl_matrix< unsigned int > & polyn () const
 Return the polynomial matrix.
vnl_matrix< unsigned int > & polyn ()
 Return the vector of coefficients.
vcl_string asString () const
 Return the textual representation of this polynomial.

Private Member Functions

void simplify ()
 Combine terms with identical exponents (i.e., identical rows in polyn_).
double eval (const vnl_matrix< double > &xn)

Private Attributes

vnl_vector< double > coeffs_
 coefficients.
vnl_matrix< unsigned int > polyn_
 degrees of every term for every variable.
unsigned int nvar_
 number of variables = # columns of polyn_.
unsigned int nterms_
 number of terms of polynomial.
unsigned int ideg_
 max. degree of polynomial.

Friends

class vnl_rnpoly_solve
vcl_ostream & operator<< (vcl_ostream &, vnl_real_npolynomial const &)

Related Functions

(Note that these are not member functions.)

void vsl_b_write (vsl_b_ostream &os, const vnl_real_npolynomial &v)
 Binary save vnl_real_npolynomial to stream.
void vsl_b_read (vsl_b_istream &is, vnl_real_npolynomial &v)
 Binary load vnl_real_polynomial from stream.
void vsl_print_summary (vcl_ostream &os, const vnl_real_npolynomial &b)
 Print human readable summary of object to a stream.

Detailed Description

real polynomial in N variables.

vnl_real_npolynomial represents a polynomial in multiple variables. Used by vnl_rnpoly_solve which solves systems of polynomial equations. Representation: an N-omial (N terms) is represented by (1) a vector with the N coefficients (vnl_vector<double>), and (2) a matrix with N rows, the i-th row representing the exponents of term i, as follows: (vnl_matrix<int>) column k contains the (integer) exponent of variable k. Example: the polynomial $A X^3 + B XY + C Y^2 + D XY^2$ is represented by the coefficients vector [A B C D] and the exponents matrix

      [3 0]
      [1 1]
      [0 2]
      [1 2].
    

Definition at line 54 of file vnl_real_npolynomial.h.


Constructor & Destructor Documentation

vnl_real_npolynomial::vnl_real_npolynomial ( ) [inline]

Definition at line 72 of file vnl_real_npolynomial.h.

vnl_real_npolynomial::vnl_real_npolynomial ( const vnl_vector< double > &  c,
const vnl_matrix< unsigned int > &  p 
)

Construct the polynomial with coefficients vector c and with exponents matrix p.

Constructor.

   coeffs = vnl_vector<double>(nterms)
   polyn = vnl_matrix<int>(nterms,nvar)
   Example: A*x^3 + B*x*y + C*y^2 + D*x*y^2
   nvar = 2;
   nterms = 4;
   coeffs = [A B C D]';
   polyn = [3 0]
           [1 1]
           [0 2]
           [1 2];
   

Definition at line 31 of file vnl_real_npolynomial.cxx.


Member Function Documentation

vcl_string vnl_real_npolynomial::asString ( ) const

Return the textual representation of this polynomial.

Definition at line 269 of file vnl_real_npolynomial.cxx.

const vnl_vector<double>& vnl_real_npolynomial::coefficients ( ) const [inline]

Return the vector of coefficients.

Definition at line 122 of file vnl_real_npolynomial.h.

vnl_vector<double>& vnl_real_npolynomial::coefficients ( ) [inline]

Return the vector of coefficients.

Definition at line 124 of file vnl_real_npolynomial.h.

unsigned int vnl_real_npolynomial::degree ( ) const

Return the degree (highest total power of all terms) of the polynomial.

Definition at line 132 of file vnl_real_npolynomial.cxx.

vcl_vector< unsigned int > vnl_real_npolynomial::degrees ( ) const

Return the degrees (highest power of all terms) in each of the variables.

Definition at line 145 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::deriv ( unsigned int  i)

Differentiate the polynomial with respect to the ith variable.

Definition at line 105 of file vnl_real_npolynomial.cxx.

double vnl_real_npolynomial::deval ( const vnl_vector< double > &  x,
unsigned int  i 
)

Evaluate the derivative of the polynomial at x with respect to the ith variable.

Definition at line 90 of file vnl_real_npolynomial.cxx.

vnl_vector< double > vnl_real_npolynomial::deval ( const vnl_vector< double > &  x)

Evaluate the gradient of the polynomial at x.

Definition at line 95 of file vnl_real_npolynomial.cxx.

double vnl_real_npolynomial::eval ( const vnl_vector< double > &  x)

Evaluate the polynomial at x.

Definition at line 78 of file vnl_real_npolynomial.cxx.

double vnl_real_npolynomial::eval ( const vnl_matrix< double > &  xn) [private]

Definition at line 66 of file vnl_real_npolynomial.cxx.

unsigned int vnl_real_npolynomial::maxdegree ( ) const [inline]

Return the highest degree of the polynomial in an individual variable.

Definition at line 111 of file vnl_real_npolynomial.h.

vnl_real_npolynomial vnl_real_npolynomial::operator* ( vnl_real_npolynomial const &  P) const

Definition at line 222 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator* ( double  P) const

Definition at line 242 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial & vnl_real_npolynomial::operator*= ( vnl_real_npolynomial const &  rhs)

Definition at line 265 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial& vnl_real_npolynomial::operator*= ( double  P) [inline]

Definition at line 98 of file vnl_real_npolynomial.h.

vnl_real_npolynomial vnl_real_npolynomial::operator+ ( vnl_real_npolynomial const &  P) const

Definition at line 167 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator+ ( double  P) const

Definition at line 186 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial & vnl_real_npolynomial::operator+= ( vnl_real_npolynomial const &  rhs)

Definition at line 257 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator- ( ) const

Definition at line 157 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator- ( vnl_real_npolynomial const &  P) const

Definition at line 203 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator- ( double  P) const [inline]

Definition at line 96 of file vnl_real_npolynomial.h.

vnl_real_npolynomial & vnl_real_npolynomial::operator-= ( vnl_real_npolynomial const &  rhs)

Definition at line 261 of file vnl_real_npolynomial.cxx.

vnl_real_npolynomial vnl_real_npolynomial::operator/ ( double  P) const [inline]

Definition at line 99 of file vnl_real_npolynomial.h.

vnl_real_npolynomial& vnl_real_npolynomial::operator/= ( double  P) [inline]

Definition at line 100 of file vnl_real_npolynomial.h.

double& vnl_real_npolynomial::operator[] ( unsigned int  i) [inline]

Access to the polynomial coefficients.

Definition at line 117 of file vnl_real_npolynomial.h.

double vnl_real_npolynomial::operator[] ( unsigned int  i) const [inline]

Access to the polynomial coefficients.

Definition at line 119 of file vnl_real_npolynomial.h.

const vnl_matrix<unsigned int>& vnl_real_npolynomial::polyn ( ) const [inline]

Return the polynomial matrix.

(ie specifying the variables in each product)

Definition at line 131 of file vnl_real_npolynomial.h.

vnl_matrix<unsigned int>& vnl_real_npolynomial::polyn ( ) [inline]

Return the vector of coefficients.

Definition at line 134 of file vnl_real_npolynomial.h.

void vnl_real_npolynomial::set ( const vnl_vector< double > &  c,
const vnl_matrix< unsigned int > &  p 
)

Set vector of coefficients of each product.

Definition at line 123 of file vnl_real_npolynomial.cxx.

void vnl_real_npolynomial::simplify ( ) [private]

Combine terms with identical exponents (i.e., identical rows in polyn_).

Remove terms with zero coefficient, also at the end of the vector.

Definition at line 44 of file vnl_real_npolynomial.cxx.


Friends And Related Function Documentation

vcl_ostream& operator<< ( vcl_ostream &  os,
vnl_real_npolynomial const &  P 
) [friend]

Definition at line 253 of file vnl_real_npolynomial.cxx.

friend class vnl_rnpoly_solve [friend]

Definition at line 67 of file vnl_real_npolynomial.h.

void vsl_b_read ( vsl_b_istream &  is,
vnl_real_npolynomial v 
) [related]

Binary load vnl_real_polynomial from stream.

Definition at line 28 of file vnl_io_real_npolynomial.cxx.

void vsl_b_write ( vsl_b_ostream &  os,
const vnl_real_npolynomial v 
) [related]

Binary save vnl_real_npolynomial to stream.

Definition at line 17 of file vnl_io_real_npolynomial.cxx.

void vsl_print_summary ( vcl_ostream &  os,
const vnl_real_npolynomial b 
) [related]

Print human readable summary of object to a stream.

Definition at line 54 of file vnl_io_real_npolynomial.cxx.


Member Data Documentation

coefficients.

Definition at line 57 of file vnl_real_npolynomial.h.

unsigned int vnl_real_npolynomial::ideg_ [private]

max. degree of polynomial.

Definition at line 65 of file vnl_real_npolynomial.h.

unsigned int vnl_real_npolynomial::nterms_ [private]

number of terms of polynomial.

Definition at line 63 of file vnl_real_npolynomial.h.

unsigned int vnl_real_npolynomial::nvar_ [private]

number of variables = # columns of polyn_.

Definition at line 61 of file vnl_real_npolynomial.h.

vnl_matrix<unsigned int> vnl_real_npolynomial::polyn_ [private]

degrees of every term for every variable.

Definition at line 59 of file vnl_real_npolynomial.h.


The documentation for this class was generated from the following files: