1% test symmetry package 2% implementation of theory of linear representations 3% for small groups 4 5availablegroups(); 6 7 8{z2,k4,d3,d4,d5,d6,c3,c4,c5,c6,s4,a4} 9 10 11printgroup(D4); 12 13 14{id,rd4,rot2d4,rot3d4,sd4,srd4,sr2d4,sr3d4} 15 16 17generators(D4); 18 19 20{rd4,sd4} 21 22 23charactertable(D4); 24 25 26{{d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},1}}, 27 28 {d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},-1}}, 29 30 {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},-1}}, 31 32 {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},1}}, 33 34 {d4,{{id},2},{{rd4,rot3d4},0},{{rot2d4},-2},{{sd4,sr2d4},0},{{sr3d4,srd4},0}}} 35 36 37characternr(D4,1); 38 39 40{d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},1}} 41 42characternr(D4,2); 43 44 45{d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},-1}} 46 47characternr(D4,3); 48 49 50{d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},-1}} 51 52characternr(D4,4); 53 54 55{d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},1}} 56 57characternr(D4,5); 58 59 60{d4,{{id},2},{{rd4,rot3d4},0},{{rot2d4},-2},{{sd4,sr2d4},0},{{sr3d4,srd4},0}} 61 62irreduciblereptable(D4); 63 64 65{{d4, 66 67 id= 68 69 [1] 70 71 , 72 73 rd4= 74 75 [1] 76 77 , 78 79 rot2d4= 80 81 [1] 82 83 , 84 85 rot3d4= 86 87 [1] 88 89 , 90 91 sd4= 92 93 [1] 94 95 , 96 97 srd4= 98 99 [1] 100 101 , 102 103 sr2d4= 104 105 [1] 106 107 , 108 109 sr3d4= 110 111 [1] 112 113 }, 114 115 {d4, 116 117 id= 118 119 [1] 120 121 , 122 123 rd4= 124 125 [1] 126 127 , 128 129 rot2d4= 130 131 [1] 132 133 , 134 135 rot3d4= 136 137 [1] 138 139 , 140 141 sd4= 142 143 [ - 1] 144 145 , 146 147 srd4= 148 149 [ - 1] 150 151 , 152 153 sr2d4= 154 155 [ - 1] 156 157 , 158 159 sr3d4= 160 161 [ - 1] 162 163 }, 164 165 {d4, 166 167 id= 168 169 [1] 170 171 , 172 173 rd4= 174 175 [ - 1] 176 177 , 178 179 rot2d4= 180 181 [1] 182 183 , 184 185 rot3d4= 186 187 [ - 1] 188 189 , 190 191 sd4= 192 193 [1] 194 195 , 196 197 srd4= 198 199 [ - 1] 200 201 , 202 203 sr2d4= 204 205 [1] 206 207 , 208 209 sr3d4= 210 211 [ - 1] 212 213 }, 214 215 {d4, 216 217 id= 218 219 [1] 220 221 , 222 223 rd4= 224 225 [ - 1] 226 227 , 228 229 rot2d4= 230 231 [1] 232 233 , 234 235 rot3d4= 236 237 [ - 1] 238 239 , 240 241 sd4= 242 243 [ - 1] 244 245 , 246 247 srd4= 248 249 [1] 250 251 , 252 253 sr2d4= 254 255 [ - 1] 256 257 , 258 259 sr3d4= 260 261 [1] 262 263 }, 264 265 {d4, 266 267 id= 268 269 [1 0] 270 [ ] 271 [0 1] 272 273 , 274 275 rd4= 276 277 [ 0 1] 278 [ ] 279 [ - 1 0] 280 281 , 282 283 rot2d4= 284 285 [ - 1 0 ] 286 [ ] 287 [ 0 - 1] 288 289 , 290 291 rot3d4= 292 293 [0 - 1] 294 [ ] 295 [1 0 ] 296 297 , 298 299 sd4= 300 301 [1 0 ] 302 [ ] 303 [0 - 1] 304 305 , 306 307 srd4= 308 309 [0 1] 310 [ ] 311 [1 0] 312 313 , 314 315 sr2d4= 316 317 [ - 1 0] 318 [ ] 319 [ 0 1] 320 321 , 322 323 sr3d4= 324 325 [ 0 - 1] 326 [ ] 327 [ - 1 0 ] 328 329 }} 330 331irreduciblerepnr(D4,1); 332 333 334{d4, 335 336 id= 337 338 [1] 339 340 , 341 342 rd4= 343 344 [1] 345 346 , 347 348 rot2d4= 349 350 [1] 351 352 , 353 354 rot3d4= 355 356 [1] 357 358 , 359 360 sd4= 361 362 [1] 363 364 , 365 366 srd4= 367 368 [1] 369 370 , 371 372 sr2d4= 373 374 [1] 375 376 , 377 378 sr3d4= 379 380 [1] 381 382 } 383 384irreduciblerepnr(D4,2); 385 386 387{d4, 388 389 id= 390 391 [1] 392 393 , 394 395 rd4= 396 397 [1] 398 399 , 400 401 rot2d4= 402 403 [1] 404 405 , 406 407 rot3d4= 408 409 [1] 410 411 , 412 413 sd4= 414 415 [ - 1] 416 417 , 418 419 srd4= 420 421 [ - 1] 422 423 , 424 425 sr2d4= 426 427 [ - 1] 428 429 , 430 431 sr3d4= 432 433 [ - 1] 434 435 } 436 437irreduciblerepnr(D4,3); 438 439 440{d4, 441 442 id= 443 444 [1] 445 446 , 447 448 rd4= 449 450 [ - 1] 451 452 , 453 454 rot2d4= 455 456 [1] 457 458 , 459 460 rot3d4= 461 462 [ - 1] 463 464 , 465 466 sd4= 467 468 [1] 469 470 , 471 472 srd4= 473 474 [ - 1] 475 476 , 477 478 sr2d4= 479 480 [1] 481 482 , 483 484 sr3d4= 485 486 [ - 1] 487 488 } 489 490irreduciblerepnr(D4,4); 491 492 493{d4, 494 495 id= 496 497 [1] 498 499 , 500 501 rd4= 502 503 [ - 1] 504 505 , 506 507 rot2d4= 508 509 [1] 510 511 , 512 513 rot3d4= 514 515 [ - 1] 516 517 , 518 519 sd4= 520 521 [ - 1] 522 523 , 524 525 srd4= 526 527 [1] 528 529 , 530 531 sr2d4= 532 533 [ - 1] 534 535 , 536 537 sr3d4= 538 539 [1] 540 541 } 542 543irreduciblerepnr(D4,5); 544 545 546{d4, 547 548 id= 549 550 [1 0] 551 [ ] 552 [0 1] 553 554 , 555 556 rd4= 557 558 [ 0 1] 559 [ ] 560 [ - 1 0] 561 562 , 563 564 rot2d4= 565 566 [ - 1 0 ] 567 [ ] 568 [ 0 - 1] 569 570 , 571 572 rot3d4= 573 574 [0 - 1] 575 [ ] 576 [1 0 ] 577 578 , 579 580 sd4= 581 582 [1 0 ] 583 [ ] 584 [0 - 1] 585 586 , 587 588 srd4= 589 590 [0 1] 591 [ ] 592 [1 0] 593 594 , 595 596 sr2d4= 597 598 [ - 1 0] 599 [ ] 600 [ 0 1] 601 602 , 603 604 sr3d4= 605 606 [ 0 - 1] 607 [ ] 608 [ - 1 0 ] 609 610 } 611 612 613 614rr:=mat((1,0,0,0,0), 615 (0,0,1,0,0), 616 (0,0,0,1,0), 617 (0,0,0,0,1), 618 (0,1,0,0,0)); 619 620 621 [1 0 0 0 0] 622 [ ] 623 [0 0 1 0 0] 624 [ ] 625rr := [0 0 0 1 0] 626 [ ] 627 [0 0 0 0 1] 628 [ ] 629 [0 1 0 0 0] 630 631 632 633sp:=mat((1,0,0,0,0), 634 (0,0,1,0,0), 635 (0,1,0,0,0), 636 (0,0,0,0,1), 637 (0,0,0,1,0)); 638 639 640 [1 0 0 0 0] 641 [ ] 642 [0 0 1 0 0] 643 [ ] 644sp := [0 1 0 0 0] 645 [ ] 646 [0 0 0 0 1] 647 [ ] 648 [0 0 0 1 0] 649 650 651 652rep:={D4,rD4=rr,sD4=sp}; 653 654 655rep := {d4, 656 657 rd4= 658 659 [1 0 0 0 0] 660 [ ] 661 [0 0 1 0 0] 662 [ ] 663 [0 0 0 1 0] 664 [ ] 665 [0 0 0 0 1] 666 [ ] 667 [0 1 0 0 0] 668 669 , 670 671 sd4= 672 673 [1 0 0 0 0] 674 [ ] 675 [0 0 1 0 0] 676 [ ] 677 [0 1 0 0 0] 678 [ ] 679 [0 0 0 0 1] 680 [ ] 681 [0 0 0 1 0] 682 683 } 684 685 686canonicaldecomposition(rep); 687 688 689teta=2*teta1 + teta4 + teta5 690 691 692character(rep); 693 694 695{d4,{{id},5},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},3}} 696 697 698symmetrybasis(rep,1); 699 700 701[1 0 ] 702[ ] 703[ 1 ] 704[0 ---] 705[ 2 ] 706[ ] 707[ 1 ] 708[0 ---] 709[ 2 ] 710[ ] 711[ 1 ] 712[0 ---] 713[ 2 ] 714[ ] 715[ 1 ] 716[0 ---] 717[ 2 ] 718 719 720symmetrybasis(rep,2); 721 722 723symmetrybasis(rep,3); 724 725 726symmetrybasis(rep,4); 727 728 729[ 0 ] 730[ ] 731[ 1 ] 732[ --- ] 733[ 2 ] 734[ ] 735[ - 1 ] 736[------] 737[ 2 ] 738[ ] 739[ 1 ] 740[ --- ] 741[ 2 ] 742[ ] 743[ - 1 ] 744[------] 745[ 2 ] 746 747 748symmetrybasis(rep,5); 749 750 751[ 0 0 ] 752[ ] 753[ 1 - 1 ] 754[ --- ------] 755[ 2 2 ] 756[ ] 757[ 1 1 ] 758[ --- --- ] 759[ 2 2 ] 760[ ] 761[ - 1 1 ] 762[------ --- ] 763[ 2 2 ] 764[ ] 765[ - 1 - 1 ] 766[------ ------] 767[ 2 2 ] 768 769 770symmetrybasispart(rep,5); 771 772 773[ 0 ] 774[ ] 775[ 1 ] 776[ --- ] 777[ 2 ] 778[ ] 779[ 1 ] 780[ --- ] 781[ 2 ] 782[ ] 783[ - 1 ] 784[------] 785[ 2 ] 786[ ] 787[ - 1 ] 788[------] 789[ 2 ] 790 791 792allsymmetrybases(rep); 793 794 795[1 0 0 0 0 ] 796[ ] 797[ 1 1 1 - 1 ] 798[0 --- --- --- ------] 799[ 2 2 2 2 ] 800[ ] 801[ 1 - 1 1 1 ] 802[0 --- ------ --- --- ] 803[ 2 2 2 2 ] 804[ ] 805[ 1 1 - 1 1 ] 806[0 --- --- ------ --- ] 807[ 2 2 2 2 ] 808[ ] 809[ 1 - 1 - 1 - 1 ] 810[0 --- ------ ------ ------] 811[ 2 2 2 2 ] 812 813 814 815 816% Ritz matrix from Stiefel, Faessler p. 200 817m:=mat((eps,a,a,a,a), 818 (a ,d,b,g,b), 819 (a ,b,d,b,g), 820 (a ,g,b,d,b), 821 (a ,b,g,b,d)); 822 823 824 [eps a a a a] 825 [ ] 826 [ a d b g b] 827 [ ] 828m := [ a b d b g] 829 [ ] 830 [ a g b d b] 831 [ ] 832 [ a b g b d] 833 834 835 836 837diagonalize(m,rep); 838 839 840[eps 2*a 0 0 0 ] 841[ ] 842[2*a 2*b + d + g 0 0 0 ] 843[ ] 844[ 0 0 - 2*b + d + g 0 0 ] 845[ ] 846[ 0 0 0 d - g 0 ] 847[ ] 848[ 0 0 0 0 d - g] 849 850 851 852% eigenvalues are obvious. Eigenvectors may be obtained with 853% the coordinate transformation matrix given by allsymmetrybases. 854 855r1:=mat((0,1,0), 856 (0,0,1), 857 (1,0,0)); 858 859 860 [0 1 0] 861 [ ] 862r1 := [0 0 1] 863 [ ] 864 [1 0 0] 865 866 867 868repC3:={C3,rC3=r1}; 869 870 871repc3 := {c3,rc3= 872 873 [0 1 0] 874 [ ] 875 [0 0 1] 876 [ ] 877 [1 0 0] 878 879 } 880 881 882mC3:=mat((a,b,c), 883 (c,a,b), 884 (b,c,a)); 885 886 887 [a b c] 888 [ ] 889mc3 := [c a b] 890 [ ] 891 [b c a] 892 893 894 895diagonalize(mC3,repC3); 896 897 898[a + b + c 0 0 ] 899[ ] 900[ 2*a - b - c sqrt(3)*b - sqrt(3)*c ] 901[ 0 ------------- -----------------------] 902[ 2 2 ] 903[ ] 904[ - sqrt(3)*b + sqrt(3)*c 2*a - b - c ] 905[ 0 -------------------------- ------------- ] 906[ 2 2 ] 907 908 909 910% note difference between real and complex case 911 912on complex; 913 914 915diagonalize(mC3,repC3); 916 917 918mat((a + b + c,0,0), 919 920 i*sqrt(3)*b - i*sqrt(3)*c + 2*a - b - c 921 (0,-----------------------------------------,0), 922 2 923 924 - i*sqrt(3)*b + i*sqrt(3)*c + 2*a - b - c 925 (0,0,--------------------------------------------)) 926 2 927 928 929off complex; 930 931 932 933end; 934 935Tested on x86_64-pc-windows CSL 936Time (counter 1): 16 ms 937 938End of Lisp run after 0.01+0.04 seconds 939real 0.20 940user 0.01 941sys 0.06 942