See: Description
Interface | Description |
---|---|
PNodeI |
An element in a polynomial representation of an expression.
|
Class | Description |
---|---|
AbstractPNode |
Default methods, when more specific methods do not work.
|
Monomial |
Represents an imutable monomial a x^i * y^j * ...
|
MutiableMonomial |
A mutable monomial representing a * x^i * y^j * ...
|
MutiablePolynomial |
A mutable polynomial representing a + b + c.
|
PConstant |
Represents a constant.
|
PFunction |
Represents a function.
|
Polynomial |
Represents a polynomial.
|
PolynomialCreator |
Main entry point for simplification routines.
|
POperator |
Represents an operator.
|
PVariable |
Represents a variable.
|
An advanced simplification/expansion/comparison algorithm. To use
PolynomialCreator pc = new PolynomialCreator(jep); Node simp = pc.simplify(node); Node expand = pc.expand(node); boolean flag = pc.equals(node1,node2); int res = pc.compare(node1,node2); PNodeI poly = pc.createPoly(node);
The basic idea is to reduce each equation to a canonical form based on a total
ordering of the terms.
For example a polynomial in x will always be in the form
a+b x+c x^2+d x^3.
This makes comparison of two polynomials easy as it is just necessary to compare
term by term, whereas it is difficult to compare x^2-1 with
(x+1)*(x-1) without any simplification or reordering.
The precise total ordering is intentionally not defined as it may be later modified. As an illustration some of the rules for the ordering are 0<1<2, 5<x, x<x^2<x^3, x<y.
A polynomial is constructed from a set of monomials by arranging the monomials in order. Likewise a monomial is constructed from a set of variables by arranging the variables in name order.
The algorithm can also work with non-polynomial equations. Functions are order by the name of the function and the ordering of their arguments. Hence cos(x)<sin(x)<sin(y).
Jas4pp 1.5 © Java Analysis Studio for Particle Physics