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    }