arith blog

   気ままにらくがきブログ

八元数の乗算ツールを作ってみた

はじめに

前回、「四次元回転イメージと多元数の乗積表」という記事を書いてみたのですが、閲覧数がいつもより多めでしたので多元数ネタ第二弾をやってみることにしました。

実はちょうど多元数の乗算をラクしようと Excel で計算マクロを組んでたのですが、webツール化した方がみなさんのお役に立つかも?と考えて移植してみたんですよ。というわけで、早速紹介させてくださいませ☆彡

八元数乗算機

多元数の積って計算がものすご~くメンドーな上、間違いやすいんですよね(;´Д`) そこで作ったのがこのツール!今のとこ八元数までに対応してまして、各元の係数を最左列と最上段の入力欄に入れると [最左列の八元数の和] \times [最上段の八元数の和] を瞬時に計算してくれます。導出過程も視覚的に分かるよう工夫してみました(*´艸`*)

アルファベット(大・小文字)とギリシャ文字(小文字のみ)を変数として使え、「1」「-3bc」などの整数との積でも認識してくれます。但し、i とか j は虚数単位とみなさず変数として扱いますのでご注意下さい。入力欄からフォーカスが外れるか、入力欄の中で ENTERキー を押したタイミングで自動的に計算結果を更新します。

八元数乗算機



i
i
j
j
ij
ij
l
l
il
il
jl
jl
ijl
ijl
i j ij l il jl ijl
               
i                
j                
ij                
l                
il                
jl                
ijl                
 

「T」ボタンは最左列の八元数(被乗数)と最上段の八元数(乗数)を交換します。掛ける順番によって計算結果が変わるのが多元数の面白いトコロですね。

表の下にならぶ「+」や「-」のボタンは被乗数や乗数に対する計算で、左(left)や右(right)から各元を事前に乗除しておくことができます。適当に触っているだけでパズルとしても楽しめるかも? ゲーム化も考えましたが誰得でした(^_^;)

…と今回の記事はこれだけなのですが、なんか物足りない感があるのでここから先は私の考察メモを書いて埋めときますね。 一応、ところどころこのツールを使いながら計算したのですが、手前味噌ながら便利さを実感した次第です。

二次元

実-i 面 を \alpha~\mathrm{rad} 回転させた時の座標 (w,~x)

\begin{align}&(\cos\alpha+i\sin\alpha)(w+xi)\end{align}

\vec{a}\vec{b} の乗積

\begin{align}&|\vec{a}|\Bigl(i\cos\alpha+j\sin\alpha\Bigr)|\vec{b}|\Bigl(i\cos\beta+j\sin\beta\Bigr)\\=&\Bigl(i|\vec{a}|\cos\alpha+j|\vec{a}|\sin\alpha\Bigr)\Bigl(i|\vec{b}|\cos\beta+j|\vec{b}|\sin\beta\Bigr)\\=&-\underbrace{\Bigl( (|\vec{a}|\cos\alpha)(|\vec{b}|\cos\beta)+(|\vec{a}|\sin\alpha)(|\vec{b}|\sin\beta)\Bigr)}_{内 積}\\&+\underbrace{ij\Bigl( (|\vec{a}|\cos\alpha)(|\vec{b}|\sin\beta)-(|\vec{a}|\sin\alpha)(|\vec{b}|\cos\beta)\Bigr)}_{外 積}\\=&-\underbrace{|\vec{a}||\vec{b}|\cos(\beta-\alpha)}_{内 積}+\underbrace{ij|\vec{a}||\vec{b}|\sin(\beta-\alpha)}_{外 積}\\=&|\vec{a}||\vec{b}|\Bigl(-\cos(\beta-\alpha)+ij\sin(\beta-\alpha)\Bigr)\end{align}

三次元

原点と (a,~b,~c) を通る直線を軸として \beta~\mathrm{rad} 回転させた時の座標 (x,~y,~z)

