行列式を行列のべき乗のトレースたちの多項式として表すこと

物理の本を読んでいたら、{3\times 3} 行列についての次のような公式が出てきた:
{3!|A| = (\mathrm{tr}A)^3 - 3\mathrm{tr}(A^2)\mathrm{tr}(A) + 2\mathrm{tr}(A^3).  }
気になってネットで調べると,{2\times 2} 行列のとき、次の関係式が成り立つのだそうだ:
{2!|A| = (\mathrm{tr}A)^2 - \mathrm{tr}(A^2).}
一般の{n} の場合はどうなるのか気になって考えた.

一般に,{n} 次正方行列 {A} は(適当に取った)ユニタリ行列 {U} によって,対角成分が {A} の固有値であるような上三角行列に変換できる:
{U^*AU = \left[      \begin{array}{ccc}        \lambda_1 & {} & * \\        {} & \ddots & {} \\       0 & {} & \lambda_n      \end{array}    \right].}
ユニタリ行列の性質から,任意の自然数 {k} に対して
{U^*A^kU = \left[      \begin{array}{ccc}        \lambda_1^k & {} & * \\        {} & \ddots & {} \\       0 & {} & \lambda_n^k      \end{array}    \right].}
固有多項式はユニタリ変換で不変なので,その {n-1} 次の項を比較することで次を得る:
{\mathrm{tr}(A^k) = \mathrm{tr}(U^*A^kU) = \lambda_1^k + \cdots+ \lambda_n^k.}
よって,行列のべき乗のトレースが固有値のニュートン多項式になっていることがわかる.ここで, {n} 変数の {k} 次ニュートン多項式 {S_k(x_1,...,x_n) := x_1^k + ... + x_n^k.}

さて, {n} 変数の {k} 次基本対称式 {B_k(x_1,...,x_n)} は次のように定義されるのだった:
{B_k(x_1,...,x_n) :=\sum_{1 \le j_1 < ...< j_k \le n} x_{j_1}\cdot ... \cdot x_{j_k}.}

特に,{B_n(\lambda_1, ..., \lambda_n) = |A|} となることに注意する.行列式もトレースも,ユニタリ変換で上三角化した行列の対角成分だけで決まる.このことから「行列式を行列のべき乗のトレースたちの関数として表す問題」は「{B_n}{S_1, ..., S_n} たちの関数として表す問題」に帰着できることがわかる.

基本対称式とニュートン多項式の間には次のような関係式が成り立つ:
{B_{k+1} = \frac{1}{k+1} \left\{  \left( \sum_{0\le s < k} B_{k-s} S_{s+1} \right) + (-1)^k S_{k+1} \right\}.} ただし {k=0, ..., n-1.}

順番に具体的な式を幾つか書いてみると:
{B_1=S_1.}

{B_2=\frac{1}{2}(B_1S_1 - S_2).}

{B_3 = \frac{1}{3}(B_2S_1 - B_1S_2 + S_3).}

最初の式を2番目の式に,最初と2番目の式を三番目に代入すると次のような式を得る:

{B_2=\frac{1}{2!}(S_1^2 - S_2).}

{B_3 = \frac{1}{3!}(S_1^3 - 3S_1S_2 + 2S_3 ).}

これらの式は最初に紹介した式と強く結びついていることがわかる.これ以上手計算でやるのは面倒なのでMaximaに続きをやらせることにしたいが,Maximaで関数の定義を書くのが面倒になったので次のようなHaskellの使い捨てコードを書いてみた:

