001 /*
002 * $Id: ExamplesMulti.java 3345 2010-10-15 19:50:36Z kredel $
003 */
004
005 package edu.jas.ps;
006
007
008 import java.util.ArrayList;
009 import java.util.List;
010
011 import org.apache.log4j.BasicConfigurator;
012
013 import edu.jas.arith.BigRational;
014 import edu.jas.poly.GenPolynomial;
015 import edu.jas.poly.GenPolynomialRing;
016
017
018 /**
019 * Examples for multivariate power series implementations.
020 * @author Heinz Kredel
021 */
022
023 public class ExamplesMulti {
024
025
026 public static void main(String[] args) {
027 BasicConfigurator.configure();
028 if ( args.length > 0 ) {
029 example1();
030 example2();
031 example3();
032 example4();
033 example5();
034 example6();
035 example7();
036 example8();
037 example9();
038 example10();
039 }
040 example11();
041 }
042
043
044 public static void example1() {
045 BigRational br = new BigRational(1);
046 String[] vars = new String[] { "x", "y" };
047 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
048 System.out.println("pfac = " + pfac.toScript());
049
050 GenPolynomial<BigRational> a = pfac.parse("x^2 + x y");
051 GenPolynomial<BigRational> b = pfac.parse("y^2 + x y");
052 GenPolynomial<BigRational> c = pfac.parse("x^3 + x^2");
053 System.out.println("a = " + a);
054 System.out.println("b = " + b);
055 System.out.println("c = " + c);
056
057 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
058 System.out.println("fac = " + fac.toScript());
059
060 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
061 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
062 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
063 System.out.println("ap = " + ap);
064 System.out.println("bp = " + bp);
065 System.out.println("cp = " + cp);
066
067 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
068 L.add(ap);
069 L.add(bp);
070 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
071
072 MultiVarPowerSeries<BigRational> dp = red.normalform(L, cp);
073 System.out.println("dp = " + dp);
074 }
075
076
077 public static void example2() {
078 BigRational br = new BigRational(1);
079 String[] vars = new String[] { "x", "y" };
080 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
081 System.out.println("pfac = " + pfac.toScript());
082
083 GenPolynomial<BigRational> a = pfac.parse("x - x y");
084 GenPolynomial<BigRational> b = pfac.parse("y^2 + x^3");
085 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2");
086 System.out.println("a = " + a);
087 System.out.println("b = " + b);
088 System.out.println("c = " + c);
089
090 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
091 System.out.println("fac = " + fac.toScript());
092
093 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
094 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
095 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
096 System.out.println("ap = " + ap);
097 System.out.println("bp = " + bp);
098 System.out.println("cp = " + cp);
099
100 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
101 L.add(ap);
102 L.add(bp);
103 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
104
105 MultiVarPowerSeries<BigRational> dp = red.normalform(L, cp);
106 System.out.println("dp = " + dp);
107 }
108
109
110 public static void example3() {
111 BigRational br = new BigRational(1);
112 String[] vars = new String[] { "x", "y", "z" };
113 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
114 System.out.println("pfac = " + pfac.toScript());
115
116 GenPolynomial<BigRational> a = pfac.parse("x");
117 GenPolynomial<BigRational> b = pfac.parse("y");
118 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2 + z^3 + x^4 + y^5");
119 System.out.println("a = " + a);
120 System.out.println("b = " + b);
121 System.out.println("c = " + c);
122
123 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
124 System.out.println("fac = " + fac.toScript());
125
126 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
127 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
128 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
129 System.out.println("ap = " + ap);
130 System.out.println("bp = " + bp);
131 System.out.println("cp = " + cp);
132
133 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
134 L.add(ap);
135 L.add(bp);
136 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
137
138 MultiVarPowerSeries<BigRational> dp = red.normalform(L, cp);
139 System.out.println("dp = " + dp);
140 }
141
142
143 public static void example4() {
144 BigRational br = new BigRational(1);
145 String[] vars = new String[] { "x" };
146 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
147 System.out.println("pfac = " + pfac.toScript());
148
149 GenPolynomial<BigRational> a = pfac.parse("x + x^3 + x^5");
150 GenPolynomial<BigRational> c = pfac.parse("x + x^2");
151 System.out.println("a = " + a);
152 System.out.println("c = " + c);
153
154 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
155 //fac.setTruncate(11);
156 System.out.println("fac = " + fac.toScript());
157
158 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
159 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
160 System.out.println("ap = " + ap);
161 System.out.println("cp = " + cp);
162
163 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
164 L.add(ap);
165 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
166
167 MultiVarPowerSeries<BigRational> dp = red.normalform(L, cp);
168 System.out.println("dp = " + dp);
169 }
170
171
172 public static void example5() {
173 BigRational br = new BigRational(1);
174 String[] vars = new String[] { "x", "y" };
175 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
176 System.out.println("pfac = " + pfac.toScript());
177
178 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2 - 1");
179 System.out.println("c = " + c);
180
181 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
182 //fac.setTruncate(19);
183 System.out.println("fac = " + fac.toScript());
184
185 MultiVarPowerSeries<BigRational> ap = fac.getSIN(0);
186 MultiVarPowerSeries<BigRational> bp = fac.getCOS(1);
187 MultiVarPowerSeries<BigRational> ep = fac.getCOS(0);
188 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
189 System.out.println("ap = " + ap);
190 System.out.println("bp = " + bp);
191 System.out.println("ep = " + ep);
192 System.out.println("cp = " + cp);
193 System.out.println("ap^2 + ep^2 = " + ap.multiply(ap).sum(ep.multiply(ep)));
194
195 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
196 L.add(ap);
197 L.add(bp);
198 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
199
200 MultiVarPowerSeries<BigRational> dp = red.normalform(L, cp);
201 System.out.println("dp = " + dp);
202 }
203
204
205 public static void example6() {
206 BigRational br = new BigRational(1);
207 String[] vars = new String[] { "x", "y", "z" };
208 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
209 System.out.println("pfac = " + pfac.toScript());
210
211 GenPolynomial<BigRational> a = pfac.parse("x^5 - x y^6 + z^7");
212 GenPolynomial<BigRational> b = pfac.parse("x y + y^3 + z^3");
213 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2 - z^2");
214 System.out.println("a = " + a);
215 System.out.println("b = " + b);
216 System.out.println("c = " + c);
217
218 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
219 //fac.setTruncate(11);
220 System.out.println("fac = " + fac.toScript());
221
222 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
223 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
224 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
225 System.out.println("ap = " + ap);
226 System.out.println("bp = " + bp);
227 System.out.println("cp = " + cp);
228
229 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
230 L.add(ap);
231 L.add(bp);
232 L.add(cp);
233 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
234
235 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
236 for (MultiVarPowerSeries<BigRational> ps : S) {
237 System.out.println("ps = " + ps);
238 }
239 System.out.println("\nS = " + S);
240
241 boolean s = tm.isSTD(S);
242 System.out.println("\nisSTD = " + s);
243
244 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
245 s = red.contains(S, L);
246 System.out.println("S contains L = " + s);
247 }
248
249
250 public static void example7() {
251 BigRational br = new BigRational(1);
252 String[] vars = new String[] { "x", "y" };
253 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
254 System.out.println("pfac = " + pfac.toScript());
255
256 GenPolynomial<BigRational> a = pfac.parse("x^10 + x^9 y^2");
257 GenPolynomial<BigRational> b = pfac.parse("y^8 - x^2 y^7");
258 System.out.println("a = " + a);
259 System.out.println("b = " + b);
260
261 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
262 fac.setTruncate(12);
263 System.out.println("fac = " + fac.toScript());
264
265 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
266 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
267 System.out.println("ap = " + ap);
268 System.out.println("bp = " + bp);
269
270 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
271 L.add(ap);
272 L.add(bp);
273
274 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
275 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
276 for (MultiVarPowerSeries<BigRational> ps : S) {
277 System.out.println("ps = " + ps);
278 }
279 System.out.println("\nS = " + S);
280
281 boolean s = tm.isSTD(S);
282 System.out.println("\nisSTD = " + s);
283
284 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
285 s = red.contains(S, L);
286 System.out.println("\nS contains L = " + s);
287 }
288
289
290 public static void example8() {
291 BigRational br = new BigRational(1);
292 String[] vars = new String[] { "x", "y" };
293 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
294 System.out.println("pfac = " + pfac.toScript());
295
296 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2");
297 System.out.println("c = " + c);
298
299 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
300 //fac.setTruncate(19);
301 System.out.println("fac = " + fac.toScript());
302
303 MultiVarPowerSeries<BigRational> ap = fac.getSIN(0);
304 MultiVarPowerSeries<BigRational> bp = fac.getTAN(0);
305 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
306 System.out.println("ap = " + ap);
307 System.out.println("bp = " + bp);
308 System.out.println("cp = " + cp);
309
310 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
311 L.add(ap);
312 L.add(bp);
313 //L.add(cp);
314 System.out.println("\nL = " + L);
315
316 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
317
318 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
319 for (MultiVarPowerSeries<BigRational> ps : S) {
320 System.out.println("ps = " + ps);
321 }
322 System.out.println("\nS = " + S);
323
324 boolean s = tm.isSTD(S);
325 System.out.println("\nisSTD = " + s);
326
327 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
328 s = red.contains(S, L);
329 System.out.println("S contains L = " + s);
330 }
331
332
333 public static void example9() {
334 BigRational br = new BigRational(1);
335 String[] vars = new String[] { "x", "y", "z" };
336 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
337 System.out.println("pfac = " + pfac.toScript());
338
339 GenPolynomial<BigRational> a = pfac.parse("x z - y z - y^2 z");
340 GenPolynomial<BigRational> b = pfac.parse("x z - y z + y^2 z");
341 GenPolynomial<BigRational> c = pfac.parse("z + y^2 z");
342 System.out.println("a = " + a);
343 System.out.println("b = " + b);
344 System.out.println("c = " + c);
345
346 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
347 fac.setTruncate(11);
348 System.out.println("fac = " + fac.toScript());
349
350 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
351 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
352 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
353 System.out.println("ap = " + ap);
354 System.out.println("bp = " + bp);
355 System.out.println("cp = " + cp);
356
357 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
358 L.add(ap);
359 L.add(bp);
360 L.add(cp);
361 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
362
363 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
364 for (MultiVarPowerSeries<BigRational> ps : S) {
365 System.out.println("ps = " + ps);
366 }
367 System.out.println("\nS = " + S);
368
369 boolean s = tm.isSTD(S);
370 System.out.println("\nisSTD = " + s);
371
372 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
373 s = red.contains(S, L);
374 System.out.println("S contains L = " + s);
375 }
376
377
378 public static void example10() {
379 BigRational br = new BigRational(1);
380 String[] vars = new String[] { "x", "y", "z" };
381 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
382 System.out.println("pfac = " + pfac.toScript());
383
384 GenPolynomial<BigRational> a = pfac.parse("x^2 z^2 - y^6");
385 GenPolynomial<BigRational> b = pfac.parse("x y z^2 + y^4 z - x^5 z - x^4 y^3");
386 GenPolynomial<BigRational> c = pfac.parse("x z - y^3 + x^2 z - x y^3");
387 GenPolynomial<BigRational> d = pfac.parse("y z + x y z - x^4 - x^5");
388 System.out.println("a = " + a);
389 System.out.println("b = " + b);
390 System.out.println("c = " + c);
391 System.out.println("d = " + d);
392
393 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
394 fac.setTruncate(9);
395 System.out.println("fac = " + fac.toScript());
396
397 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
398 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
399 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
400 MultiVarPowerSeries<BigRational> dp = fac.fromPolynomial(d);
401 System.out.println("ap = " + ap);
402 System.out.println("bp = " + bp);
403 System.out.println("cp = " + cp);
404 System.out.println("dp = " + dp);
405
406 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
407 L.add(ap);
408 L.add(bp);
409 L.add(cp);
410 L.add(dp);
411 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
412
413 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
414 for (MultiVarPowerSeries<BigRational> ps : S) {
415 System.out.println("ps = " + ps);
416 }
417 System.out.println("\nS = " + S);
418
419 boolean s = tm.isSTD(S);
420 System.out.println("\nisSTD = " + s);
421
422 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
423 s = red.contains(S, L);
424 System.out.println("S contains L = " + s);
425
426 List<MultiVarPowerSeries<BigRational>> R = red.totalNormalform(S);
427 System.out.println("R = " + R);
428 s = red.contains(R, L);
429 System.out.println("R contains L = " + s);
430 s = red.contains(R, S);
431 System.out.println("R contains S = " + s);
432 }
433
434
435 public static void example11() {
436 BigRational br = new BigRational(1);
437 String[] vars = new String[] { "x", "y", "z" };
438 GenPolynomialRing<BigRational> pfac = new GenPolynomialRing<BigRational>(br, vars);
439 System.out.println("pfac = " + pfac.toScript());
440
441 GenPolynomial<BigRational> a = pfac.parse("x^5 - x y^6 - z^7");
442 GenPolynomial<BigRational> b = pfac.parse("x y + y^3 + z^3");
443 GenPolynomial<BigRational> c = pfac.parse("x^2 + y^2 - z^2");
444 System.out.println("a = " + a);
445 System.out.println("b = " + b);
446 System.out.println("c = " + c);
447
448 MultiVarPowerSeriesRing<BigRational> fac = new MultiVarPowerSeriesRing<BigRational>(pfac);
449 //fac.setTruncate(9);
450 System.out.println("fac = " + fac.toScript());
451
452 MultiVarPowerSeries<BigRational> ap = fac.fromPolynomial(a);
453 MultiVarPowerSeries<BigRational> bp = fac.fromPolynomial(b);
454 MultiVarPowerSeries<BigRational> cp = fac.fromPolynomial(c);
455 System.out.println("ap = " + ap);
456 System.out.println("bp = " + bp);
457 System.out.println("cp = " + cp);
458
459 List<MultiVarPowerSeries<BigRational>> L = new ArrayList<MultiVarPowerSeries<BigRational>>();
460 L.add(ap);
461 L.add(bp);
462 L.add(cp);
463 StandardBaseSeq<BigRational> tm = new StandardBaseSeq<BigRational>();
464
465 List<MultiVarPowerSeries<BigRational>> S = tm.STD(L);
466 for (MultiVarPowerSeries<BigRational> ps : S) {
467 System.out.println("ps = " + ps);
468 }
469 System.out.println("\nS = " + S);
470
471 boolean s = tm.isSTD(S);
472 System.out.println("\nisSTD = " + s);
473
474 ReductionSeq<BigRational> red = new ReductionSeq<BigRational>();
475 s = red.contains(S, L);
476 System.out.println("S contains L = " + s);
477
478 List<MultiVarPowerSeries<BigRational>> R = red.totalNormalform(S);
479 for (MultiVarPowerSeries<BigRational> ps : R) {
480 System.out.println("ps = " + ps);
481 }
482 System.out.println("\nR = " + R);
483 s = tm.isSTD(R);
484 System.out.println("\nisSTD = " + s);
485
486 s = red.contains(R, L);
487 System.out.println("R contains L = " + s);
488 s = red.contains(R, S);
489 System.out.println("R contains S = " + s);
490 s = red.contains(S,R);
491 System.out.println("S contains R = " + s);
492 s = red.contains(S,L);
493 System.out.println("S contains L = " + s);
494
495 List<MultiVarPowerSeries<BigRational>> Rs = tm.STD(R);
496 for (MultiVarPowerSeries<BigRational> ps : Rs) {
497 System.out.println("ps = " + ps);
498 }
499 System.out.println("\nRs = " + Rs);
500 s = tm.isSTD(Rs);
501 System.out.println("\nisSTD = " + s);
502
503 s = red.contains(Rs, R);
504 System.out.println("Rs contains R = " + s);
505
506 s = red.contains(Rs, S);
507 System.out.println("Rs contains S = " + s);
508 }
509
510 }