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 }