(++#) :: String -> String -> String
(++#) a [] = a
(++#) a b = a ++ "," ++ b

sn :: Int -> String
sn n = "(" ++ foldr (++#) "" [ "S"++show k | k <- [1 .. n]] ++ ")"

f :: Int -> IO ()
f k =
	let out = 
		"B" ++ (show (k+1)) ++ sn(k+1) 
		++ ":=(1/" ++ (show (k+1)) ++ ")*("
		++ foldr (++) "" [ "(-1)^" ++ show t 
		++ "*B" ++ show(k-t) ++ sn(k-t) 
		++ "*S" ++ show(t+1) ++ "+" | t <- [0 .. k-1]]
		++ "(-1)^" ++ show k ++ "*S" ++ show(k+1) ++ ");"
	in putStrLn out
$ ghci
Prelude>:l a.hs
[1 of 1] Compiling Main             ( a.hs, interpreted )
Ok, modules loaded: Main.
*Main>  mapM_ f [0 .. 10]
B1(S1):=(1/1)*((-1)^0*S1);
B2(S1,S2):=(1/2)*((-1)^0*B1(S1)*S1+(-1)^1*S2);
B3(S1,S2,S3):=(1/3)*((-1)^0*B2(S1,S2)*S1+(-1)^1*B1(S1)*S2+(-1)^2*S3);
B4(S1,S2,S3,S4):=(1/4)*((-1)^0*B3(S1,S2,S3)*S1+(-1)^1*B2(S1,S2)*S2+(-1)^2*B1(S1)*S3+(-1)^3*S4);
B5(S1,S2,S3,S4,S5):=(1/5)*((-1)^0*B4(S1,S2,S3,S4)*S1+(-1)^1*B3(S1,S2,S3)*S2+(-1)^2*B2(S1,S2)*S3+(-1)^3*B1(S1)*S4+(-1)^4*S5);
B6(S1,S2,S3,S4,S5,S6):=(1/6)*((-1)^0*B5(S1,S2,S3,S4,S5)*S1+(-1)^1*B4(S1,S2,S3,S4)*S2+(-1)^2*B3(S1,S2,S3)*S3+(-1)^3*B2(S1,S2)*S4+(-1)^4*B1(S1)*S5+(-1)^5*S6);
B7(S1,S2,S3,S4,S5,S6,S7):=(1/7)*((-1)^0*B6(S1,S2,S3,S4,S5,S6)*S1+(-1)^1*B5(S1,S2,S3,S4,S5)*S2+(-1)^2*B4(S1,S2,S3,S4)*S3+(-1)^3*B3(S1,S2,S3)*S4+(-1)^4*B2(S1,S2)*S5+(-1)^5*B1(S1)*S6+(-1)^6*S7);
B8(S1,S2,S3,S4,S5,S6,S7,S8):=(1/8)*((-1)^0*B7(S1,S2,S3,S4,S5,S6,S7)*S1+(-1)^1*B6(S1,S2,S3,S4,S5,S6)*S2+(-1)^2*B5(S1,S2,S3,S4,S5)*S3+(-1)^3*B4(S1,S2,S3,S4)*S4+(-1)^4*B3(S1,S2,S3)*S5+(-1)^5*B2(S1,S2)*S6+(-1)^6*B1(S1)*S7+(-1)^7*S8);
B9(S1,S2,S3,S4,S5,S6,S7,S8,S9):=(1/9)*((-1)^0*B8(S1,S2,S3,S4,S5,S6,S7,S8)*S1+(-1)^1*B7(S1,S2,S3,S4,S5,S6,S7)*S2+(-1)^2*B6(S1,S2,S3,S4,S5,S6)*S3+(-1)^3*B5(S1,S2,S3,S4,S5)*S4+(-1)^4*B4(S1,S2,S3,S4)*S5+(-1)^5*B3(S1,S2,S3)*S6+(-1)^6*B2(S1,S2)*S7+(-1)^7*B1(S1)*S8+(-1)^8*S9);
B10(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10):=(1/10)*((-1)^0*B9(S1,S2,S3,S4,S5,S6,S7,S8,S9)*S1+(-1)^1*B8(S1,S2,S3,S4,S5,S6,S7,S8)*S2+(-1)^2*B7(S1,S2,S3,S4,S5,S6,S7)*S3+(-1)^3*B6(S1,S2,S3,S4,S5,S6)*S4+(-1)^4*B5(S1,S2,S3,S4,S5)*S5+(-1)^5*B4(S1,S2,S3,S4)*S6+(-1)^6*B3(S1,S2,S3)*S7+(-1)^7*B2(S1,S2)*S8+(-1)^8*B1(S1)*S9+(-1)^9*S10);
B11(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11):=(1/11)*((-1)^0*B10(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10)*S1+(-1)^1*B9(S1,S2,S3,S4,S5,S6,S7,S8,S9)*S2+(-1)^2*B8(S1,S2,S3,S4,S5,S6,S7,S8)*S3+(-1)^3*B7(S1,S2,S3,S4,S5,S6,S7)*S4+(-1)^4*B6(S1,S2,S3,S4,S5,S6)*S5+(-1)^5*B5(S1,S2,S3,S4,S5)*S6+(-1)^6*B4(S1,S2,S3,S4)*S7+(-1)^7*B3(S1,S2,S3)*S8+(-1)^8*B2(S1,S2)*S9+(-1)^9*B1(S1)*S10+(-1)^10*S11);

これらの式をMaximaにコピペしてやってから例えば

expand(ratsimp( 3! * B3(S1, S2, S3)));

としてやると {2\,S3-3\,S1\,S2+{S1}^{3}} が出てくるので,どうやらうまく行っている様子だ.
同様にして計算すれば,{n} 次正方行列についての {n!\, |A|} は次のように求まる:

{4!\, |A| = -6\,\mathrm{tr}(A^4)+8\,\mathrm{tr}(A)\,\mathrm{tr}(A^3)+3\,{\mathrm{tr}(A^2)}^{2}-6\,{\mathrm{tr}(A)}^{2}\,\mathrm{tr}(A^2)+{\mathrm{tr}(A)}^{4}.}

{5!\,|A| = 24\,\mathrm{tr}(A^5)-30\,\mathrm{tr}(A)\,\mathrm{tr}(A^4)-20\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^3)}
{ +20\,{\mathrm{tr}(A)}^{2}\,\mathrm{tr}(A^3)+15\,\mathrm{tr}(A)\,{\mathrm{tr}(A^2)}^{2}-10\,{\mathrm{tr}(A)}^{3}\,\mathrm{tr}(A^2)}
{   +{\mathrm{tr}(A)}^{5}.}

{6!\,|A| = -120\,\mathrm{tr}(A^6)+144\,\mathrm{tr}(A)\,\mathrm{tr}(A^5)+90\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^4)}
{    -90\,{\mathrm{tr}(A)}^{2}\,\mathrm{tr}(A^4)+40\,{\mathrm{tr}(A^3)}^{2}-120\,\mathrm{tr}(A)\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^3)}
{    +40\,{\mathrm{tr}(A)}^{3}\,\mathrm{tr}(A^3)-15\,{\mathrm{tr}(A^2)}^{3}+45\,{\mathrm{tr}(A)}^{2}\,{\mathrm{tr}(A^2)}^{2}-15\,{\mathrm{tr}(A)}^{4}\,\mathrm{tr}(A^2)+{\mathrm{tr}(A)}^{6}.}

{7!\,|A| = 720\,\mathrm{tr}(A^7)-840\,\mathrm{tr}(A)\,\mathrm{tr}(A^6)-504\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^5)}
{+504\,{\mathrm{tr}(A)}^{2}\,\mathrm{tr}(A^5)-420\,\mathrm{tr}(A^3)\,\mathrm{tr}(A^4)+630\,\mathrm{tr}(A)\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^4)}
{-210\,{\mathrm{tr}(A)}^{3}\,\mathrm{tr}(A^4)+280\,\mathrm{tr}(A)\,{\mathrm{tr}(A^3)}^{2}+210\,{\mathrm{tr}(A^2)}^{2}\,\mathrm{tr}(A^3)}
{-420\,{\mathrm{tr}(A)}^{2}\,\mathrm{tr}(A^2)\,\mathrm{tr}(A^3)+70\,{\mathrm{tr}(A)}^{4}\,\mathrm{tr}(A^3)}
{-105\,\mathrm{tr}(A)\,{\mathrm{tr}(A^2)}^{3}+105\,{\mathrm{tr}(A)}^{3}\,{\mathrm{tr}(A^2)}^{2}-21\,{\mathrm{tr}(A)}^{5}\,\mathrm{tr}(A^2)}
{+{\mathrm{tr}(A)}^{7}.}

