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 }