001 /* 002 * $Id: Examples.java 3356 2010-10-23 16:41:01Z kredel $ 003 */ 004 005 package edu.jas.integrate; 006 007 008 import java.util.List; 009 010 import edu.jas.arith.BigRational; 011 import edu.jas.kern.ComputerThreads; 012 import edu.jas.poly.GenPolynomial; 013 import edu.jas.poly.GenPolynomialRing; 014 import edu.jas.poly.TermOrder; 015 import edu.jas.ufd.Quotient; 016 import edu.jas.ufd.QuotientRing; 017 018 019 /** 020 * Examples related to elementary integration. 021 * 022 * @author Axel Kramer 023 * @author Heinz Kredel 024 */ 025 026 public class Examples { 027 028 029 /** 030 * Main program. 031 * 032 * @param args 033 */ 034 public static void main(String[] args) { 035 example1(); 036 example2(); 037 example3(); 038 } 039 040 041 /** 042 * Example rationals. 043 */ 044 public static void example1() { 045 046 BigRational br = new BigRational(0); 047 String[] vars = new String[] { "x" }; 048 GenPolynomialRing<BigRational> fac; 049 fac = new GenPolynomialRing<BigRational>(br, vars.length, new TermOrder(TermOrder.INVLEX), vars); 050 051 ElementaryIntegration<BigRational> eIntegrator = new ElementaryIntegration<BigRational>(br); 052 053 GenPolynomial<BigRational> a = fac.parse("x^7 - 24 x^4 - 4 x^2 + 8 x - 8"); 054 System.out.println("A: " + a.toString()); 055 GenPolynomial<BigRational> d = fac.parse("x^8 + 6 x^6 + 12 x^4 + 8 x^2"); 056 System.out.println("D: " + d.toString()); 057 GenPolynomial<BigRational> gcd = a.gcd(d); 058 System.out.println("GCD: " + gcd.toString()); 059 List<GenPolynomial<BigRational>>[] ret = eIntegrator.integrateHermite(a, d); 060 System.out.println("Result: " + ret[0] + " , " + ret[1]); 061 062 System.out.println("-----"); 063 064 a = fac.parse("10 x^2 - 63 x + 29"); 065 System.out.println("A: " + a.toString()); 066 d = fac.parse("x^3 - 11 x^2 + 40 x -48"); 067 System.out.println("D: " + d.toString()); 068 gcd = a.gcd(d); 069 System.out.println("GCD: " + gcd.toString()); 070 ret = eIntegrator.integrateHermite(a, d); 071 System.out.println("Result: " + ret[0] + " , " + ret[1]); 072 073 System.out.println("-----"); 074 075 a = fac.parse("x+3"); 076 System.out.println("A: " + a.toString()); 077 d = fac.parse("x^2 - 3 x - 40"); 078 System.out.println("D: " + d.toString()); 079 gcd = a.gcd(d); 080 System.out.println("GCD: " + gcd.toString()); 081 ret = eIntegrator.integrateHermite(a, d); 082 System.out.println("Result: " + ret[0] + " , " + ret[1]); 083 084 System.out.println("-----"); 085 086 a = fac.parse("10 x^2+12 x + 20"); 087 System.out.println("A: " + a.toString()); 088 d = fac.parse("x^3 - 8"); 089 System.out.println("D: " + d.toString()); 090 gcd = a.gcd(d); 091 System.out.println("GCD: " + gcd.toString()); 092 ret = eIntegrator.integrateHermite(a, d); 093 System.out.println("Result: " + ret[0] + " , " + ret[1]); 094 095 System.out.println("------------------------------------------------------\n"); 096 ComputerThreads.terminate(); 097 } 098 099 100 /** 101 * Example rational plus logarithm. 102 */ 103 public static void example2() { 104 105 BigRational br = new BigRational(0); 106 String[] vars = new String[] { "x" }; 107 GenPolynomialRing<BigRational> fac; 108 fac = new GenPolynomialRing<BigRational>(br, vars.length, new TermOrder(TermOrder.INVLEX), vars); 109 110 ElementaryIntegration<BigRational> eIntegrator = new ElementaryIntegration<BigRational>(br); 111 112 GenPolynomial<BigRational> a = fac.parse("x^7 - 24 x^4 - 4 x^2 + 8 x - 8"); 113 System.out.println("A: " + a.toString()); 114 GenPolynomial<BigRational> d = fac.parse("x^8 + 6 x^6 + 12 x^4 + 8 x^2"); 115 System.out.println("D: " + d.toString()); 116 GenPolynomial<BigRational> gcd = a.gcd(d); 117 System.out.println("GCD: " + gcd.toString()); 118 Integral<BigRational> ret = eIntegrator.integrate(a, d); 119 System.out.println("Result: " + ret); 120 121 System.out.println("-----"); 122 123 a = fac.parse("10 x^2 - 63 x + 29"); 124 System.out.println("A: " + a.toString()); 125 d = fac.parse("x^3 - 11 x^2 + 40 x -48"); 126 System.out.println("D: " + d.toString()); 127 gcd = a.gcd(d); 128 System.out.println("GCD: " + gcd.toString()); 129 ret = eIntegrator.integrate(a, d); 130 System.out.println("Result: " + ret); 131 132 System.out.println("-----"); 133 134 a = fac.parse("x+3"); 135 System.out.println("A: " + a.toString()); 136 d = fac.parse("x^2 - 3 x - 40"); 137 System.out.println("D: " + d.toString()); 138 gcd = a.gcd(d); 139 System.out.println("GCD: " + gcd.toString()); 140 ret = eIntegrator.integrate(a, d); 141 System.out.println("Result: " + ret); 142 143 System.out.println("-----"); 144 145 a = fac.parse("10 x^2+12 x + 20"); 146 System.out.println("A: " + a.toString()); 147 d = fac.parse("x^3 - 8"); 148 System.out.println("D: " + d.toString()); 149 gcd = a.gcd(d); 150 System.out.println("GCD: " + gcd.toString()); 151 ret = eIntegrator.integrate(a, d); 152 System.out.println("Result: " + ret); 153 154 System.out.println("-----"); 155 156 a = fac.parse("1"); 157 System.out.println("A: " + a.toString()); 158 d = fac.parse("(x**5 + x - 7)"); 159 System.out.println("D: " + d.toString()); 160 gcd = a.gcd(d); 161 System.out.println("GCD: " + gcd.toString()); 162 ret = eIntegrator.integrate(a, d); 163 System.out.println("Result: " + ret); 164 165 System.out.println("-----"); 166 167 a = fac.parse("1"); 168 d = fac.parse("(x**5 + x - 7)"); 169 a = a.sum(d); 170 System.out.println("A: " + a.toString()); 171 System.out.println("D: " + d.toString()); 172 gcd = a.gcd(d); 173 System.out.println("GCD: " + gcd.toString()); 174 ret = eIntegrator.integrate(a, d); 175 System.out.println("Result: " + ret); 176 177 System.out.println("-----"); 178 ComputerThreads.terminate(); 179 } 180 181 182 /** 183 * Example quotients with rational plus logarithm. 184 */ 185 public static void example3() { 186 187 BigRational br = new BigRational(0); 188 String[] vars = new String[] { "x" }; 189 GenPolynomialRing<BigRational> fac; 190 fac = new GenPolynomialRing<BigRational>(br, vars.length, new TermOrder(TermOrder.INVLEX), vars); 191 192 QuotientRing<BigRational> qfac = new QuotientRing<BigRational>(fac); 193 194 ElementaryIntegration<BigRational> eIntegrator = new ElementaryIntegration<BigRational>(br); 195 196 GenPolynomial<BigRational> a = fac.parse("x^7 - 24 x^4 - 4 x^2 + 8 x - 8"); 197 GenPolynomial<BigRational> d = fac.parse("x^8 + 6 x^6 + 12 x^4 + 8 x^2"); 198 Quotient<BigRational> q = new Quotient<BigRational>(qfac, a, d); 199 System.out.println("q = " + q); 200 QuotIntegral<BigRational> ret = eIntegrator.integrate(q); 201 System.out.println("Result: " + ret); 202 203 System.out.println("-----"); 204 205 a = fac.parse("10 x^2 - 63 x + 29"); 206 d = fac.parse("x^3 - 11 x^2 + 40 x -48"); 207 q = new Quotient<BigRational>(qfac, a, d); 208 System.out.println("q = " + q); 209 ret = eIntegrator.integrate(q); 210 System.out.println("Result: " + ret); 211 212 System.out.println("-----"); 213 214 a = fac.parse("x+3"); 215 d = fac.parse("x^2 - 3 x - 40"); 216 q = new Quotient<BigRational>(qfac, a, d); 217 System.out.println("q = " + q); 218 ret = eIntegrator.integrate(q); 219 System.out.println("Result: " + ret); 220 221 System.out.println("-----"); 222 223 a = fac.parse("10 x^2+12 x + 20"); 224 d = fac.parse("x^3 - 8"); 225 q = new Quotient<BigRational>(qfac, a, d); 226 System.out.println("q = " + q); 227 ret = eIntegrator.integrate(q); 228 System.out.println("Result: " + ret); 229 230 System.out.println("-----"); 231 232 a = fac.parse("1"); 233 d = fac.parse("(x**5 + x - 7)"); 234 q = new Quotient<BigRational>(qfac, a, d); 235 System.out.println("q = " + q); 236 ret = eIntegrator.integrate(q); 237 System.out.println("Result: " + ret); 238 239 System.out.println("-----"); 240 241 a = fac.parse("1"); 242 d = fac.parse("(x**5 + x - 7)"); 243 a = a.sum(d); 244 q = new Quotient<BigRational>(qfac, a, d); 245 System.out.println("q = " + q); 246 ret = eIntegrator.integrate(q); 247 System.out.println("Result: " + ret); 248 249 System.out.println("-----"); 250 251 Quotient<BigRational> qi = qfac.random(7); 252 //qi = qi.sum( qfac.random(5) ); 253 q = eIntegrator.deriviative(qi); 254 System.out.println("qi = " + qi); 255 System.out.println("q = " + q); 256 ret = eIntegrator.integrate(q); 257 System.out.println("Result: " + ret); 258 boolean t = eIntegrator.isIntegral(ret); 259 System.out.println("isIntegral = " + t); 260 261 System.out.println("-----"); 262 ComputerThreads.terminate(); 263 } 264 265 266 }