001/*
002 * $Id$
003 */
004
005package edu.jas.ufd;
006
007
008import edu.jas.arith.BigRational;
009import edu.jas.kern.ComputerThreads;
010import edu.jas.poly.GenPolynomial;
011import edu.jas.poly.GenPolynomialRing;
012import edu.jas.poly.TermOrder;
013
014
015/**
016 * Examples related to partial fraction decomposition.
017 * 
018 * @author Heinz Kredel
019 */
020
021public class ExamplesPartialFraction {
022
023
024    /**
025     * Main program.
026     * 
027     * @param args
028     */
029    public static void main(String[] args) {
030        example11();
031        example12();
032        example13();
033        example14();
034        example15();
035        example16();
036        example17();
037        ComputerThreads.terminate();
038    }
039
040
041    /**
042     * example11.
043     */
044    public static void example11() {
045        System.out.println("\n\nexample 11");
046
047        TermOrder to = new TermOrder(TermOrder.INVLEX);
048        BigRational cfac = new BigRational(1);
049        String[] vars = new String[] { "x" };
050        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
051
052        // 1 / ( x^2 - 2 )
053        GenPolynomial<BigRational> D = pfac.parse("x^2 - 2");
054        GenPolynomial<BigRational> N = pfac.getONE();
055
056        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
057
058        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
059        System.out.println("\npartial fraction " + F);
060    }
061
062
063    /**
064     * example12.
065     */
066    public static void example12() {
067        System.out.println("\n\nexample 12");
068
069        TermOrder to = new TermOrder(TermOrder.INVLEX);
070        BigRational cfac = new BigRational(1);
071        String[] vars = new String[] { "x" };
072        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
073
074        // 1 / ( x^3 + x )
075        GenPolynomial<BigRational> D = pfac.parse("x^3 + x");
076        GenPolynomial<BigRational> N = pfac.getONE();
077
078        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
079
080        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
081        System.out.println("\npartial fraction " + F);
082    }
083
084
085    /**
086     * example13.
087     */
088    public static void example13() {
089        System.out.println("\n\nexample 13");
090
091        TermOrder to = new TermOrder(TermOrder.INVLEX);
092        BigRational cfac = new BigRational(1);
093        String[] vars = new String[] { "x" };
094        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
095
096        // 1 / ( x^6 - 5 x^4 + 5 x^2 + 4 )
097        GenPolynomial<BigRational> D = pfac.parse("x^6 - 5 x^4 + 5 x^2 + 4");
098        GenPolynomial<BigRational> N = pfac.getONE();
099
100        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
101
102        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
103        System.out.println("\npartial fraction " + F);
104    }
105
106
107    /**
108     * example14.
109     */
110    public static void example14() {
111        System.out.println("\n\nexample 14");
112
113        TermOrder to = new TermOrder(TermOrder.INVLEX);
114        BigRational cfac = new BigRational(1);
115        String[] vars = new String[] { "x" };
116        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
117
118        // 1 / ( x^4 + 4 )
119        GenPolynomial<BigRational> D = pfac.parse("x^4 + 4");
120        GenPolynomial<BigRational> N = pfac.getONE();
121
122        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
123
124        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
125        System.out.println("\npartial fraction " + F);
126    }
127
128
129    /**
130     * example15.
131     */
132    public static void example15() {
133        System.out.println("\n\nexample 15");
134
135        TermOrder to = new TermOrder(TermOrder.INVLEX);
136        BigRational cfac = new BigRational(1);
137        String[] vars = new String[] { "x" };
138        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
139
140        // 1 / ( x^3 - 2 )
141        GenPolynomial<BigRational> D = pfac.parse("x^3 - 2");
142        GenPolynomial<BigRational> N = pfac.getONE();
143
144        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
145
146        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
147        System.out.println("\npartial fraction " + F);
148    }
149
150
151    /**
152     * example16.
153     */
154    public static void example16() {
155        System.out.println("\n\nexample 16");
156
157        TermOrder to = new TermOrder(TermOrder.INVLEX);
158        BigRational cfac = new BigRational(1);
159        String[] vars = new String[] { "x" };
160        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
161
162        // 1 / ( x - 1 ) ( x - 2 ) ( x - 3 ) 
163        GenPolynomial<BigRational> D = pfac.parse("( x - 1 ) * ( x - 2 ) * ( x - 3 )");
164        GenPolynomial<BigRational> N = pfac.getONE();
165
166        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
167
168        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFraction(N, D);
169        System.out.println("\npartial fraction " + F);
170    }
171
172
173    /**
174     * example17. Absolute factorization of example15.
175     */
176    public static void example17() {
177        System.out.println("\n\nexample 17");
178
179        TermOrder to = new TermOrder(TermOrder.INVLEX);
180        BigRational cfac = new BigRational(1);
181        String[] vars = new String[] { "x" };
182        GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(cfac, 1, to, vars);
183
184        // 1 / ( x^3 - 2 )
185        GenPolynomial<BigRational> D = pfac.parse("x^3 - 2");
186        GenPolynomial<BigRational> N = pfac.getONE();
187
188        FactorRational engine = (FactorRational) FactorFactory.getImplementation(cfac);
189
190        PartialFraction<BigRational> F = engine.baseAlgebraicPartialFractionIrreducibleAbsolute(N, D);
191        System.out.println("\npartial fraction " + F);
192    }
193
194}