001/* 002 * $Id: ExamplesMulti.java 5861 2018-07-20 10:09:03Z kredel $ 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}