こうして眺めていても規則性がわからなかったが,WikipediaのExpressing elementary symmetric polynomials in terms of power sumsを見ると,一般項がどのような形になるか書いてある.興味が出てきたら考えてみることにする.

正角錐の二面角の公式

■ 正角錐の定義とその二面角を考える意味

正角錐とは、正多角形を底面とする角錐であって、その頂点の鉛直線が底面の中心を通るようなものである。

一般に、正多面体や、クリスマスの飾りとしてよく使われる星形大正十二面体のような立体の頂点付近は正角錐であるとみなせる。催し物などの飾り付けなどのために、これらの立体を大きめに作ることを考えてみよう。この場合、隣接する二面を構成する板材同士が正しい角度に配置されるようにするためにジグで裏張りして補強する必要があるかもしれない。このようなジグ自体の形をどのようにするかというのも実際の工作においては工夫を要するポイントになる。角度を保証するという用をなせばどのように作っても良いのだが、文章だけではよくわからない人のために一例を挙げておく。ピンク色の部分がジグである。

二面のなす角度を保証するためのジグの例図

二面のなす角度を保証するためのジグの例

上の図はあくまでも一例であり、素材の加工性やサイズの制約に応じて色々工夫する必要がある。さて、このようなジグを正確につくるためには、隣接する二面のなす角度を知っておく必要がある。

