001/*
002 * $Id: ExamplesMulti.java 3345 2010-10-15 19:50:36Z kredel $
003 */
004
005package edu.jas.ps;
006
007
008import java.util.ArrayList;
009import java.util.List;
010
011import org.apache.log4j.BasicConfigurator;
012
013import edu.jas.arith.BigRational;
014import edu.jas.poly.GenPolynomial;
015import edu.jas.poly.GenPolynomialRing;
016
017
018/**
019 * Examples for multivariate power series implementations.
020 * @author Heinz Kredel
021 */
022
023public 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}