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