この記事では、与えられた正角錐の二面角を求める公式を作り、いくつかのケースで検証する。具体的には、角錐の先端において角度θがN個集まっているような正角錐の二面角を求める公式を作る。話を正角錐に限ったのは、議論を簡略化したいからである。多少工夫すれば、正角錐以外の場合の二面角も求められるはずだと思うが、今は関心がないので試していない。(念のために言えば、正多面体や星形正多面体の親戚筋にあたる立体として準正多面体というものが知られており、これらの立体の頂点付近は正角錐ではない。したがって、本記事の公式は準正多面体を作成するためのジグを設計するためには使えない。)

■ Maximaによる正角錐の二面角の計算

以下では、初等幾何と2次方程式を駆使して、正五角形にまつわる諸量が黄金比 {\phi=\frac{1+\sqrt{5}}{2}} と関連付けられる事は既知とする。
また、立体幾何については、空間の座標をベクトルで表すこと、そして内積を通して二本のベクトルのなす角の余弦を求められる事を知っていることを前提とする。こういったことがらは、たとえば大学受験をするつもりの高校生ならばすでによく理解していると思う。

計算にはMaximaを使う。(余談:wxMaxima では結果の式を latex形式にして取得できたりして便利である。本記事でもMaximaの計算結果を latex形式で書くために利用している。)Maximaの基本的な使い方自体はこの記事では説明しない。各種オンラインチュートリアルを参照されたい。

まずは計算を進める上でのツールとなる関数を整備しよう。次の関数はベクトルの長さの自乗を求めるためのものである:

squared_veclen(v):= v.v;

次の関数は、位置ベクトルP,Q,Rがなす三角形における頂点Pの角度の余弦を求めるためのものである:

cosTriangleVert(P,Q,R):= (Q-P).(R-P) / (veclen(Q-P) * veclen(R-P));

余弦定理を知っていればこの式の意味は自明だと思う。

さて、上でも触れたように正角錐とは正多面体を底面とする角錐である。正N角形の頂点をxy平面上に取ることにする。次の関数 polyVert は、単位円に内接する正N角形のk番目の頂点を返す関数である。ただし、(1,0)を0番目の頂点とし、kが増えるごとに頂点を反時計回りにめぐるものとする。

polyVert(N,k):=[cos(2*k*%pi / N), sin(2*k*%pi / N), 0];

さて、いま我々は角錐の頂点に集まるおのおのの角がθであることを要求したいが、このときの角錐の高さは今はわかっていない。そこで、高さ{h}が未知であるとして頂点{X=X(h)}の座標を次のような関数としておく:

X(h):= [0, 0, h]

(上の式での[a,b,c] のような形式はMaximaでベクトルを表現するときに使われる書式である。)

さて、X(h) を頂点とする三角形であって残り二頂点が polyVert(N,0)と polyVert(N,1)であるようなものを考え、そのX(h)における角度の余弦を考えよう:

F1(h,N):= cosTriangleVert(X(h), polyVert(N,0), polyVert(N,1));

