2020年
6月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2020-06-10 Condon-Shortley係数

_ 平方根の計算

球面調和関数を取り扱っていると、Condon-Shortley係数とかGaunt係数というものを使うことがある。この値は表になっているのだが、maximaを使って行列の形に表すプログラムを書いてみた。

load(clebsch_gordan);
ck(k,l1,m1,l2,m2):= rootscontract((-1)^m1*sqrt(2*l1+1)*sqrt(2*l2+1)*wigner_3j(l1,l2,k,0,0,0)*wigner_3j(l1,l2,k,-m1,m2,m1-m2))$
mck(k,l):=genmatrix(lambda([a,b],ck(k,l,l+1-a,l,l+1-b)),2*l+1,2*l+1)$

苦労したのは、平方根を単純化する部分である。sqrt(2)*sqrt(6)を2*sqrt(3)と変形するやり方が分からなくて、自乗してからsqrtしたりする関数を書いたりしていたが、rootscontractを使うと良いことがやっとわかった。