/*
* $Id$
*/
package edu.jas.ufd;
import java.util.SortedMap;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.BasicConfigurator;
import edu.jas.arith.BigInteger;
import edu.jas.arith.BigRational;
import edu.jas.kern.ComputerThreads;
import edu.jas.poly.AlgebraicNumber;
import edu.jas.poly.AlgebraicNumberRing;
import edu.jas.poly.GenPolynomial;
import edu.jas.poly.GenPolynomialRing;
import edu.jas.poly.PolyUtil;
import edu.jas.poly.TermOrder;
import edu.jas.vector.GenMatrix;
import edu.jas.vector.GenMatrixRing;
/**
* Examples for ufd and elementaty integration usage.
* @author Heinz Kredel.
*/
public class Examples {
/**
* main.
*/
public static void main(String[] args) {
//BasicConfigurator.configure();
//// no go: example6();
//BasicConfigurator.configure();
//example9();
example1();
example2();
BasicConfigurator.configure();
example10();
ComputerThreads.terminate();
}
/**
* example1 with GenMatrix.
*/
public static void example1() {
System.out.println("\n\n example 1");
BigInteger cfac;
GenPolynomialRing fac;
QuotientRing efac;
GenPolynomialRing> qfac;
GenMatrixRing>> mfac;
cfac = new BigInteger();
System.out.println("cfac = " + cfac);
String[] vc = new String[] {"a", "b"};
fac = new GenPolynomialRing(cfac,vc);
System.out.println(" fac = " + fac.toScript());
efac = new QuotientRing( fac );
System.out.println("efac = " + efac.toScript());
String[] v = new String[] {"x", "y", "z" };
qfac = new GenPolynomialRing>( efac, 3, v );
System.out.println("qfac = " + qfac.toScript());
mfac = new GenMatrixRing>>( qfac, 3, 3 );
System.out.println("mfac = " + mfac.toScript());
GenPolynomial> p;
p = qfac.random(3,4,2,0.3f);
System.out.println("\np = " + p);
GenMatrix>> m;
m = mfac.random(3,0.4f);
System.out.println("\nm = " + m.toScript());
}
/**
* example2 with GenPolynomial.
*/
public static void example2() {
System.out.println("\n\n example 2");
BigInteger fac = new BigInteger();
String[] var = new String[]{ "a", "b", "c", "d"};
int numvars = var.length;
//not needed: TermOrder tord = new TermOrder(TermOrder.INVLEX);
GenPolynomialRing ring = new GenPolynomialRing(fac,var);
List> vars=new ArrayList>();
// Build up the polynomial from vars.
for(int i=0; i (a+d)(b+c)
GenPolynomial tmp=( vars.get(0).multiply(vars.get(1)) ).sum( vars.get(0).multiply(vars.get(2)) )
.sum( vars.get(3).multiply(vars.get(1)) ).sum( vars.get(3).multiply(vars.get(2)) );
//alternative: tmp = ring.parse("a b + a c + d b + d c");
System.out.println("tmp = " +tmp);
Factorization engine = FactorFactory.getImplementation(fac);
SortedMap,Long> factors = engine.factors(tmp);
System.out.println("factors = " + factors);
}
/**
* example6. Partial fraction decomposition.
*/
public static void example6() {
System.out.println("\n\nexample 6");
// http://www.apmaths.uwo.ca/~rcorless/AM563/NOTES/Nov_16_95/node13.html
TermOrder to = new TermOrder(TermOrder.INVLEX);
BigRational cfac = new BigRational(1);
//String[] alpha = new String[] { "alpha" };
String[] vars = new String[] { "x" };
GenPolynomialRing pfac = new GenPolynomialRing(cfac, 1, to, vars);
// ( 7 x^6 + 1 ) / ( x^7 + x + 1 )
GenPolynomial D = pfac.parse("x^7 + x + 1");
GenPolynomial N = PolyUtil. baseDeriviative(D);
FactorRational engine = new FactorRational();
PartialFraction F = engine.baseAlgebraicPartialFraction(N, D);
System.out.println("\nintegral " + F);
}
/**
* example9. Rothstein-Trager and absolute factorization algorithm.
*/
public static void example9() {
System.out.println("\n\nexample 9");
TermOrder to = new TermOrder(TermOrder.INVLEX);
BigRational cfac = new BigRational(1);
//String[] alpha = new String[] { "alpha" };
String[] vars = new String[] { "x" };
GenPolynomialRing pfac = new GenPolynomialRing(cfac, 1, to, vars);
// 1 / ( x^5 + x - 7 )
GenPolynomial D = pfac.parse("( x^5 + x - 7 )");
GenPolynomial N = pfac.getONE();
FactorRational engine = new FactorRational();
PartialFraction F = engine.baseAlgebraicPartialFraction(N, D);
System.out.println("\nintegral " + F);
//PartialFraction Fa = engine.baseAlgebraicPartialFractionIrreducibleAbsolute(N,D);
//System.out.println("\nintegral_a " + Fa);
}
/**
* example10. factorization in Q(sqrt(2))(x)(sqrt(x))[y].
*/
public static void example10() {
System.out.println("\n\nexample 10");
TermOrder to = new TermOrder(TermOrder.INVLEX);
BigRational cfac = new BigRational(1);
String[] var_w2 = new String[] { "w2" };
GenPolynomialRing pfac = new GenPolynomialRing(cfac, 1, to, var_w2);
System.out.println("pfac = " + pfac.toScript());
GenPolynomial w2 = pfac.parse(" w2^2 - 2 ");
System.out.println("w2 = " + w2);
AlgebraicNumberRing a2fac = new AlgebraicNumberRing(w2, true);
System.out.println("a2fac = " + a2fac.toScript());
String[] var_x = new String[] { "x" };
GenPolynomialRing> apfac = new GenPolynomialRing>(
a2fac, 1, to, var_x);
System.out.println("apfac = " + apfac.toScript());
QuotientRing> qfac = new QuotientRing>(
apfac);
System.out.println("qfac = " + qfac.toScript());
String[] var_wx = new String[] { "wx" };
GenPolynomialRing>> pqfac = new GenPolynomialRing>>(
qfac, 1, to, var_wx);
System.out.println("pqfac = " + pqfac.toScript());
GenPolynomial>> wx = pqfac.parse(" wx^2 - { x } ");
System.out.println("wx = " + wx);
AlgebraicNumberRing>> axfac = new AlgebraicNumberRing>>(
wx, true);
System.out.println("axfac = " + axfac.toScript());
String[] var_y = new String[] { "y" };
GenPolynomialRing>>> apqfac = new GenPolynomialRing>>>(
axfac, 1, to, var_y);
System.out.println("apqfac = " + apqfac.toScript());
// ( y^2 - x ) * ( y^2 - 2 ), need {} for recursive coefficients
GenPolynomial>>> f;
f = apqfac.parse(" ( y^2 - { { x } } ) * ( y^2 - 2 )^2 ");
System.out.println("f = " + f);
FactorAbstract>>> engine = FactorFactory
.getImplementation(axfac);
System.out.println("engine = " + engine);
SortedMap>>>, Long> F = engine
.factors(f);
System.out.println("factors(f) = " + F);
}
}
Ads help maintain this website.