hに対する要請としては、このF1(h,N)が cos(θ)になって欲しいので、次のようにMaximaにhについての方程式を解かせれば良さそうに思える:

solve(F1(h,N) = cos(theta), h);

ところが、これに対するMaximaの出力は
{[h=-\sqrt{\sqrt{{h}^{2}+1}\,\mathrm{cos}\left( \theta\right) \,\sqrt{{\mathrm{sin}\left( \frac{2\,\pi }{N}\right) }^{2}+{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }^{2}+{h}^{2}}-\mathrm{cos}\left( \frac{2\,\pi }{N}\right) },h=\sqrt{\sqrt{{h}^{2}+1}\,\mathrm{cos}\left( \theta\right) \,\sqrt{{\mathrm{sin}\left( \frac{2\,\pi }{N}\right) }^{2}+{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }^{2}+{h}^{2}}-\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }]}
となってしまい、全然hについて解けていない。F1(h,N) の形があるいは複雑過ぎたのかもしれないと思ってMaximaで

F1(h,N);

としてやると {\frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) +{h}^{2}}{\sqrt{{h}^{2}+1}\,\sqrt{{\mathrm{sin}\left( \frac{2\,\pi }{N}\right) }^{2}+{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }^{2}+{h}^{2}}}} と返ってくる。sqrtが混じってるあたり、なんとなく解きづらそうな形ではある。もう少しF1(h,N)の形を簡単にできないだろうか?念のために trigrat を試してみよう:

trigrat(F1(h,N))

すると次のような答えが返ってくる:{\frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) +{h}^{2}}{{h}^{2}+1}}

この形なら随分簡単なので、解けそうな雰囲気が出てきた。あらためて

F2(h,N) := trigrat( F1(h,N) );
solve( F2(h,N) = cos(theta), h);

としてやると次のようにhが解かれる:
{[h=-\sqrt{\frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }{\mathrm{cos}\left( \theta\right) -1}-\frac{\mathrm{cos}\left( \theta\right) }{\mathrm{cos}\left( \theta\right) -1}},h=\sqrt{\frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }{\mathrm{cos}\left( \theta\right) -1}-\frac{\mathrm{cos}\left( \theta\right) }{\mathrm{cos}\left( \theta\right) -1}}]}
hは角錐の高さなので、ここでは正の解を選び、H(N,θ)と呼ぶことにしよう:

H(N,theta):= sqrt(cos((2*%pi)/N)/(cos(theta)-1)-cos(theta)/(cos(theta)-1));

{\mathrm{H}\left( N,\theta\right) :=\sqrt{\frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }{\mathrm{cos}\left( \theta\right) -1}-\frac{\mathrm{cos}\left( \theta\right) }{\mathrm{cos}\left( \theta\right) -1}}}
そしていま定義したH(N,θ)を高さに持つ頂点を次のように定義する:

X0(N,theta):= [0, 0, H(N,theta)];

次に、点polyVert(N,0)と頂点X0(N,θ)を結ぶ直線へ、点polyVert(N,1)からおろした垂線の足をYとしたい。具体的な位置はわからないので、polyVert(N,0)とX0(N,θ)の内分点として定義しておき、あとでパラメータを決定することにする:

Y(N,theta,k):= k * X0(N,theta) + (1-k) * polyVert(N,0);

直交条件なので内積が消えるという条件でkについての方程式を立てて解かせれば良い:

solve( (polyVert(N,0) - Y(N,theta,k)).(polyVert(N,1) - Y(N,theta,k)) = 0, k);

すると次を得る: {[k=1-\mathrm{cos}\left( \theta\right) ,k=0]}
0は明らかに望んでいる解ではないから、求めている2番目のkが垂線の足を表すためのパラメータである。これを用いて垂線の足Y0 を次のように定義する:

Y0(N,theta):= Y(N, theta, 1-cos(theta));

さて、幾何学的な対称性から、Y0はまた点polyVert(N,0)と頂点X0(N,θ)を結ぶ直線へpolyVert(N,-1)からおろした垂線の足であるとも言える。従っていま求めようとしている二面角は、点polyVert(N,1)と Y0, polyVert(N,-1)によって作られる角になっている。うえのほうで用意しておいた式により、二面角の余弦は次のように計算できる:

