001/* 002 * $Id: ExamplesPartialFraction.java 5997 2020-03-17 15:34:31Z kredel $ 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}