1@c end concepts Symmetries 2 3@menu 4* Introduction to Symmetries:: 5* Functions and Variables for Symmetries:: 6@end menu 7 8@node Introduction to Symmetries, Functions and Variables for Symmetries, Symmetries, Symmetries 9@section Introduction to Symmetries 10 11@code{sym} is a package for working with symmetric groups of polynomials. 12 13@ifnottex 14It was written for Macsyma-Symbolics by Annick Valibouze (@url{http://www-calfor.lip6.fr/~avb/}). 15The algorithms are described in the following papers: 16@end ifnottex 17@iftex 18It was written for Macsyma-Symbolics by Annick Valibouze@footnote{@url{www-calfor.lip6.fr/~avb}}. 19The algorithms are described in the following papers: 20@end iftex 21 22@ifnottex 23@enumerate 24@item 25Fonctions sym@'etriques et changements de bases. Annick Valibouze. 26EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378. 27Springer, Berlin, 1989.@* 28@url{http://www.stix.polytechnique.fr/publications/1984-1994.html} 29 30@item R@'esolvantes et fonctions sym@'etriques. Annick Valibouze. 31Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic 32and Algebraic Computation, ISSAC'89 (Portland, Oregon). 33ACM Press, 390-399, 1989.@* 34@url{http://www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf} 35 36@item Symbolic computation with symmetric polynomials, an extension to Macsyma. 37Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989), 38Springer-Verlag, New York Berlin, 308-320, 1989.@* 39@url{http://www.stix.polytechnique.fr/publications/1984-1994.html} 40 41@item Th@'eorie de Galois Constructive. Annick Valibouze. M@'emoire d'habilitation 42@`a diriger les recherches (HDR), Universit@'e P. et M. Curie (Paris VI), 1994. 43@end enumerate 44@end ifnottex 45 46@iftex 47@enumerate 48@item 49Fonctions sym@'etriques et changements de bases 50@footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}. 51Annick Valibouze. EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378. 52Springer, Berlin, 1989. 53 54@item R@'esolvantes et fonctions sym@'etriques 55@footnote{@url{www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf}}. 56Annick Valibouze. Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic 57and Algebraic Computation, ISSAC'89 (Portland, Oregon). ACM Press, 390-399, 1989. 58 59@item Symbolic computation with symmetric polynomials, an extension to Macsyma 60@footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}. 61Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989), 62Springer-Verlag, New York Berlin, 308-320, 1989. 63 64@item Th@'eorie de Galois Constructive. Annick Valibouze. M@'emoire d'habilitation 65@`a diriger les recherches (HDR), Universit@'e P. et M. Curie (Paris VI), 1994. 66@end enumerate 67@end iftex 68 69@opencatbox 70@category{Group theory} 71@category{Polynomials} 72@category{Share packages} 73@category{Package sym} 74@closecatbox 75 76 77@node Functions and Variables for Symmetries, , Introduction to Symmetries, Symmetries 78@section Functions and Variables for Symmetries 79 80 81@subsection Changing bases 82 83@anchor{comp2pui} 84@deffn {Function} comp2pui (@var{n}, @var{L}) 85implements passing from the complete symmetric functions given in the list 86@var{L} to the elementary symmetric functions from 0 to @var{n}. If the 87list @var{L} contains fewer than @var{n+1} elements, it will be completed with 88formal values of the type @var{h1}, @var{h2}, etc. If the first element 89of the list @var{L} exists, it specifies the size of the alphabet, 90otherwise the size is set to @var{n}. 91 92@c GENERATED FROM THE FOLLOWING 93@c comp2pui (3, [4, g]); 94@example 95@group 96(%i1) comp2pui (3, [4, g]); 97 2 2 98(%o1) [4, g, 2 h2 - g , 3 h3 - g h2 + g (g - 2 h2)] 99@end group 100@end example 101 102@opencatbox 103@category{Package sym} 104@closecatbox 105@end deffn 106 107@anchor{ele2pui} 108@deffn {Function} ele2pui (@var{m}, @var{L}) 109goes from the elementary symmetric functions to the complete functions. 110Similar to @code{comp2ele} and @code{comp2pui}. 111 112Other functions for changing bases: @code{comp2ele}. 113 114@opencatbox 115@category{Package sym} 116@closecatbox 117@end deffn 118 119@anchor{ele2comp} 120@deffn {Function} ele2comp (@var{m}, @var{L}) 121Goes from the elementary symmetric functions to the compete functions. 122Similar to @code{comp2ele} and @code{comp2pui}. 123 124Other functions for changing bases: @code{comp2ele}. 125 126@opencatbox 127@category{Package sym} 128@closecatbox 129@end deffn 130 131@anchor{elem} 132@deffn {Function} elem (@var{ele}, @var{sym}, @var{lvar}) 133decomposes the symmetric polynomial @var{sym}, in the variables 134contained in the list @var{lvar}, in terms of the elementary symmetric 135functions given in the list @var{ele}. If the first element of 136@var{ele} is given, it will be the size of the alphabet, otherwise the 137size will be the degree of the polynomial @var{sym}. If values are 138missing in the list @var{ele}, formal values of the type @var{e1}, 139@var{e2}, etc. will be added. The polynomial @var{sym} may be given in 140three different forms: contracted (@code{elem} should then be 1, its 141default value), partitioned (@code{elem} should be 3), or extended 142(i.e. the entire polynomial, and @code{elem} should then be 2). The 143function @code{pui} is used in the same way. 144 145On an alphabet of size 3 with @var{e1}, the first elementary symmetric 146function, with value 7, the symmetric polynomial in 3 variables whose 147contracted form (which here depends on only two of its variables) is 148@var{x^4-2*x*y} decomposes as follows in elementary symmetric functions: 149 150@c GENERATED FROM THE FOLLOWING 151@c elem ([3, 7], x^4 - 2*x*y, [x, y]); 152@c ratsimp (%); 153@example 154@group 155(%i1) elem ([3, 7], x^4 - 2*x*y, [x, y]); 156(%o1) 7 (e3 - 7 e2 + 7 (49 - e2)) + 21 e3 157 158 + (- 2 (49 - e2) - 2) e2 159@end group 160@group 161(%i2) ratsimp (%); 162 2 163(%o2) 28 e3 + 2 e2 - 198 e2 + 2401 164@end group 165@end example 166 167@noindent 168Other functions for changing bases: @code{comp2ele}. 169 170@opencatbox 171@category{Package sym} 172@closecatbox 173@end deffn 174 175@anchor{mon2schur} 176@deffn {Function} mon2schur (@var{L}) 177The list @var{L} represents the Schur function @math{S_L}: we have 178@iftex 179@math{L = [i_1,i_2, \ldots, i_q]}, with @math{i_1 \le i_2 \le \ldots \le i_q}. 180The Schur function @math{S_{i_1,i_2, \ldots, i_q}} is the minor 181of the infinite matrix @math{h_{i-j}}, @math{i \ge 1, j \ge 1}, 182consisting of the @math{q} first rows and the columns @math{i_1+1, 183i_2+2, \ldots, i_q+q}. 184@end iftex 185@ifnottex 186@math{L = [i_1, i_2, ..., i_q]}, with @math{i_1 <= i_2 <= ... <= i_q}. 187The Schur function @math{S_[i_1, i_2, ..., i_q]} is the minor 188of the infinite matrix @math{h_[i-j]}, @math{i <= 1, j <= 1}, 189consisting of the @math{q} first rows and the columns @math{1 + i_1, 1902 + i_2, ..., q + i_q}. 191@end ifnottex 192 193This Schur function can be written in terms of monomials by using 194@code{treinat} and @code{kostka}. The form returned is a symmetric 195polynomial in a contracted representation in the variables 196@tex 197$x_1,x_2,\ldots$ 198@end tex 199@ifnottex 200@math{x_1,x_2,...} 201@end ifnottex 202 203@c GENERATED FROM THE FOLLOWING 204@c mon2schur ([1, 1, 1]); 205@c mon2schur ([3]); 206@c mon2schur ([1, 2]); 207@example 208@group 209(%i1) mon2schur ([1, 1, 1]); 210(%o1) x1 x2 x3 211@end group 212@group 213(%i2) mon2schur ([3]); 214 2 3 215(%o2) x1 x2 x3 + x1 x2 + x1 216@end group 217@group 218(%i3) mon2schur ([1, 2]); 219 2 220(%o3) 2 x1 x2 x3 + x1 x2 221@end group 222@end example 223 224@noindent 225which means that for 3 variables this gives: 226 227@c UM, FROM WHAT ARGUMENTS WAS THE FOLLOWING GENERATED ?? (original comment) 228@example 229@group 230 2 x1 x2 x3 + x1^2 x2 + x2^2 x1 + x1^2 x3 + x3^2 x1 231 + x2^2 x3 + x3^2 x2 232@end group 233@end example 234@noindent 235Other functions for changing bases: @code{comp2ele}. 236 237@opencatbox 238@category{Package sym} 239@closecatbox 240@end deffn 241 242@anchor{multi} 243@deffn {Function} multi_elem (@var{l_elem}, @var{multi_pc}, @var{l_var}) 244decomposes a multi-symmetric polynomial in the multi-contracted form 245@var{multi_pc} in the groups of variables contained in the list of lists 246@var{l_var} in terms of the elementary symmetric functions contained in 247@var{l_elem}. 248 249@c GENERATED FROM THE FOLLOWING 250@c multi_elem ([[2, e1, e2], [2, f1, f2]], a*x + a^2 + x^3, [[x, y], [a, b]]); 251@c ratsimp (%); 252@example 253@group 254(%i1) multi_elem ([[2, e1, e2], [2, f1, f2]], a*x + a^2 + x^3, 255 [[x, y], [a, b]]); 256 3 257(%o1) - 2 f2 + f1 (f1 + e1) - 3 e1 e2 + e1 258@end group 259@group 260(%i2) ratsimp (%); 261 2 3 262(%o2) - 2 f2 + f1 + e1 f1 - 3 e1 e2 + e1 263@end group 264@end example 265 266Other functions for changing bases: @code{comp2ele}. 267 268@opencatbox 269@category{Package sym} 270@closecatbox 271@end deffn 272 273 274@c WHAT ARE THE ARGUMENTS FOR THIS FUNCTION ?? (original comment) 275@anchor{multi_pui} 276@deffn {Function} multi_pui 277is to the function @code{pui} what the function @code{multi_elem} is to 278the function @code{elem}. 279 280@c GENERATED FROM THE FOLLOWING 281@c multi_pui ([[2, p1, p2], [2, t1, t2]], a*x + a^2 + x^3, [[x, y], [a, b]]); 282@example 283@group 284(%i1) multi_pui ([[2, p1, p2], [2, t1, t2]], a*x + a^2 + x^3, 285 [[x, y], [a, b]]); 286 3 287 3 p1 p2 p1 288(%o1) t2 + p1 t1 + ------- - --- 289 2 2 290@end group 291@end example 292 293@opencatbox 294@category{Package sym} 295@closecatbox 296@end deffn 297 298 299@c HMM, pui IS A VARIABLE AS WELL. It's a function, for sure. 300@anchor{pui} 301@deffn {Function} pui (@var{L}, @var{sym}, @var{lvar}) 302decomposes the symmetric polynomial @var{sym}, in the variables in the 303list @var{lvar}, in terms of the power functions in the list @var{L}. 304If the first element of @var{L} is given, it will be the size of the 305alphabet, otherwise the size will be the degree of the polynomial 306@var{sym}. If values are missing in the list @var{L}, formal values of 307the type @var{p1}, @var{p2} , etc. will be added. The polynomial 308@var{sym} may be given in three different forms: contracted (@code{elem} 309should then be 1, its default value), partitioned (@code{elem} should be 3103), or extended (i.e. the entire polynomial, and @code{elem} should then 311be 2). The function @code{pui} is used in the same way. 312 313@c GENERATED FROM THE FOLLOWING 314@c pui; 315@c pui ([3, a, b], u*x*y*z, [x, y, z]); 316@c ratsimp (%); 317@example 318@group 319(%i1) pui; 320(%o1) 1 321@end group 322@group 323(%i2) pui ([3, a, b], u*x*y*z, [x, y, z]); 324 2 325 a (a - b) u (a b - p3) u 326(%o2) ------------ - ------------ 327 6 3 328@end group 329@group 330(%i3) ratsimp (%); 331 3 332 (2 p3 - 3 a b + a ) u 333(%o3) --------------------- 334 6 335@end group 336@end example 337@noindent 338Other functions for changing bases: @code{comp2ele}. 339 340@opencatbox 341@category{Package sym} 342@closecatbox 343@end deffn 344 345 346@anchor{pui2comp} 347@deffn {Function} pui2comp (@var{n}, @var{lpui}) 348renders the list of the first @var{n} complete functions (with the 349length first) in terms of the power functions given in the list 350@var{lpui}. If the list @var{lpui} is empty, the cardinal is @var{n}, 351otherwise it is its first element (as in @code{comp2ele} and 352@code{comp2pui}). 353 354@c GENERATED FROM THE FOLLOWING 355@c pui2comp (2, []); 356@c pui2comp (3, [2, a1]); 357@c ratsimp (%); 358@example 359@group 360(%i1) pui2comp (2, []); 361 2 362 p2 + p1 363(%o1) [2, p1, --------] 364 2 365@end group 366@group 367(%i2) pui2comp (3, [2, a1]); 368 2 369 a1 (p2 + a1 ) 370 2 p3 + ------------- + a1 p2 371 p2 + a1 2 372(%o2) [2, a1, --------, --------------------------] 373 2 3 374@end group 375@group 376(%i3) ratsimp (%); 377 2 3 378 p2 + a1 2 p3 + 3 a1 p2 + a1 379(%o3) [2, a1, --------, --------------------] 380 2 6 381@end group 382@end example 383@noindent 384Other functions for changing bases: @code{comp2ele}. 385 386@opencatbox 387@category{Package sym} 388@closecatbox 389@end deffn 390 391 392@anchor{pui2ele} 393@deffn {Function} pui2ele (@var{n}, @var{lpui}) 394effects the passage from power functions to the elementary symmetric functions. 395If the flag @code{pui2ele} is @code{girard}, it will return the list of 396elementary symmetric functions from 1 to @var{n}, and if the flag is 397@code{close}, it will return the @var{n}-th elementary symmetric function. 398 399Other functions for changing bases: @code{comp2ele}. 400 401@opencatbox 402@category{Package sym} 403@closecatbox 404@end deffn 405 406@anchor{puireduc} 407@deffn {Function} puireduc (@var{n}, @var{lpui}) 408@var{lpui} is a list whose first element is an integer @var{m}. 409@code{puireduc} gives the first @var{n} power functions in terms of the 410first @var{m}. 411 412@c GENERATED FROM THE FOLLOWING 413@c puireduc (3, [2]); 414@example 415@group 416(%i1) puireduc (3, [2]); 417 2 418 p1 (p1 - p2) 419(%o1) [2, p1, p2, p1 p2 - -------------] 420 2 421@end group 422@group 423(%i2) ratsimp (%); 424 3 425 3 p1 p2 - p1 426(%o2) [2, p1, p2, -------------] 427 2 428@end group 429@end example 430 431@opencatbox 432@category{Package sym} 433@closecatbox 434@end deffn 435 436@anchor{schur2comp} 437@deffn {Function} schur2comp (@var{P}, @var{l_var}) 438@var{P} is a polynomial in the variables of the list @var{l_var}. Each 439of these variables represents a complete symmetric function. In 440@var{l_var} the @var{i}-th complete symmetric function is represented by 441the concatenation of the letter @code{h} and the integer @var{i}: 442@code{h@var{i}}. This function expresses @var{P} in terms of Schur 443functions. 444 445 446@c GENERATED FROM THE FOLLOWING 447@c schur2comp (h1*h2 - h3, [h1, h2, h3]); 448@c schur2comp (a*h3, [h3]); 449@example 450@group 451(%i1) schur2comp (h1*h2 - h3, [h1, h2, h3]); 452(%o1) s 453 1, 2 454@end group 455@group 456(%i2) schur2comp (a*h3, [h3]); 457(%o2) s a 458 3 459@end group 460@end example 461 462@opencatbox 463@category{Package sym} 464@closecatbox 465@end deffn 466 467 468 469 470 471@subsection Changing representations 472@anchor{cont2part} 473@deffn {Function} cont2part (@var{pc}, @var{lvar}) 474returns the partitioned polynomial associated to the contracted form 475@var{pc} whose variables are in @var{lvar}. 476 477@c GENERATED FROM THE FOLLOWING 478@c pc: 2*a^3*b*x^4*y + x^5; 479@c cont2part (pc, [x, y]); 480@example 481@group 482(%i1) pc: 2*a^3*b*x^4*y + x^5; 483 3 4 5 484(%o1) 2 a b x y + x 485@end group 486@group 487(%i2) cont2part (pc, [x, y]); 488 3 489(%o2) [[1, 5, 0], [2 a b, 4, 1]] 490@end group 491@end example 492 493@opencatbox 494@category{Package sym} 495@closecatbox 496@end deffn 497 498 499@anchor{contract} 500@deffn {Function} contract (@var{psym}, @var{lvar}) 501returns a contracted form (i.e. a monomial orbit under the action of the 502@c CHECK ME!! 503symmetric group) of the polynomial @var{psym} in the variables contained 504in the list @var{lvar}. The function @code{explose} performs the 505inverse operation. The function @code{tcontract} tests the symmetry of 506the polynomial. 507 508@c GENERATED FROM THE FOLLOWING 509@c psym: explose (2*a^3*b*x^4*y, [x, y, z]); 510@c contract (psym, [x, y, z]); 511@example 512@group 513(%i1) psym: explose (2*a^3*b*x^4*y, [x, y, z]); 514 3 4 3 4 3 4 3 4 515(%o1) 2 a b y z + 2 a b x z + 2 a b y z + 2 a b x z 516 517 3 4 3 4 518 + 2 a b x y + 2 a b x y 519@end group 520@group 521(%i2) contract (psym, [x, y, z]); 522 3 4 523(%o2) 2 a b x y 524@end group 525@end example 526 527@opencatbox 528@category{Package sym} 529@closecatbox 530@end deffn 531 532@anchor{explose} 533@deffn {Function} explose (@var{pc}, @var{lvar}) 534returns the symmetric polynomial associated with the contracted form 535@var{pc}. The list @var{lvar} contains the variables. 536 537@c GENERATED FROM THE FOLLOWING 538@c explose (a*x + 1, [x, y, z]); 539@example 540@group 541(%i1) explose (a*x + 1, [x, y, z]); 542(%o1) a z + a y + a x + 1 543@end group 544@end example 545 546@opencatbox 547@category{Package sym} 548@closecatbox 549@end deffn 550 551@anchor{part2cont} 552@deffn {Function} part2cont (@var{ppart}, @var{lvar}) 553goes from the partitioned form to the contracted form of a symmetric polynomial. 554The contracted form is rendered with the variables in @var{lvar}. 555 556@c GENERATED FROM THE FOLLOWING 557@c part2cont ([[2*a^3*b, 4, 1]], [x, y]); 558@example 559@group 560(%i1) part2cont ([[2*a^3*b, 4, 1]], [x, y]); 561 3 4 562(%o1) 2 a b x y 563@end group 564@end example 565 566@opencatbox 567@category{Package sym} 568@closecatbox 569@end deffn 570 571 572@anchor{partpol} 573@deffn {Function} partpol (@var{psym}, @var{lvar}) 574@var{psym} is a symmetric polynomial in the variables of the list 575@var{lvar}. This function retturns its partitioned representation. 576 577@c GENERATED FROM THE FOLLOWING 578@c partpol (-a*(x + y) + 3*x*y, [x, y]); 579@example 580@group 581(%i1) partpol (-a*(x + y) + 3*x*y, [x, y]); 582(%o1) [[3, 1, 1], [- a, 1, 0]] 583@end group 584@end example 585 586@opencatbox 587@category{Package sym} 588@closecatbox 589@end deffn 590 591@anchor{tcontract} 592@deffn {Function} tcontract (@var{pol}, @var{lvar}) 593tests if the polynomial @var{pol} is symmetric in the variables of the 594list @var{lvar}. If so, it returns a contracted representation like the 595function @code{contract}. 596 597@opencatbox 598@category{Package sym} 599@closecatbox 600@end deffn 601 602 603@anchor{tpartpol} 604@deffn {Function} tpartpol (@var{pol}, @var{lvar}) 605tests if the polynomial @var{pol} is symmetric in the variables of the 606list @var{lvar}. If so, it returns its partitioned representation like 607the function @code{partpol}. 608 609@opencatbox 610@category{Package sym} 611@closecatbox 612@end deffn 613 614 615 616 617@subsection Groups and orbits 618 619@anchor{direct} 620@deffn {Function} direct ([@var{p_1}, ..., @var{p_n}], @var{y}, @var{f}, [@var{lvar_1}, ..., @var{lvar_n}]) 621calculates the direct image (see M. Giusti, D. Lazard et A. Valibouze, 622ISSAC 1988, Rome) associated to the function @var{f}, in the lists of 623variables @var{lvar_1}, ..., @var{lvar_n}, and in the polynomials 624@var{p_1}, ..., @var{p_n} in a variable @var{y}. The arity of the 625function @var{f} is important for the calulation. Thus, if the 626expression for @var{f} does not depend on some variable, it is useless 627to include this variable, and not including it will also considerably 628reduce the amount of computation. 629 630@c GENERATED FROM THE FOLLOWING 631@c direct ([z^2 - e1* z + e2, z^2 - f1* z + f2], 632@c z, b*v + a*u, [[u, v], [a, b]]); 633@c ratsimp (%); 634@c ratsimp (direct ([z^3-e1*z^2+e2*z-e3,z^2 - f1* z + f2], 635@c z, b*v + a*u, [[u, v], [a, b]])); 636@example 637@group 638(%i1) direct ([z^2 - e1* z + e2, z^2 - f1* z + f2], 639 z, b*v + a*u, [[u, v], [a, b]]); 640 2 641(%o1) y - e1 f1 y 642 643 2 2 2 2 644 - 4 e2 f2 - (e1 - 2 e2) (f1 - 2 f2) + e1 f1 645 + ----------------------------------------------- 646 2 647@end group 648@group 649(%i2) ratsimp (%); 650 2 2 2 651(%o2) y - e1 f1 y + (e1 - 4 e2) f2 + e2 f1 652@end group 653@group 654(%i3) ratsimp (direct ([z^3-e1*z^2+e2*z-e3,z^2 - f1* z + f2], 655 z, b*v + a*u, [[u, v], [a, b]])); 656 6 5 2 2 2 4 657(%o3) y - 2 e1 f1 y + ((2 e1 - 6 e2) f2 + (2 e2 + e1 ) f1 ) y 658 659 3 3 3 660 + ((9 e3 + 5 e1 e2 - 2 e1 ) f1 f2 + (- 2 e3 - 2 e1 e2) f1 ) y 661 662 2 2 4 2 663 + ((9 e2 - 6 e1 e2 + e1 ) f2 664 665 2 2 2 2 4 666 + (- 9 e1 e3 - 6 e2 + 3 e1 e2) f1 f2 + (2 e1 e3 + e2 ) f1 ) 667 668 2 2 2 3 2 669 y + (((9 e1 - 27 e2) e3 + 3 e1 e2 - e1 e2) f1 f2 670 671 2 2 3 5 672 + ((15 e2 - 2 e1 ) e3 - e1 e2 ) f1 f2 - 2 e2 e3 f1 ) y 673 674 2 3 3 2 2 3 675 + (- 27 e3 + (18 e1 e2 - 4 e1 ) e3 - 4 e2 + e1 e2 ) f2 676 677 2 3 3 2 2 678 + (27 e3 + (e1 - 9 e1 e2) e3 + e2 ) f1 f2 679 680 2 4 2 6 681 + (e1 e2 e3 - 9 e3 ) f1 f2 + e3 f1 682@end group 683@end example 684 685Finding the polynomial whose roots are the sums @math{a+u} where @math{a} 686is a root of @math{z^2 - e_1 z + e_2} and @math{u} is a root of @math{z^2 - 687f_1 z + f_2}. 688 689@c GENERATED FROM THE FOLLOWING 690@c ratsimp (direct ([z^2 - e1* z + e2, z^2 - f1* z + f2], 691@c z, a + u, [[u], [a]])); 692@example 693@group 694(%i1) ratsimp (direct ([z^2 - e1* z + e2, z^2 - f1* z + f2], 695 z, a + u, [[u], [a]])); 696 4 3 2 697(%o1) y + (- 2 f1 - 2 e1) y + (2 f2 + f1 + 3 e1 f1 + 2 e2 698 699 2 2 2 2 700 + e1 ) y + ((- 2 f1 - 2 e1) f2 - e1 f1 + (- 2 e2 - e1 ) f1 701 702 2 2 2 703 - 2 e1 e2) y + f2 + (e1 f1 - 2 e2 + e1 ) f2 + e2 f1 + e1 e2 f1 704 705 2 706 + e2 707@end group 708@end example 709 710@code{direct} accepts two flags: @code{elementaires} and 711@code{puissances} (default) which allow decomposing the symmetric 712polynomials appearing in the calculation into elementary symmetric 713functions, or power functions, respectively. 714 715Functions of @code{sym} used in this function: 716 717@code{multi_orbit} (so @code{orbit}), @code{pui_direct}, @code{multi_elem} 718(so @code{elem}), @code{multi_pui} (so @code{pui}), @code{pui2ele}, @code{ele2pui} 719(if the flag @code{direct} is in @code{puissances}). 720 721@opencatbox 722@category{Package sym} 723@closecatbox 724@end deffn 725 726 727 728@anchor{multi_orbit} 729@deffn {Function} multi_orbit (@var{P}, [@var{lvar_1}, @var{lvar_2},..., @var{lvar_p}]) 730 731@var{P} is a polynomial in the set of variables contained in the lists 732@var{lvar_1}, @var{lvar_2}, ..., @var{lvar_p}. This function returns the 733orbit of the polynomial @var{P} under the action of the product of the 734symmetric groups of the sets of variables represented in these @var{p} 735lists. 736 737@c GENERATED FROM THE FOLLOWING 738@c multi_orbit (a*x + b*y, [[x, y], [a, b]]); 739@c multi_orbit (x + y + 2*a, [[x, y], [a, b, c]]); 740@example 741@group 742(%i1) multi_orbit (a*x + b*y, [[x, y], [a, b]]); 743(%o1) [b y + a x, a y + b x] 744@end group 745@group 746(%i2) multi_orbit (x + y + 2*a, [[x, y], [a, b, c]]); 747(%o2) [y + x + 2 c, y + x + 2 b, y + x + 2 a] 748@end group 749@end example 750@noindent 751Also see: @code{orbit} for the action of a single symmetric group. 752 753@opencatbox 754@category{Package sym} 755@closecatbox 756@end deffn 757 758 759 760@anchor{multsym} 761@deffn {Function} multsym (@var{ppart_1}, @var{ppart_2}, @var{n}) 762returns the product of the two symmetric polynomials in @var{n} 763variables by working only modulo the action of the symmetric group of 764order @var{n}. The polynomials are in their partitioned form. 765 766Given the 2 symmetric polynomials in @var{x}, @var{y}: @code{3*(x + y) 767+ 2*x*y} and @code{5*(x^2 + y^2)} whose partitioned forms are @code{[[3, 7681], [2, 1, 1]]} and @code{[[5, 2]]}, their product will be 769 770@c GENERATED FROM THE FOLLOWING 771@c multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2); 772@example 773@group 774(%i1) multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2); 775(%o1) [[10, 3, 1], [15, 3, 0], [15, 2, 1]] 776@end group 777@end example 778@noindent 779that is @code{10*(x^3*y + y^3*x) + 15*(x^2*y + y^2*x) + 15*(x^3 + y^3)}. 780 781Functions for changing the representations of a symmetric polynomial: 782 783@code{contract}, @code{cont2part}, @code{explose}, @code{part2cont}, 784@code{partpol}, @code{tcontract}, @code{tpartpol}. 785 786@opencatbox 787@category{Package sym} 788@closecatbox 789@end deffn 790 791 792@anchor{orbit} 793@deffn {Function} orbit (@var{P}, @var{lvar}) 794computes the orbit of the polynomial @var{P} in the variables in the list 795@var{lvar} under the action of the symmetric group of the set of 796variables in the list @var{lvar}. 797 798@c GENERATED FROM THE FOLLOWING 799@c orbit (a*x + b*y, [x, y]); 800@c orbit (2*x + x^2, [x, y]); 801@example 802@group 803(%i1) orbit (a*x + b*y, [x, y]); 804(%o1) [a y + b x, b y + a x] 805@end group 806@group 807(%i2) orbit (2*x + x^2, [x, y]); 808 2 2 809(%o2) [y + 2 y, x + 2 x] 810@end group 811@end example 812@noindent 813See also @mref{multi_orbit} for the action of a product of symmetric 814groups on a polynomial. 815 816@opencatbox 817@category{Package sym} 818@closecatbox 819@end deffn 820 821 822@anchor{pui_direct} 823@deffn {Function} pui_direct (@var{orbite}, [@var{lvar_1}, ..., @var{lvar_n}], [@var{d_1}, @var{d_2}, ..., @var{d_n}]) 824 825Let @var{f} be a polynomial in @var{n} blocks of variables @var{lvar_1}, 826..., @var{lvar_n}. Let @var{c_i} be the number of variables in 827@var{lvar_i}, and @var{SC} be the product of @var{n} symmetric groups of 828degree @var{c_1}, ..., @var{c_n}. This group acts naturally on @var{f}. 829The list @var{orbite} is the orbit, denoted @code{@var{SC}(@var{f})}, of 830the function @var{f} under the action of @var{SC}. (This list may be 831obtained by the function @code{multi_orbit}.) The @var{di} are integers 832s.t. 833@iftex 834$c_1 \le d_1, c_2 \le d_2, \ldots, c_n \le d_n$. 835@end iftex 836@ifnottex 837@math{c_1 <= d_1, c_2 <= d_2, ..., c_n <= d_n}. 838@end ifnottex 839 840@iftex 841Let @var{SD} be the product of the symmetric groups @math{S_{d_1} \times 842S_{d_2} \times \cdots \times S_{d_n}}. 843@end iftex 844@ifnottex 845Let @var{SD} be the product of the symmetric groups @math{S_[d_1] x 846S_[d_2] x ... x S_[d_n]}. 847@end ifnottex 848The function @code{pui_direct} returns 849the first @var{n} power functions of @code{@var{SD}(@var{f})} deduced 850from the power functions of @code{@var{SC}(@var{f})}, where @var{n} is 851the size of @code{@var{SD}(@var{f})}. 852 853The result is in multi-contracted form w.r.t. @var{SD}, i.e. only one 854element is kept per orbit, under the action of @var{SD}. 855 856@c GENERATED FROM THE FOLLOWING 857@c l: [[x, y], [a, b]]; 858@c pui_direct (multi_orbit (a*x + b*y, l), l, [2, 2]); 859@c pui_direct (multi_orbit (a*x + b*y, l), l, [3, 2]); 860@c pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a], [[x, y], [a, b, c]], [2, 3]); 861@example 862@group 863(%i1) l: [[x, y], [a, b]]; 864(%o1) [[x, y], [a, b]] 865@end group 866@group 867(%i2) pui_direct (multi_orbit (a*x + b*y, l), l, [2, 2]); 868 2 2 869(%o2) [a x, 4 a b x y + a x ] 870@end group 871@group 872(%i3) pui_direct (multi_orbit (a*x + b*y, l), l, [3, 2]); 873 2 2 2 2 3 3 874(%o3) [2 a x, 4 a b x y + 2 a x , 3 a b x y + 2 a x , 875 876 2 2 2 2 3 3 4 4 87712 a b x y + 4 a b x y + 2 a x , 878 879 3 2 3 2 4 4 5 5 88010 a b x y + 5 a b x y + 2 a x , 881 882 3 3 3 3 4 2 4 2 5 5 6 6 88340 a b x y + 15 a b x y + 6 a b x y + 2 a x ] 884@end group 885@group 886(%i4) pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a], 887 [[x, y], [a, b, c]], [2, 3]); 888 2 2 889(%o4) [3 x + 2 a, 6 x y + 3 x + 4 a x + 4 a , 890 891 2 3 2 2 3 892 9 x y + 12 a x y + 3 x + 6 a x + 12 a x + 8 a ] 893@end group 894@end example 895@c THIS NEXT FUNCTION CALL TAKES A VERY LONG TIME (SEVERAL MINUTES) 896@c SO LEAVE IT OUT TIL PROCESSORS GET A LITTLE FASTER ... 897@c pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a], [[x, y], [a, b, c]], [3, 4]); 898 899@opencatbox 900@category{Package sym} 901@closecatbox 902@end deffn 903 904 905 906 907 908 909@subsection Partitions 910@anchor{kostka} 911@deffn {Function} kostka (@var{part_1}, @var{part_2}) 912written by P. Esperet, calculates the Kostka number of the partition 913@var{part_1} and @var{part_2}. 914 915@c GENERATED FROM THE FOLLOWING 916@c kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]); 917@example 918@group 919(%i1) kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]); 920(%o1) 6 921@end group 922@end example 923 924@opencatbox 925@category{Package sym} 926@closecatbox 927@end deffn 928 929 930@anchor{lgtreillis} 931@deffn {Function} lgtreillis (@var{n}, @var{m}) 932returns the list of partitions of weight @var{n} and length @var{m}. 933 934@c GENERATED FROM THE FOLLOWING 935@c lgtreillis (4, 2); 936@example 937@group 938(%i1) lgtreillis (4, 2); 939(%o1) [[3, 1], [2, 2]] 940@end group 941@end example 942@noindent 943Also see: @code{ltreillis}, @code{treillis} and @code{treinat}. 944 945@opencatbox 946@category{Package sym} 947@closecatbox 948@end deffn 949 950 951@anchor{ltreillis} 952@deffn {Function} ltreillis (@var{n}, @var{m}) 953returns the list of partitions of weight @var{n} and length less than or 954equal to @var{m}. 955 956@c GENERATED FROM THE FOLLOWING 957@c ltreillis (4, 2); 958@example 959@group 960(%i1) ltreillis (4, 2); 961(%o1) [[4, 0], [3, 1], [2, 2]] 962@end group 963@end example 964@noindent 965Also see: @code{lgtreillis}, @code{treillis} and @code{treinat}. 966 967@opencatbox 968@category{Package sym} 969@closecatbox 970@end deffn 971 972 973@anchor{treillis} 974@deffn {Function} treillis (@var{n}) 975returns all partitions of weight @var{n}. 976 977@c GENERATED FROM THE FOLLOWING 978@c treillis (4); 979@example 980@group 981(%i1) treillis (4); 982(%o1) [[4], [3, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1]] 983@end group 984@end example 985 986See also: @mrefcomma{lgtreillis} @mref{ltreillis} and @mrefdot{treinat} 987 988@opencatbox 989@category{Package sym} 990@closecatbox 991@end deffn 992 993 994@anchor{treinat} 995@deffn {Function} treinat (@var{part}) 996retruns the list of partitions inferior to the partition @var{part} w.r.t. 997the natural order. 998 999@c GENERATED FROM THE FOLLOWING 1000@c treinat ([5]); 1001@c treinat ([1, 1, 1, 1, 1]); 1002@c treinat ([3, 2]); 1003@example 1004@group 1005(%i1) treinat ([5]); 1006(%o1) [[5]] 1007@end group 1008@group 1009(%i2) treinat ([1, 1, 1, 1, 1]); 1010(%o2) [[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], 1011 1012 [1, 1, 1, 1, 1]] 1013@end group 1014@group 1015(%i3) treinat ([3, 2]); 1016(%o3) [[5], [4, 1], [3, 2]] 1017@end group 1018@end example 1019 1020See also: @mrefcomma{lgtreillis} @mref{ltreillis} and @mrefdot{treillis} 1021 1022@opencatbox 1023@category{Package sym} 1024@closecatbox 1025@end deffn 1026 1027 1028 1029 1030 1031@subsection Polynomials and their roots 1032 1033@anchor{ele2polynome} 1034@deffn {Function} ele2polynome (@var{L}, @var{z}) 1035returns the polynomial in @var{z} s.t. the elementary symmetric 1036functions of its roots are in the list @code{@var{L} = [@var{n}, 1037@var{e_1}, ..., @var{e_n}]}, where @var{n} is the degree of the 1038polynomial and @var{e_i} the @var{i}-th elementary symmetric function. 1039 1040@c GENERATED FROM THE FOLLOWING 1041@c ele2polynome ([2, e1, e2], z); 1042@c polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x); 1043@c ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x); 1044@example 1045@group 1046(%i1) ele2polynome ([2, e1, e2], z); 1047 2 1048(%o1) z - e1 z + e2 1049@end group 1050@group 1051(%i2) polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x); 1052(%o2) [7, 0, - 14, 0, 56, 0, - 56, - 22] 1053@end group 1054@group 1055(%i3) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x); 1056 7 5 3 1057(%o3) x - 14 x + 56 x - 56 x + 22 1058@end group 1059@end example 1060@noindent 1061The inverse: @code{polynome2ele (@var{P}, @var{z})}. 1062 1063Also see: 1064@code{polynome2ele}, @code{pui2polynome}. 1065 1066@opencatbox 1067@category{Package sym} 1068@closecatbox 1069@end deffn 1070 1071 1072@anchor{polynome2ele} 1073@deffn {Function} polynome2ele (@var{P}, @var{x}) 1074gives the list @code{@var{l} = [@var{n}, @var{e_1}, ..., @var{e_n}]} 1075where @var{n} is the degree of the polynomial @var{P} in the variable 1076@var{x} and @var{e_i} is the @var{i}-the elementary symmetric function 1077of the roots of @var{P}. 1078 1079@c GENERATED FROM THE FOLLOWING 1080@c polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x); 1081@c ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x); 1082@example 1083@group 1084(%i1) polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x); 1085(%o1) [7, 0, - 14, 0, 56, 0, - 56, - 22] 1086@end group 1087@group 1088(%i2) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x); 1089 7 5 3 1090(%o2) x - 14 x + 56 x - 56 x + 22 1091@end group 1092@end example 1093@noindent 1094The inverse: @code{ele2polynome (@var{l}, @var{x})} 1095 1096@opencatbox 1097@category{Package sym} 1098@closecatbox 1099@end deffn 1100 1101 1102@anchor{prodrac} 1103@deffn {Function} prodrac (@var{L}, @var{k}) 1104@var{L} is a list containing the elementary symmetric functions 1105on a set @var{A}. @code{prodrac} returns the polynomial whose roots 1106are the @var{k} by @var{k} products of the elements of @var{A}. 1107 1108Also see @code{somrac}. 1109 1110@opencatbox 1111@category{Package sym} 1112@closecatbox 1113@end deffn 1114 1115@anchor{pui2polynome} 1116@deffn {Function} pui2polynome (@var{x}, @var{lpui}) 1117calculates the polynomial in @var{x} whose power functions of the roots 1118are given in the list @var{lpui}. 1119 1120@c GENERATED FROM THE FOLLOWING 1121@c polynome2ele (x^3 - 4*x^2 + 5*x - 1, x); 1122@c ele2pui (3, %); 1123@c pui2polynome (x, %); 1124@example 1125@group 1126(%i1) pui; 1127(%o1) 1 1128@end group 1129@group 1130(%i2) kill(labels); 1131(%o0) done 1132@end group 1133@group 1134(%i1) polynome2ele (x^3 - 4*x^2 + 5*x - 1, x); 1135(%o1) [3, 4, 5, 1] 1136@end group 1137@group 1138(%i2) ele2pui (3, %); 1139(%o2) [3, 4, 6, 7] 1140@end group 1141@group 1142(%i3) pui2polynome (x, %); 1143 3 2 1144(%o3) x - 4 x + 5 x - 1 1145@end group 1146@end example 1147@noindent 1148See also: 1149@mrefcomma{polynome2ele} @mrefdot{ele2polynome} 1150 1151@opencatbox 1152@category{Package sym} 1153@closecatbox 1154@end deffn 1155 1156 1157@anchor{somrac} 1158@deffn {Function} somrac (@var{L}, @var{k}) 1159The list @var{L} contains elementary symmetric functions of a polynomial 1160@var{P} . The function computes the polynomial whose roots are the 1161@var{k} by @var{k} distinct sums of the roots of @var{P}. 1162 1163Also see @code{prodrac}. 1164 1165@opencatbox 1166@category{Package sym} 1167@closecatbox 1168@end deffn 1169 1170 1171 1172 1173 1174@subsection Resolvents 1175 1176@anchor{resolvante} 1177@deffn {Function} resolvante (@var{P}, @var{x}, @var{f}, [@var{x_1},..., @var{x_d}]) 1178calculates the resolvent of the polynomial @var{P} in @var{x} of degree 1179@var{n} >= @var{d} by the function @var{f} expressed in the variables 1180@var{x_1}, ..., @var{x_d}. For efficiency of computation it is 1181important to not include in the list @code{[@var{x_1}, ..., @var{x_d}]} 1182variables which do not appear in the transformation function @var{f}. 1183 1184To increase the efficiency of the computation one may set flags in 1185@code{resolvante} so as to use appropriate algorithms: 1186 1187If the function @var{f} is unitary: 1188@itemize @bullet 1189@item 1190A polynomial in a single variable, 1191@item 1192 linear, 1193@item 1194 alternating, 1195@item 1196 a sum, 1197@item 1198 symmetric, 1199@item 1200 a product, 1201@item 1202the function of the Cayley resolvent (usable up to degree 5) 1203 1204@c WHAT IS THIS ILLUSTRATING EXACTLY ?? 1205@example 1206@group 1207(x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x1 - 1208 (x1*x3 + x3*x5 + x5*x2 + x2*x4 + x4*x1))^2 1209@end group 1210@end example 1211 1212general, 1213@end itemize 1214the flag of @code{resolvante} may be, respectively: 1215@itemize @bullet 1216@item 1217 unitaire, 1218@item 1219 lineaire, 1220@item 1221 alternee, 1222@item 1223 somme, 1224@item 1225 produit, 1226@item 1227 cayley, 1228@item 1229 generale. 1230@end itemize 1231 1232@c GENERATED FROM THE FOLLOWING 1233@c resolvante: unitaire$ 1234@c resolvante (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x, x^3 - 1, [x]); 1235@c resolvante: lineaire$ 1236@c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]); 1237@c resolvante: general$ 1238@c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]); 1239@c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3, x4]); 1240@c direct ([x^4 - 1], x, x1 + 2*x2 + 3*x3, [[x1, x2, x3]]); 1241@c resolvante :lineaire$ 1242@c resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]); 1243@c resolvante: symetrique$ 1244@c resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]); 1245@c resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]); 1246@c resolvante: alternee$ 1247@c resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]); 1248@c resolvante: produit$ 1249@c resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]); 1250@c resolvante: symetrique$ 1251@c resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]); 1252@c resolvante: cayley$ 1253@c resolvante (x^5 - 4*x^2 + x + 1, x, a, []); 1254@example 1255(%i1) resolvante: unitaire$ 1256@group 1257(%i2) resolvante (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x, x^3 - 1, 1258 [x]); 1259 1260" resolvante unitaire " [7, 0, 28, 0, 168, 0, 1120, - 154, 7840, 1261 - 2772, 56448, - 33880, 1262 1263413952, - 352352, 3076668, - 3363360, 23114112, - 30494464, 1264 1265175230832, - 267412992, 1338886528, - 2292126760] 1266 3 6 3 9 6 3 1267[x - 1, x - 2 x + 1, x - 3 x + 3 x - 1, 1268 1269 12 9 6 3 15 12 9 6 3 1270x - 4 x + 6 x - 4 x + 1, x - 5 x + 10 x - 10 x + 5 x 1271 1272 18 15 12 9 6 3 1273 - 1, x - 6 x + 15 x - 20 x + 15 x - 6 x + 1, 1274 1275 21 18 15 12 9 6 3 1276x - 7 x + 21 x - 35 x + 35 x - 21 x + 7 x - 1] 1277[- 7, 1127, - 6139, 431767, - 5472047, 201692519, - 3603982011] 1278 7 6 5 4 3 2 1279(%o2) y + 7 y - 539 y - 1841 y + 51443 y + 315133 y 1280 1281 + 376999 y + 125253 1282@end group 1283(%i3) resolvante: lineaire$ 1284@group 1285(%i4) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]); 1286 1287" resolvante lineaire " 1288 24 20 16 12 8 1289(%o4) y + 80 y + 7520 y + 1107200 y + 49475840 y 1290 1291 4 1292 + 344489984 y + 655360000 1293@end group 1294(%i5) resolvante: general$ 1295@group 1296(%i6) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]); 1297 1298" resolvante generale " 1299 24 20 16 12 8 1300(%o6) y + 80 y + 7520 y + 1107200 y + 49475840 y 1301 1302 4 1303 + 344489984 y + 655360000 1304@end group 1305@group 1306(%i7) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3, x4]); 1307 1308" resolvante generale " 1309 24 20 16 12 8 1310(%o7) y + 80 y + 7520 y + 1107200 y + 49475840 y 1311 1312 4 1313 + 344489984 y + 655360000 1314@end group 1315@group 1316(%i8) direct ([x^4 - 1], x, x1 + 2*x2 + 3*x3, [[x1, x2, x3]]); 1317 24 20 16 12 8 1318(%o8) y + 80 y + 7520 y + 1107200 y + 49475840 y 1319 1320 4 1321 + 344489984 y + 655360000 1322@end group 1323(%i9) resolvante :lineaire$ 1324@group 1325(%i10) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]); 1326 1327" resolvante lineaire " 1328 4 1329(%o10) y - 1 1330@end group 1331(%i11) resolvante: symetrique$ 1332@group 1333(%i12) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]); 1334 1335" resolvante symetrique " 1336 4 1337(%o12) y - 1 1338@end group 1339@group 1340(%i13) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]); 1341 1342" resolvante symetrique " 1343 6 2 1344(%o13) y - 4 y - 1 1345@end group 1346(%i14) resolvante: alternee$ 1347@group 1348(%i15) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]); 1349 1350" resolvante alternee " 1351 12 8 6 4 2 1352(%o15) y + 8 y + 26 y - 112 y + 216 y + 229 1353@end group 1354(%i16) resolvante: produit$ 1355@group 1356(%i17) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]); 1357 1358" resolvante produit " 1359 35 33 29 28 27 26 1360(%o17) y - 7 y - 1029 y + 135 y + 7203 y - 756 y 1361 1362 24 23 22 21 20 1363 + 1323 y + 352947 y - 46305 y - 2463339 y + 324135 y 1364 1365 19 18 17 15 1366 - 30618 y - 453789 y - 40246444 y + 282225202 y 1367 1368 14 12 11 10 1369 - 44274492 y + 155098503 y + 12252303 y + 2893401 y 1370 1371 9 8 7 6 1372 - 171532242 y + 6751269 y + 2657205 y - 94517766 y 1373 1374 5 3 1375 - 3720087 y + 26040609 y + 14348907 1376@end group 1377(%i18) resolvante: symetrique$ 1378@group 1379(%i19) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]); 1380 1381" resolvante symetrique " 1382 35 33 29 28 27 26 1383(%o19) y - 7 y - 1029 y + 135 y + 7203 y - 756 y 1384 1385 24 23 22 21 20 1386 + 1323 y + 352947 y - 46305 y - 2463339 y + 324135 y 1387 1388 19 18 17 15 1389 - 30618 y - 453789 y - 40246444 y + 282225202 y 1390 1391 14 12 11 10 1392 - 44274492 y + 155098503 y + 12252303 y + 2893401 y 1393 1394 9 8 7 6 1395 - 171532242 y + 6751269 y + 2657205 y - 94517766 y 1396 1397 5 3 1398 - 3720087 y + 26040609 y + 14348907 1399@end group 1400(%i20) resolvante: cayley$ 1401@group 1402(%i21) resolvante (x^5 - 4*x^2 + x + 1, x, a, []); 1403 1404" resolvante de Cayley " 1405 6 5 4 3 2 1406(%o21) x - 40 x + 4080 x - 92928 x + 3772160 x + 37880832 x 1407 1408 + 93392896 1409@end group 1410@end example 1411 1412For the Cayley resolvent, the 2 last arguments are neutral and the input 1413polynomial must necessarily be of degree 5. 1414 1415See also: 1416@flushleft 1417@mrefcomma{resolvante_bipartite} @mrefcomma{resolvante_produit_sym} 1418@mrefcomma{resolvante_unitaire} @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} 1419@mrefcomma{resolvante_klein3} @mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale} 1420@end flushleft 1421 1422@opencatbox 1423@category{Package sym} 1424@closecatbox 1425@end deffn 1426 1427 1428@anchor{resolvante_alternee1} 1429@deffn {Function} resolvante_alternee1 (@var{P}, @var{x}) 1430calculates the transformation 1431@code{@var{P}(@var{x})} of degree @var{n} by the function 1432@iftex 1433@math{\prod_{1\leq i<j\leq n-1} (x_i-x_j)}. 1434@end iftex 1435@ifnottex 1436@math{product(x_i - x_j, 1 <= i < j <= n - 1)}. 1437@end ifnottex 1438 1439See also: 1440@flushleft 1441@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1442@mrefcomma{resolvante} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3} 1443@mrefcomma{resolvante_vierer} @mrefcomma{resolvante_diedrale} @mrefdot{resolvante_bipartite} 1444@end flushleft 1445 1446@opencatbox 1447@category{Package sym} 1448@closecatbox 1449@end deffn 1450 1451 1452@anchor{resolvante_bipartite} 1453@deffn {Function} resolvante_bipartite (@var{P}, @var{x}) 1454calculates the transformation of 1455@code{@var{P}(@var{x})} of even degree @var{n} by the function 1456@iftex 1457@math{x_1 x_2 \cdots x_{n/2} + x_{n/2+1}\cdots x_n}. 1458@end iftex 1459@c UNFORTUNATELY TEXINFO DOES NOT HAVE A NOTION OF "@ELSE" 1460@c SO IT IS NECESSARY TO REPEAT THE FOLLOWING NON-TEX STUFF FOR INFO AND FOR HTML ... SIGH 1461@ifnottex 1462@math{x_1 x_2 ... x_[n/2] + x_[n/2 + 1] ... x_n}. 1463@end ifnottex 1464 1465@c GENERATED FROM THE FOLLOWING 1466@c resolvante_bipartite (x^6 + 108, x); 1467@example 1468@group 1469(%i1) resolvante_bipartite (x^6 + 108, x); 1470 10 8 6 4 1471(%o1) y - 972 y + 314928 y - 34012224 y 1472@end group 1473@end example 1474 1475See also: 1476@flushleft 1477@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1478@mrefcomma{resolvante} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3} 1479@mrefcomma{resolvante_vierer} @mrefcomma{resolvante_diedrale} @mrefdot{resolvante_alternee1} 1480@end flushleft 1481 1482@opencatbox 1483@category{Package sym} 1484@closecatbox 1485@end deffn 1486 1487 1488@anchor{resolvante_diedrale} 1489@deffn {Function} resolvante_diedrale (@var{P}, @var{x}) 1490calculates the transformation of @code{@var{P}(@var{x})} by the function 1491@code{@var{x_1} @var{x_2} + @var{x_3} @var{x_4}}. 1492 1493@c GENERATED FROM THE FOLLOWING 1494@c resolvante_diedrale (x^5 - 3*x^4 + 1, x); 1495@example 1496@group 1497(%i1) resolvante_diedrale (x^5 - 3*x^4 + 1, x); 1498 15 12 11 10 9 8 7 1499(%o1) x - 21 x - 81 x - 21 x + 207 x + 1134 x + 2331 x 1500 1501 6 5 4 3 2 1502 - 945 x - 4970 x - 18333 x - 29079 x - 20745 x - 25326 x 1503 1504 - 697 1505@end group 1506@end example 1507 1508See also: 1509@flushleft 1510@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1511@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3} 1512@mrefcomma{resolvante_vierer} @mrefdot{resolvante} 1513@end flushleft 1514 1515@opencatbox 1516@category{Package sym} 1517@closecatbox 1518@end deffn 1519 1520 1521@anchor{resolvante_klein} 1522@deffn {Function} resolvante_klein (@var{P}, @var{x}) 1523calculates the transformation of @code{@var{P}(@var{x})} by the function 1524@code{@var{x_1} @var{x_2} @var{x_4} + @var{x_4}}. 1525 1526See also: 1527@flushleft 1528@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1529@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante} @mrefcomma{resolvante_klein3} 1530@mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale} 1531@end flushleft 1532 1533@opencatbox 1534@category{Package sym} 1535@closecatbox 1536@end deffn 1537 1538@anchor{resolvante_klein3} 1539@deffn {Function} resolvante_klein3 (@var{P}, @var{x}) 1540calculates the transformation of @code{@var{P}(@var{x})} by the function 1541@code{@var{x_1} @var{x_2} @var{x_4} + @var{x_4}}. 1542 1543See also: 1544@flushleft 1545@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1546@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante} 1547@mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale} 1548@end flushleft 1549 1550@opencatbox 1551@category{Package sym} 1552@closecatbox 1553@end deffn 1554 1555 1556@anchor{resolvante_produit_sym} 1557@deffn {Function} resolvante_produit_sym (@var{P}, @var{x}) 1558calculates the list of all product resolvents of the polynomial 1559@code{@var{P}(@var{x})}. 1560 1561@c GENERATED FROM THE FOLLOWING 1562@c resolvante_produit_sym (x^5 + 3*x^4 + 2*x - 1, x); 1563@c resolvante: produit$ 1564@c resolvante (x^5 + 3*x^4 + 2*x - 1, x, a*b*c, [a, b, c]); 1565@example 1566@group 1567(%i1) resolvante_produit_sym (x^5 + 3*x^4 + 2*x - 1, x); 1568 5 4 10 8 7 6 5 1569(%o1) [y + 3 y + 2 y - 1, y - 2 y - 21 y - 31 y - 14 y 1570 1571 4 3 2 10 8 7 6 5 4 1572 - y + 14 y + 3 y + 1, y + 3 y + 14 y - y - 14 y - 31 y 1573 1574 3 2 5 4 1575 - 21 y - 2 y + 1, y - 2 y - 3 y - 1, y - 1] 1576@end group 1577(%i2) resolvante: produit$ 1578@group 1579(%i3) resolvante (x^5 + 3*x^4 + 2*x - 1, x, a*b*c, [a, b, c]); 1580 1581" resolvante produit " 1582 10 8 7 6 5 4 3 2 1583(%o3) y + 3 y + 14 y - y - 14 y - 31 y - 21 y - 2 y + 1 1584@end group 1585@end example 1586@c INPUT %i3 TICKLES A MINOR BUG IN resolvante: 1587@c " resolvante produit " IS PRINTED FROM SOMEWHERE IN THE BOWELS OF resolvante 1588@c AND IT GOOFS UP THE DISPLAY OF THE EXPONENTS OF %o3 -- I THREW IN A LINE BREAK TO ADJUST 1589 1590See also: 1591@flushleft 1592@mrefcomma{resolvante} @mrefcomma{resolvante_unitaire} 1593@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} 1594@mrefcomma{resolvante_klein3} @mrefcomma{resolvante_vierer} 1595@mrefdot{resolvante_diedrale} 1596@end flushleft 1597 1598@opencatbox 1599@category{Package sym} 1600@closecatbox 1601@end deffn 1602 1603 1604@anchor{resolvante_unitaire} 1605@deffn {Function} resolvante_unitaire (@var{P}, @var{Q}, @var{x}) 1606computes the resolvent of the polynomial @code{@var{P}(@var{x})} by the 1607polynomial @code{@var{Q}(@var{x})}. 1608 1609See also: 1610@flushleft 1611@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante} 1612@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3} 1613@mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale} 1614@end flushleft 1615 1616@opencatbox 1617@category{Package sym} 1618@closecatbox 1619@end deffn 1620 1621@anchor{resolvante_vierer} 1622@deffn {Function} resolvante_vierer (@var{P}, @var{x}) 1623computes the transformation of 1624@code{@var{P}(@var{x})} by the function @code{@var{x_1} @var{x_2} - 1625@var{x_3} @var{x_4}}. 1626 1627See also: 1628@flushleft 1629@mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire} 1630@mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3} 1631@mrefcomma{resolvante} @mrefdot{resolvante_diedrale} 1632@end flushleft 1633 1634@opencatbox 1635@category{Package sym} 1636@closecatbox 1637@end deffn 1638 1639 1640 1641 1642@subsection Miscellaneous 1643 1644@anchor{multinomial} 1645@deffn {Function} multinomial (@var{r}, @var{part}) 1646where @var{r} is the weight of the partition @var{part}. This function 1647returns the associate multinomial coefficient: if the parts of 1648@var{part} are @var{i_1}, @var{i_2}, ..., @var{i_k}, the result is 1649@code{@var{r}!/(@var{i_1}! @var{i_2}! ... @var{i_k}!)}. 1650 1651@opencatbox 1652@category{Package sym} 1653@closecatbox 1654@end deffn 1655 1656@anchor{permut} 1657@deffn {Function} permut (@var{L}) 1658returns the list of permutations of the list @var{L}. 1659 1660@opencatbox 1661@category{Package sym} 1662@category{Lists} 1663@closecatbox 1664@end deffn 1665