cosTriangleVert( Y0(N,theta), polyVert(N,1), polyVert(N,-1));

これは {\frac{-{\mathrm{sin}\left( \frac{2\,\pi }{N}\right) }^{2}+{\left( \mathrm{cos}\left( \frac{2\,\pi }{N}\right) -\mathrm{cos}\left( \theta\right) \right) }^{2}+{\left( 1-\mathrm{cos}\left( \theta\right) \right) }^{2}\,\left( \frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }{\mathrm{cos}\left( \theta\right) -1}-\frac{\mathrm{cos}\left( \theta\right) }{\mathrm{cos}\left( \theta\right) -1}\right) }{{\mathrm{sin}\left( \frac{2\,\pi }{N}\right) }^{2}+{\left( \mathrm{cos}\left( \frac{2\,\pi }{N}\right) -\mathrm{cos}\left( \theta\right) \right) }^{2}+{\left( 1-\mathrm{cos}\left( \theta\right) \right) }^{2}\,\left( \frac{\mathrm{cos}\left( \frac{2\,\pi }{N}\right) }{\mathrm{cos}\left( \theta\right) -1}-\frac{\mathrm{cos}\left( \theta\right) }{\mathrm{cos}\left( \theta\right) -1}\right) }}
であることがわかるが、もう少し簡単にならないだろうかと考えて trigsimp をかけてみると:

trigsimp(%);

次の式を得る: {-\frac{2\,\mathrm{cos}\left( \frac{2\,\pi }{N}\right) -\mathrm{cos}\left( \theta\right) +1}{\mathrm{cos}\left( \theta\right) +1}}
(分子に現れる{1-\mathrm{cos}(\theta)}は常にであることに注意せよ)。

以上の計算結果を受けて次のような関数を定義しておこう:

cosOfRegularDihedralAngle(N,theta) := -(2*cos((2*%pi)/N)-cos(theta)+1)/(cos(theta)+1);

■ いつくかの場合における二面角公式の検証

あまり見かけない「公式」が得られたので、いくつかの場合に当てはめてみて、式を検証してみることにする。

  • 平面
    角度{2\pi / N }が頂点でN個集まっている場合、この正角錐は立体としては潰れてしまい平面になる。当然ながら二面角は180°となる。式の形からほぼ自明だが

    cosOfRegularDihedralAngle(N, 2*%pi/N);
    は -1 を返し、平面であることをうまく反映しているようである。
  • 立方体
    この場合は{N=3, \theta=\pi/2}であり、二面角は{\pi/2}なので、その余弦は{0}のはずである。実際に

    cosOfRegularDihedralAngle(3, %pi/2);

    を計算すると{0}が返ってくるので、この場合にも公式は正しい値を返している。

  • 正四面体
    この場合は{N=3, \theta=\pi/3}である。正四面体の二面角は、簡単な考察により、二辺の長さが{\frac{\sqrt{3}}{2}}、残る一辺の長さが{1}であるような二等辺三角形の頂角に等しい。この頂角の余弦を余弦定理で求めると1/3になる。我々の公式による計算

    cosOfRegularDihedralAngle(3, %pi/3);

    とこれは一致するので、この場合にも公式は正しい値を返している。

■ まとめ

N個の、頂角θの二等辺三角形を側面とする正角錐の、隣接する二側面の間の角度(二面角)を{\varphi}とすると、次の式が成立する:

{\mathrm{cos}(\varphi)=-\frac{2\,\mathrm{cos}\left( \frac{2\,\pi }{N}\right) -\mathrm{cos}\left( \theta\right) +1}{\mathrm{cos}\left( \theta\right) +1}}

■ 追記

  • 2014/11/27
  • 記事が長くなったため、当初予定していた星形大正十二面体にまで言及しないことにしました。これに伴い、黄金比に関する記述に取り消し線を入れました。

  • 2014/12/01
  • うっかり{1-\mathrm{cos}(\theta)}が常に負、と書いてしまった箇所を訂正しました。

  • 2015/05/11
  • 立方体の場合の公式の検証部分で数値が間違っていたので訂正しました。