symmetry.rlg 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940
  1. Tue Apr 15 00:35:33 2008 run on win32
  2. *** @ already defined as operator
  3. % test symmetry package
  4. % implementation of theory of linear representations
  5. % for small groups
  6. availablegroups();
  7. {z2,k4,d3,d4,d5,d6,c3,c4,c5,c6,s4,a4}
  8. printgroup(D4);
  9. {id,rd4,rot2d4,rot3d4,sd4,srd4,sr2d4,sr3d4}
  10. generators(D4);
  11. {rd4,sd4}
  12. charactertable(D4);
  13. {{d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},1}},
  14. {d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},-1}},
  15. {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},-1}},
  16. {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},1}},
  17. {d4,{{id},2},{{rd4,rot3d4},0},{{rot2d4},-2},{{sd4,sr2d4},0},{{sr3d4,srd4},0}}}
  18. characternr(D4,1);
  19. {d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},1}}
  20. characternr(D4,2);
  21. {d4,{{id},1},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},-1}}
  22. characternr(D4,3);
  23. {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},-1}}
  24. characternr(D4,4);
  25. {d4,{{id},1},{{rd4,rot3d4},-1},{{rot2d4},1},{{sd4,sr2d4},-1},{{sr3d4,srd4},1}}
  26. characternr(D4,5);
  27. {d4,{{id},2},{{rd4,rot3d4},0},{{rot2d4},-2},{{sd4,sr2d4},0},{{sr3d4,srd4},0}}
  28. irreduciblereptable(D4);
  29. {{d4,
  30. id=
  31. [1]
  32. ,
  33. rd4=
  34. [1]
  35. ,
  36. rot2d4=
  37. [1]
  38. ,
  39. rot3d4=
  40. [1]
  41. ,
  42. sd4=
  43. [1]
  44. ,
  45. srd4=
  46. [1]
  47. ,
  48. sr2d4=
  49. [1]
  50. ,
  51. sr3d4=
  52. [1]
  53. },
  54. {d4,
  55. id=
  56. [1]
  57. ,
  58. rd4=
  59. [1]
  60. ,
  61. rot2d4=
  62. [1]
  63. ,
  64. rot3d4=
  65. [1]
  66. ,
  67. sd4=
  68. [ - 1]
  69. ,
  70. srd4=
  71. [ - 1]
  72. ,
  73. sr2d4=
  74. [ - 1]
  75. ,
  76. sr3d4=
  77. [ - 1]
  78. },
  79. {d4,
  80. id=
  81. [1]
  82. ,
  83. rd4=
  84. [ - 1]
  85. ,
  86. rot2d4=
  87. [1]
  88. ,
  89. rot3d4=
  90. [ - 1]
  91. ,
  92. sd4=
  93. [1]
  94. ,
  95. srd4=
  96. [ - 1]
  97. ,
  98. sr2d4=
  99. [1]
  100. ,
  101. sr3d4=
  102. [ - 1]
  103. },
  104. {d4,
  105. id=
  106. [1]
  107. ,
  108. rd4=
  109. [ - 1]
  110. ,
  111. rot2d4=
  112. [1]
  113. ,
  114. rot3d4=
  115. [ - 1]
  116. ,
  117. sd4=
  118. [ - 1]
  119. ,
  120. srd4=
  121. [1]
  122. ,
  123. sr2d4=
  124. [ - 1]
  125. ,
  126. sr3d4=
  127. [1]
  128. },
  129. {d4,
  130. id=
  131. [1 0]
  132. [ ]
  133. [0 1]
  134. ,
  135. rd4=
  136. [ 0 1]
  137. [ ]
  138. [ - 1 0]
  139. ,
  140. rot2d4=
  141. [ - 1 0 ]
  142. [ ]
  143. [ 0 - 1]
  144. ,
  145. rot3d4=
  146. [0 - 1]
  147. [ ]
  148. [1 0 ]
  149. ,
  150. sd4=
  151. [1 0 ]
  152. [ ]
  153. [0 - 1]
  154. ,
  155. srd4=
  156. [0 1]
  157. [ ]
  158. [1 0]
  159. ,
  160. sr2d4=
  161. [ - 1 0]
  162. [ ]
  163. [ 0 1]
  164. ,
  165. sr3d4=
  166. [ 0 - 1]
  167. [ ]
  168. [ - 1 0 ]
  169. }}
  170. irreduciblerepnr(D4,1);
  171. {d4,
  172. id=
  173. [1]
  174. ,
  175. rd4=
  176. [1]
  177. ,
  178. rot2d4=
  179. [1]
  180. ,
  181. rot3d4=
  182. [1]
  183. ,
  184. sd4=
  185. [1]
  186. ,
  187. srd4=
  188. [1]
  189. ,
  190. sr2d4=
  191. [1]
  192. ,
  193. sr3d4=
  194. [1]
  195. }
  196. irreduciblerepnr(D4,2);
  197. {d4,
  198. id=
  199. [1]
  200. ,
  201. rd4=
  202. [1]
  203. ,
  204. rot2d4=
  205. [1]
  206. ,
  207. rot3d4=
  208. [1]
  209. ,
  210. sd4=
  211. [ - 1]
  212. ,
  213. srd4=
  214. [ - 1]
  215. ,
  216. sr2d4=
  217. [ - 1]
  218. ,
  219. sr3d4=
  220. [ - 1]
  221. }
  222. irreduciblerepnr(D4,3);
  223. {d4,
  224. id=
  225. [1]
  226. ,
  227. rd4=
  228. [ - 1]
  229. ,
  230. rot2d4=
  231. [1]
  232. ,
  233. rot3d4=
  234. [ - 1]
  235. ,
  236. sd4=
  237. [1]
  238. ,
  239. srd4=
  240. [ - 1]
  241. ,
  242. sr2d4=
  243. [1]
  244. ,
  245. sr3d4=
  246. [ - 1]
  247. }
  248. irreduciblerepnr(D4,4);
  249. {d4,
  250. id=
  251. [1]
  252. ,
  253. rd4=
  254. [ - 1]
  255. ,
  256. rot2d4=
  257. [1]
  258. ,
  259. rot3d4=
  260. [ - 1]
  261. ,
  262. sd4=
  263. [ - 1]
  264. ,
  265. srd4=
  266. [1]
  267. ,
  268. sr2d4=
  269. [ - 1]
  270. ,
  271. sr3d4=
  272. [1]
  273. }
  274. irreduciblerepnr(D4,5);
  275. {d4,
  276. id=
  277. [1 0]
  278. [ ]
  279. [0 1]
  280. ,
  281. rd4=
  282. [ 0 1]
  283. [ ]
  284. [ - 1 0]
  285. ,
  286. rot2d4=
  287. [ - 1 0 ]
  288. [ ]
  289. [ 0 - 1]
  290. ,
  291. rot3d4=
  292. [0 - 1]
  293. [ ]
  294. [1 0 ]
  295. ,
  296. sd4=
  297. [1 0 ]
  298. [ ]
  299. [0 - 1]
  300. ,
  301. srd4=
  302. [0 1]
  303. [ ]
  304. [1 0]
  305. ,
  306. sr2d4=
  307. [ - 1 0]
  308. [ ]
  309. [ 0 1]
  310. ,
  311. sr3d4=
  312. [ 0 - 1]
  313. [ ]
  314. [ - 1 0 ]
  315. }
  316. rr:=mat((1,0,0,0,0),
  317. (0,0,1,0,0),
  318. (0,0,0,1,0),
  319. (0,0,0,0,1),
  320. (0,1,0,0,0));
  321. [1 0 0 0 0]
  322. [ ]
  323. [0 0 1 0 0]
  324. [ ]
  325. rr := [0 0 0 1 0]
  326. [ ]
  327. [0 0 0 0 1]
  328. [ ]
  329. [0 1 0 0 0]
  330. sp:=mat((1,0,0,0,0),
  331. (0,0,1,0,0),
  332. (0,1,0,0,0),
  333. (0,0,0,0,1),
  334. (0,0,0,1,0));
  335. [1 0 0 0 0]
  336. [ ]
  337. [0 0 1 0 0]
  338. [ ]
  339. sp := [0 1 0 0 0]
  340. [ ]
  341. [0 0 0 0 1]
  342. [ ]
  343. [0 0 0 1 0]
  344. rep:={D4,rD4=rr,sD4=sp};
  345. rep := {d4,
  346. rd4=
  347. [1 0 0 0 0]
  348. [ ]
  349. [0 0 1 0 0]
  350. [ ]
  351. [0 0 0 1 0]
  352. [ ]
  353. [0 0 0 0 1]
  354. [ ]
  355. [0 1 0 0 0]
  356. ,
  357. sd4=
  358. [1 0 0 0 0]
  359. [ ]
  360. [0 0 1 0 0]
  361. [ ]
  362. [0 1 0 0 0]
  363. [ ]
  364. [0 0 0 0 1]
  365. [ ]
  366. [0 0 0 1 0]
  367. }
  368. canonicaldecomposition(rep);
  369. teta=2*teta1 + teta4 + teta5
  370. character(rep);
  371. {d4,{{id},5},{{rd4,rot3d4},1},{{rot2d4},1},{{sd4,sr2d4},1},{{sr3d4,srd4},3}}
  372. symmetrybasis(rep,1);
  373. [1 0 ]
  374. [ ]
  375. [ 1 ]
  376. [0 ---]
  377. [ 2 ]
  378. [ ]
  379. [ 1 ]
  380. [0 ---]
  381. [ 2 ]
  382. [ ]
  383. [ 1 ]
  384. [0 ---]
  385. [ 2 ]
  386. [ ]
  387. [ 1 ]
  388. [0 ---]
  389. [ 2 ]
  390. symmetrybasis(rep,2);
  391. symmetrybasis(rep,3);
  392. symmetrybasis(rep,4);
  393. [ 0 ]
  394. [ ]
  395. [ 1 ]
  396. [ --- ]
  397. [ 2 ]
  398. [ ]
  399. [ - 1 ]
  400. [------]
  401. [ 2 ]
  402. [ ]
  403. [ 1 ]
  404. [ --- ]
  405. [ 2 ]
  406. [ ]
  407. [ - 1 ]
  408. [------]
  409. [ 2 ]
  410. symmetrybasis(rep,5);
  411. [ 0 0 ]
  412. [ ]
  413. [ 1 - 1 ]
  414. [ --- ------]
  415. [ 2 2 ]
  416. [ ]
  417. [ 1 1 ]
  418. [ --- --- ]
  419. [ 2 2 ]
  420. [ ]
  421. [ - 1 1 ]
  422. [------ --- ]
  423. [ 2 2 ]
  424. [ ]
  425. [ - 1 - 1 ]
  426. [------ ------]
  427. [ 2 2 ]
  428. symmetrybasispart(rep,5);
  429. [ 0 ]
  430. [ ]
  431. [ 1 ]
  432. [ --- ]
  433. [ 2 ]
  434. [ ]
  435. [ 1 ]
  436. [ --- ]
  437. [ 2 ]
  438. [ ]
  439. [ - 1 ]
  440. [------]
  441. [ 2 ]
  442. [ ]
  443. [ - 1 ]
  444. [------]
  445. [ 2 ]
  446. allsymmetrybases(rep);
  447. [1 0 0 0 0 ]
  448. [ ]
  449. [ 1 1 1 - 1 ]
  450. [0 --- --- --- ------]
  451. [ 2 2 2 2 ]
  452. [ ]
  453. [ 1 - 1 1 1 ]
  454. [0 --- ------ --- --- ]
  455. [ 2 2 2 2 ]
  456. [ ]
  457. [ 1 1 - 1 1 ]
  458. [0 --- --- ------ --- ]
  459. [ 2 2 2 2 ]
  460. [ ]
  461. [ 1 - 1 - 1 - 1 ]
  462. [0 --- ------ ------ ------]
  463. [ 2 2 2 2 ]
  464. % Ritz matrix from Stiefel, Faessler p. 200
  465. m:=mat((eps,a,a,a,a),
  466. (a ,d,b,g,b),
  467. (a ,b,d,b,g),
  468. (a ,g,b,d,b),
  469. (a ,b,g,b,d));
  470. [eps a a a a]
  471. [ ]
  472. [ a d b g b]
  473. [ ]
  474. m := [ a b d b g]
  475. [ ]
  476. [ a g b d b]
  477. [ ]
  478. [ a b g b d]
  479. diagonalize(m,rep);
  480. [eps 2*a 0 0 0 ]
  481. [ ]
  482. [2*a 2*b + d + g 0 0 0 ]
  483. [ ]
  484. [ 0 0 - 2*b + d + g 0 0 ]
  485. [ ]
  486. [ 0 0 0 d - g 0 ]
  487. [ ]
  488. [ 0 0 0 0 d - g]
  489. % eigenvalues are obvious. Eigenvectors may be obtained with
  490. % the coordinate transformation matrix given by allsymmetrybases.
  491. r1:=mat((0,1,0),
  492. (0,0,1),
  493. (1,0,0));
  494. [0 1 0]
  495. [ ]
  496. r1 := [0 0 1]
  497. [ ]
  498. [1 0 0]
  499. repC3:={C3,rC3=r1};
  500. repc3 := {c3,rc3=
  501. [0 1 0]
  502. [ ]
  503. [0 0 1]
  504. [ ]
  505. [1 0 0]
  506. }
  507. mC3:=mat((a,b,c),
  508. (c,a,b),
  509. (b,c,a));
  510. [a b c]
  511. [ ]
  512. mc3 := [c a b]
  513. [ ]
  514. [b c a]
  515. diagonalize(mC3,repC3);
  516. [a + b + c 0 0 ]
  517. [ ]
  518. [ 2*a - b - c sqrt(3)*b - sqrt(3)*c ]
  519. [ 0 ------------- -----------------------]
  520. [ 2 2 ]
  521. [ ]
  522. [ - sqrt(3)*b + sqrt(3)*c 2*a - b - c ]
  523. [ 0 -------------------------- ------------- ]
  524. [ 2 2 ]
  525. % note difference between real and complex case
  526. on complex;
  527. diagonalize(mC3,repC3);
  528. mat((a + b + c,0,0),
  529. i*sqrt(3)*b - i*sqrt(3)*c + 2*a - b - c
  530. (0,-----------------------------------------,0),
  531. 2
  532. - i*sqrt(3)*b + i*sqrt(3)*c + 2*a - b - c
  533. (0,0,--------------------------------------------))
  534. 2
  535. off complex;
  536. end;
  537. Time for test: 88 ms, plus GC time: 9 ms