「もう一つの」方法について 前回 ご説明しましたが、最初の方法については、 前々回 に C# のプログラムでご紹介したものの、ウェブプログラムで確認できるようにはなっていなかったので、ここで、できるようにしました。 この方法によれば、やや心配な乱数を用いることなく軸を求められます。 精度としては、末尾の桁が不確かではありますが、「もう一つの」方法と同程度だと思います。
プログラムの核になるのは次の部分です。
なお、この(本来の)計算がうまくいく理由を私は十分には理解していません。 収束に向かう方法であることは間違いないのですが、回転の表現を「標準化」する で、偶数次元の整理を反復計算するつもりで作ったルーチンが、奇数次元では軸を分離してしまったというわけです。 やったらできてしまった、という、プログラミングあるあるです。