\begin{align}&\left(\cos\frac{\beta}2+\frac{ai+bj+cij}{\sqrt{a^2+b^2+c^2}}\sin\frac{\beta}2\right)(xi+yj+zij)\left(\cos\frac{-\beta}2+\frac{ai+bj+cij}{\sqrt{a^2+b^2+c^2}}\sin\frac{-\beta}2\right)\\=&\left(\cos\frac{\beta}2+\frac{ai+bj+cij}{\sqrt{a^2+b^2+c^2}}\sin\frac{\beta}2\right)(xi+yj+zij)\left(\cos\frac{\beta}2+\frac{-ai-bj-cij}{\sqrt{a^2+b^2+c^2}}\sin\frac{\beta}2\right)\\=&+\left(i\cos^2\frac{\beta}2+\frac{2cj-2bij}{\sqrt{a^2+b^2+c^2}}\cos\frac{\beta}2\sin\frac{\beta}2+\frac{(a^2-b^2-c^2)i+2abj+2acij}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)x\\&+\left(j\cos^2\frac{\beta}2+\frac{2aij-2ci}{\sqrt{a^2+b^2+c^2}}\cos\frac{\beta}2\sin\frac{\beta}2+\frac{(b^2-a^2-c^2)j+2abi+2bcij}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)y\\&+\left(ij\cos^2\frac{\beta}2+\frac{2bi-2aj}{\sqrt{a^2+b^2+c^2}}\cos\frac{\beta}2\sin\frac{\beta}2+\frac{(c^2-a^2-b^2)ij+2aci+2bcj}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)z\\=&+\left(i\cos\beta+\frac{cj-bij}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{2a^2i+2abj+2acij}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)x\\&+\left(j\cos\beta+\frac{aij-ci}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{2b^2j+2abi+2bcij}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)y\\&+\left(ij\cos\beta+\frac{bi-aj}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{2c^2ij+2aci+2bcj}{a^2+b^2+c^2}\sin^2\frac{\beta}2\right)z\\=&+\left(i\cos\beta+\frac{cj-bij}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{a^2i+ab j+ac ij}{a^2+b^2+c^2}(1-\cos\beta)\right)x\\&+\left(j\cos\beta+\frac{aij-ci}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{b^2j+ab i+bc ij}{a^2+b^2+c^2}(1-\cos\beta)\right)y\\&+\left(ij\cos\beta+\frac{bi-aj}{\sqrt{a^2+b^2+c^2}}\sin\beta+\frac{c^2ij+ac i+bc j}{a^2+b^2+c^2}(1-\cos\beta)\right)z\\=&+\left(\frac{a^2i+ab j+ac ij}{a^2+b^2+c^2}+\frac{(b^2+c^2)i-ab j-ac ij}{a^2+b^2+c^2}\cos\beta+\frac{cj-bij}{\sqrt{a^2+b^2+c^2}}\sin\beta\right)x\\&+\left(\frac{b^2j+ab i+bc ij}{a^2+b^2+c^2}+\frac{(a^2+c^2)j-ab i-bc ij}{a^2+b^2+c^2}\cos\beta+\frac{aij-ci}{\sqrt{a^2+b^2+c^2}}\sin\beta\right)y\\&+\left(\frac{c^2ij+ac i+bc j}{a^2+b^2+c^2}+\frac{(a^2+b^2)ij-ac i-bc j}{a^2+b^2+c^2}\cos\beta+\frac{bi-aj}{\sqrt{a^2+b^2+c^2}}\sin\beta\right)z\\=&+\left(\frac{a(ax+by+cz)+( (b^2+c^2)x-a(by+cz))\cos\beta+(bz-cy)\sqrt{a^2+b^2+c^2}\sin\beta}{a^2+b^2+c^2}\right)i\\&+\left(\frac{b(ax+by+cz)+( (a^2+c^2)y-b(ax+cz))\cos\beta+(cx-az)\sqrt{a^2+b^2+c^2}\sin\beta}{a^2+b^2+c^2}\right)j\\&+\left(\frac{c(ax+by+cz)+( (a^2+b^2)z-c(by+cz))\cos\beta+(ay-bx)\sqrt{a^2+b^2+c^2}\sin\beta}{a^2+b^2+c^2}\right)ij\end{align}

球座標 (r,\theta,\phi) を直交座標で表現

\begin{align}&\scriptsize\left(\cos\frac{\frac{\pi}2-\theta}2+(i\sin\phi-j\cos\phi)\sin\frac{\frac{\pi}2-\theta}2\right)(r(i\cos\phi+j\sin\phi))\left(\cos\frac{\frac{\pi}2-\theta}2-(i\sin\phi-j\cos\phi)\sin\frac{\frac{\pi}2-\theta}2\right)\\=&r\left(i\cos\phi\cos\left(\frac{\pi}2-\theta\right)+j\sin\phi\cos\left(\frac{\pi}2-\theta\right)+ij\sin\left(\frac{\pi}2-\theta\right)\right)\\=&r(i\cos\phi\sin\theta+j\sin\phi\sin\theta+ij\cos\theta)\\=&r(\cos\theta+(j\cos\phi-i\sin\phi)\sin\theta)ij\end{align}

四次元

実-i 面を \alpha~\mathrm{rad}j-ij 面を \beta~\mathrm{rad} 回転させた時の座標 (w,~x,~y,~z)

\begin{align}&\left(\cos\frac{\alpha+\beta}2+i\sin\frac{\alpha+\beta}2\right)( (w+xi)+(y+zi)j)\left(\cos\frac{\alpha-\beta}2+i\sin\frac{\alpha-\beta}2\right)\\=&+\left(\cos\frac{\alpha+\beta}2\cos\frac{\alpha-\beta}2-\sin\frac{\alpha+\beta}2\sin\frac{\alpha-\beta}2\right)(w+xi)\\&+\left(\cos\frac{\alpha+\beta}2\sin\frac{\alpha-\beta}2+\cos\frac{\alpha-\beta}2\sin\frac{\alpha+\beta}2\right)i(w+xi)\\&+\left(\cos\frac{\alpha+\beta}2\cos\frac{\alpha-\beta}2+\sin\frac{\alpha+\beta}2\sin\frac{\alpha-\beta}2\right)(y+zi)j\\&+\left(\sin\frac{\alpha+\beta}2\cos\frac{\alpha-\beta}2-\cos\frac{\alpha+\beta}2\sin\frac{\alpha-\beta}2\right)i(y+zi)j\\=&(\cos\alpha+i\sin\alpha)(w+xi)+(\cos\beta+i\sin\beta)(y+zi)j\end{align}