tap=: i.@! A. i. NB. table of Permutuations NB. Usage: tap 3 fm=: find_mahoujin=:3 : 0 NB. find Mahoujin 3 X 3 NB. Usage: fm '' nr=. # tmp0=. >: tap 9 ans=. < 0 for_ctr. i. nr do. tmp2=. (+/;+/"1) 3 3 $ ctr{tmp0 tmp4=. +/ L:0 (0 4 8;2 4 6){L:0 ctr{tmp0 if. 1 = # ~. ; tmp2,tmp4 do. NB. ~. nub judge mahoujin ans=. ans,8 NB. ! 9 16 25 is 362880 2.09228e13 1.55112e25 NB. y is i.e 3 3 // 3 X 3 NB. ------------------------------- 'nrmin nrmax'=. x NB. input zone //oligin is 0 zone=. (<: nrmax) - nrmin if. 2 = # y do. size0=. y else. size0 =. 2 # y end. size=. */ size0 NB. i.e. 9 <-- 3 X 3 NB. ------------------------------- mat=. i. size0 NB. explore index matrix oblic_ind=. index_oblique mat NB. find oblic index ans=. < 0 ctr=. nrmin NB. ------------------------------- while. ctr < nrmax do. mmat=. >: ctr A. i. size NB. target permutation 1++ tateyoko=. (+/;+/"1) size0 $ mmat NB. make mat and sum tate&yoko naname=. +/ L:0 oblic_ind { L:0 mmat NB. sum each oblic X if. 1 = +/ ~: ; tateyoko,naname do. NB. NB. 4 pieces is same --> Mahoujin ans=. ans,: ctr end. NB. ------------------------------ if. 1 = 1 < # ans do. ans=. size0 $ L:0 }.ans else. ans=. 'nothing' NB. null end. ) NB. ========Eigenvalue======================================== NB. find Eigenvalue and Eigenvector NB. Levierre Faddeev Method NB. ------------------------------- tr=: (<0 1)&|: NB. umatrix=: (=/~)@i.@# char_lf=: 3 : 0 ANS=.TR_SUM=. +/ tr MAT=. y NB. sum of trace UMAT=. =/~ i. # y for_LF. i.<: # y do. MAT=. y +/ . * MAT - UMAT * TR_SUM TR_SUM=. (% 2+LF)* +/ tr MAT ANS=. ANS,TR_SUM end. (p. POL), ( ; 1{ char_lf y EIGEN2=. {@> L:0 EIGEN ^/ L:0 |. i. # EIGEN ADJMAT=. char_lf_evec_sub y ANS=. <'' for_LF. i. # y do. TMP=. +/> ( > LF{ EIGEN2) * L:0 ADJMAT ANS=. ANS, i. # TMP){"1 L:0 TMP )