|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||
java.lang.Object
|
+--com.perisic.ring.Ring
|
+--com.perisic.ring.PolynomialRing
Multivariate Polynomials over a Ring. Example of use (Polynomials of Z[a][b]):
import com.perisic.ring.*;
import java.math.*;
public class PolynomialRingExample1 {
public static void main(String [] args) {
PolynomialRing P = new PolynomialRing(Ring.Z,"a,b");
RingElt a = P.map("a^2 - b^2");
RingElt b = P.map("(a - b)^2");
RingElt d = P.gcd(a,b);
System.out.println("gcd("+a+","+b+") = "+d+" (in "+P+")");
}
}
writes "gcd(a^2 + -1*b^2,a^2 + -2*a*b + b^2) = -1*a + b (in Z[a][b])" to the output.
Ring.Z| Fields inherited from class com.perisic.ring.Ring |
C,
F2,
Q,
R,
Z |
| Constructor Summary | |
PolynomialRing(Ring R,
java.lang.String variables)
Constructs a new polynomial ring over one or more variables. |
|
PolynomialRing(Ring R,
java.lang.String[] variables)
Constructs a new polynomial ring over variables.length variables. |
|
| Method Summary | |
RingElt |
add(RingElt p,
RingElt q)
Returns the sum of the parameters. |
RingElt |
construct(int[] exponents,
java.lang.Object[] coefficients)
Returns a Polynomial by matching exponents to coefficients. |
RingElt |
construct(int exponent,
java.lang.Object coefficient)
Returns the Polynomial coefficient * X^exponent, where X is the variable of this PolynomialRing. |
RingElt |
contents(RingElt b)
Returns the contents of b. |
int |
degree(RingElt b)
The degree of b, where b is considered as an univariate polynomial. |
RingElt[] |
divmod(RingElt p,
RingElt q)
Returns an array { p/q, p%q }. |
RingElt |
ediv(RingElt p,
RingElt q)
Returns p/q (Euclidian division). |
boolean |
equals(java.lang.Object ob)
true if coefficient ring and variable are the same. |
boolean |
equalZero(RingElt b)
Returns true if b is equals to zero, false otherwise. |
RingElt[] |
extendedGcd(RingElt a,
RingElt b)
Extended greatest common divisor of the parameters. |
RingElt |
gcd(RingElt p,
RingElt q)
Greatest common divisor of the parameters. |
RingElt |
getCoefficientAt(int i,
RingElt b)
Returns the coefficient for x^i of b (or null), where b is considered as an univariate polynomial over x. |
Ring |
getCoefficientRing()
Returns the Ring R sucht that the PolynomialRing is the Ring R[x] where x is the variable of the PolynomialRing. |
RingElt |
getTrueCoefficientAt(int i,
RingElt b)
Returns the coefficient for x^i of b, where b is considered as an univariate polynomial over x. |
java.lang.String |
getVariable()
Returns the variable x sucht that the PolynomialRing is the Ring R[x] where R is a Ring. |
RingElt |
globalLeadingCoefficient(RingElt b)
Determins recursively the global leading Coefficient of the polynomial over all variables. |
RingElt |
inv(RingElt b)
Returns 1/b as an element of this Ring. |
boolean |
isEuclidian()
true if the coefficient ring is a field. |
boolean |
isUFD()
true if the coefficient ring and therefore also the polynomial ring is an uniqe factorization domain. |
RingElt |
leadingCoefficient(RingElt b)
The leading coefficient of b, where b is considered as an univariate polynomial. |
RingElt |
map(RingElt a)
Maps a RingElt of various other rings to this ring. |
RingElt |
map(java.lang.String a)
Maps a String to an element of this PolynomialRing. |
RingElt |
mod(RingElt p,
RingElt q)
Returns p%q (remainder of Euclidian division). |
RingElt |
mult(RingElt p,
RingElt q)
Returns the product of the parameters. |
RingElt |
neg(RingElt b)
Returns -b as an element of this Ring. |
RingElt |
normalize(RingElt b)
Returns a normal form for the polynomial b. |
RingElt |
one()
Returns 1 as an element of this Ring. |
RingElt |
primitivePart(RingElt a)
Returns b/contents(b). |
RingElt |
tdiv(RingElt p,
RingElt q)
Returns p/q (true division). |
java.lang.String |
toString()
Returns a the polynomial ring in the format R[x1][x2]...[xn]. |
RingElt |
zero()
Returns 0 as an element of this Ring. |
| Methods inherited from class com.perisic.ring.Ring |
div,
eltToString,
equal,
evaluatePolynomial,
isField,
map,
map,
map,
pow,
pow,
sub |
| Methods inherited from class java.lang.Object |
clone,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
| Constructor Detail |
public PolynomialRing(Ring R,
java.lang.String variables)
P = new PolynomialRing(Ring.Z, "a,x1,x2,x3,y"); generates
P = Z[a][x1][x2][x3][y].
S = new PolynomialRing(new QuotientField(P),"W");
with P as before, generates
S = Z(a,x1,x2,x3,y)[W].
S = new PolynomialRing(R,"a,b"); is the same as
T = new PolynomialRing(R,"a"); S = new PolynomialRing(T,"b");
variables - is a comma separated list of alphanumeric characters.R - is the (global) Coefficient Ring
public PolynomialRing(Ring R,
java.lang.String[] variables)
an - String array of alphanumeric characters.R - is the (global) Coefficient RingPolynomialRing(Ring,java.lang.String).| Method Detail |
public java.lang.String toString()
public boolean isEuclidian()
public boolean isUFD()
public Ring getCoefficientRing()
public java.lang.String getVariable()
public RingElt add(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt mult(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt[] divmod(RingElt p,
RingElt q)
Note: For non Euclidian rings this method still works if the leading coefficient of q is a unit in the Coefficient Ring.
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped to via map(RingElt) an element of this ring.
public RingElt ediv(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt tdiv(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt mod(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt gcd(RingElt p,
RingElt q)
p - a RingElt which can be mapped via map(RingElt) to an element of this ring.q - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt[] extendedGcd(RingElt a,
RingElt b)
a - a RingElt which can be mapped via map(RingElt) to an element of this ring.b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt leadingCoefficient(RingElt b)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public int degree(RingElt b)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt getCoefficientAt(int i,
RingElt b)
null
is returned. If i > n or i < 0 a java.lang.IndexOutOfBoundException
is thrown.
Note: If the coefficient is 0 then null is returned!
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.
public RingElt getTrueCoefficientAt(int i,
RingElt b)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt normalize(RingElt b)
b - A RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt globalLeadingCoefficient(RingElt b)
b - A RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt one()
public RingElt zero()
public RingElt inv(RingElt b)
b - A RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt neg(RingElt b)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public boolean equalZero(RingElt b)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt contents(RingElt b)
b - a RingElt which can be mapped via map(RingElt)to an element of this ring.public RingElt primitivePart(RingElt a)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public boolean equals(java.lang.Object ob)
b - a RingElt which can be mapped via map(RingElt) to an element of this ring.public RingElt map(RingElt a)
Elements of the following rings are mapped into F2[a][b][c][d]:
Q[a][b][c][d], F2[a], Z[d][b], Q[b][a], F2[d][b][c][a], Quot(Z[b][d]), ...
b - a RingElt which can be mapped to an element of this ring.public RingElt map(java.lang.String a)
a - b, (a + b)^2 * 1.2/7, 1 + ((a + b + a * 5.0 + (3 - b)^13)^17)/10.
Known Bugs/Problems:
Expressions containing arithmetic operators with an alternative meaning lead to problems. For example 2E-3 for the DoubleField Number 0.002 leads to a RingException. Use 2/(10^3) instead.
b - a RingElt of this PolynomialRing which is described by the String.
public RingElt construct(int[] exponents,
java.lang.Object[] coefficients)
exponents - An array of positive integers.coefficients - An array of objects which can be mapped
to elements of the Coefficient Ring.
public RingElt construct(int exponent,
java.lang.Object coefficient)
coefficient - An object which can be mapped to an element of the
coefficient ring.exponent - A positive integer.map(java.lang.String),
map(RingElt),
Ring.map(java.math.BigInteger)
|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||