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}

 

四次元回転イメージと多元数の乗積表

はじめに

今回は、四次元とかそれ以上の次元に関するお話です。といってもスピリチュアルな方向ではなく「多元数(超複素数)に関する個人的考察」を書き連ねた記事となります。興味のある方だけお付き合いくださいませm(_ _)m

複素数の二次元回転なら分かる」、「仕組みは謎だけど四元数同士の積で三次元の回転を表現できることは知ってる」程度の知識がある方を対象として

  • 四元数同士を掛けたときの空間イメージがわかない
  • 三次元回転の式はどっからでてきたの?
  • 共役四元数を左右から掛ける意味は?
  • 八元数結合則が成り立たない理由は?

にお答えするような内容で書いてみるつもりです。出来るだけ抽象度を下げた説明を心がけたいと思っておりますが、そもそも想像することが難しい世界のお話ですのでもしうまく伝わらない文章になってしまっていたらゴメンナサイ!!

四元数と四次元回転の関係イメージ

四元数の積の幾何イメージ

四元数の積として表される回転は、isoclinic rotation と呼ばれる四次元回転の一種に該当します。この isoclinic rotation というのは日本語に訳すなら「等角回転」となるでしょうか。四次元空間内の1点で垂直に交わる2平面が互いの面を回転の中心軸面として同じ角度で回転するもので、全ての点がこれら2平面の回転を合成した動きをすることになり、絶対値が1の回転なら四次元超球面上の大円に沿って回転します。四次元回転では回転軸が直線ではなく面なのです。

三次元空間では垂直に交わる2平面の交差部が直線となりますので、1点で交わるといわれても想像が難しいでしょう。しかし、一方の平面上の直線(交差部の直線とは平行ではない)を軸にしてその平面を四次元目の方向へと回転させると、その平面は回転軸の直線を残してその三次元空間から姿を消しますので、この時残された直線ともう一方の平面とは1点で交わることになる、といった感じでイメージをしてみるとおぼろげながら掴めてくるかもしれません(;´∀`)

話を戻しまして、等角回転の様子は式の形から伺うことができます。

\small(a+bi+cj+dk)(\cos\theta+i\sin\theta)
=\small( (a+bi)+(cj+dk))(\cos\theta+i\sin\theta)
\small=(a+bi)(\cos\theta+i\sin\theta)+(cj+dk)(\cos\theta+i\sin\theta)

(a+bi)(cj+dk) のそれぞれが回転する面上を同じ角度 \theta で回転する式となっていますね。私の便宜上の造語ですが、これら2面のうち実軸とi軸を含むように分けた側の軸面(実-i平面)を「実面」と呼び、含まない側の軸面(j-k平面)を「虚面」と呼ぶことにします。

さて、先程の式では (\cos\theta+i\sin\theta) を右側から掛けていますが、もしこれを左から掛けていたらどうなっていたでしょうか。

\small(\cos\theta+i\sin\theta)(a+bi+cj+dk)
=\small(\cos\theta+i\sin\theta)( (a+bi)+(cj+dk))
\small=(\cos\theta+i\sin\theta)(a+bi)+(\cos\theta+i\sin\theta)(cj+dk)

計算順序が変わったことで、実面と虚面で次のように回転方向の違いが生じます。

右から掛けた場合
\small(a+bi)(\cos\theta+i\sin\theta)+\small(cj+dk)(\cos\theta+i\sin\theta)
\small=(a+bi)\cos\theta+(ai-b)\sin\theta+\small(cj+dk)\cos\theta-(ck-dj)\sin\theta
\small=(a+bi)\cos\theta+(ai-b)\sin\theta+\small(cj+dk)\cos(-\theta)+(ck-dj)\sin(-\theta)

左から掛けた場合
\small(\cos\theta+i\sin\theta)(a+bi)+\small(\cos\theta+i\sin\theta)(cj+dk)
\small=(a+bi)\cos\theta+(ai-b)\sin\theta+\small(cj+dk)\cos\theta+(ck-dj)\sin\theta

このように実面の回転方向に対する虚面の回転方向は正逆2通りあり、掛ける方向によって振り分け可能です。そこでこれらの回転を掛ける方向にちなみ left と right で区別することにしましょう。先程の式では上の段がright、下の段がleft ということになりますね。left回転とright回転では虚面の回転方向が逆になるのがポイントです。

ところで、今は等角回転を前提としたお話をしていましたが、四次元空間上の実面と虚面は、回転の中心点こそ共有しているものの互いに完全に独立しておりますので、それぞれが異なる角度で回転することもできるはずです。実は先程の left と right をパズルのように組み合わせれば、そのような回転を作り出すことができちゃいます。

例えば実面上の回転角を \alpha、虚面上の回転角を \beta として回転させたいとしましょう。この場合、left回転を\frac{\alpha+\beta}2、right回転を\frac{\alpha-\beta}2 するとよいです。

\small\left(\cos\frac{\alpha+\beta}2+i\sin\frac{\alpha+\beta}2\right)\left( (a+bi)+(cj+dk)\right)\left(\cos\frac{\alpha-\beta}2+i\sin\frac{\alpha-\beta}2\right)

これらの結果として回転する角度の合計は、left回転+right回転で

実面:\frac{\alpha+\beta}2+\frac{\alpha-\beta}2=\alpha

虚面:\frac{\alpha+\beta}2-\frac{\alpha-\beta}2=\beta

となるので目的の回転を得られるってわけですね。

この時、もし \alpha0 だったら実面は回転せずに虚面のみが回転し、\beta0 なら虚面は回転せずに実面のみが回転することになります。実面と虚面は互いを軸面としあって回転しているため、一方が回転してない状態であるならばそれはもはや三次元回転といってよいでしょう。

ここで、とある座標 P と原点を結ぶ直線を考えたとき、もしこの直線が実軸に対して直交しているのであればその直線は実軸方向には傾いていませんので (0,~x,~y,~z) と表現できますね。また、この座標の原点からの距離を 1 としてこの直線と実軸のなす平面を実面とみなすならば、実面の回転における i に相当するのは点 P でその座標が xi+yj+zk です。とすると、この実面を回転させないように虚面相当の平面(この直線に直交し原点を通る平面)のみを \theta 回転させる場合、任意座標 q の回転は

\small(\cos\frac{0+\theta}2+(xi+yj+zk)\sin\frac{0+\theta}2)q(\cos\frac{0-\theta}2+(xi+yj+zk)\sin\frac{0-\theta}2)\\\small=(\cos\frac{\theta}2+(xi+yj+zk)\sin\frac{\theta}2)q(\cos\frac{\theta}2-(xi+yj+zk)\sin\frac{\theta}2)

という形に書けるはずです。この式どこかで見たことないでしょうか。共役四元数を左右から掛ける三次元回転の公式は、このような仕組みで成り立っていたのです。

 

四元数と四次元回転の関係イメージ

乗積表の構造

さて、お次は四元数の乗積表を見てみましょう。

  1 +i +j +k
1 +1 +i +j +k
+i +i -1 +k -j
+j +j -k -1 +i
+k +k +j -i -1

符号を無視して考えるならば単位元1 とする元の集合で閉じており、自分自身を逆元とする結合的かつ可換なアーベル群だと分かります。ij=k,~jk=i,~ki=j というループを持つのが大きな特徴で、実はこれは二進数を各桁ごとに排他的論理和を取る演算と代数的性質が全く同じなのです。

\oplus 00 01 10 11
00 00 01 10 11
01 01 00 11 10
10 10 11 00 01
11 11 10 01 00
e_0\oplus e_a=e_a
e_a\oplus e_a=e_0
e_a\oplus e_b=e_c
e_b\oplus e_c=e_a
e_c\oplus e_a=e_b

 ~e_{01}=i,~e_{10}=j,~e_{11}=k のように捉えますと、このループ構造は順列と逆順列のペアがあり、一方が赤字で書かれた乗積のうち3つに該当していますね。このように符号を割り当てることで四元数の乗積表を作れることが分かりました。

では、もう少し踏み込んで考察してみます。

積の構造

ケーリー=ディクソンの構成法」をイメージすると分かりやすいかと思いますが、多元数の各元(各次元軸)は、積に関して二進数「的」な構造を持っています。
例えば八元数

 e_0=1,~e_1=i,~e_2=j,~e_3=k,

 e_4=l,~e_5=m,~e_6=n,~e_7=o

のように定義されている場合、

 e_{000}=1,~e_{001}=i,~e_{010}=j,~e_{011}=k,

 e_{100}=l,~e_{101}=m,~e_{110}=n,~e_{111}=o

というイメージでしょうか。

八元数の基本的な元は8種類ですが、このように考えれば実質的な構成要素は添字にある l成分,j成分,i成分 の3種類に集約させられます。実は多元数の積はこうした分解によって得られる構成要素のみで表現可能なのです。

例えば八元数の積ならば

e_{abc}\cdot e_{def}=(-1)^{\delta(abc,def)}\cdot i^{c+f}\cdot j^{b+e}\cdot l^{a+d}

と表現できます。(\delta は何らかの処理によって適切に値を返す関数とお考え下さい)

この i^{c+f}\cdot j^{b+e}\cdot l^{a+d} は、符号を無視すれば二進数を各桁ごとに排他的論理和をとる演算を用いて e_{abc~\oplus ~def} と表現できますよね。

ということは、適切に符号を割り振る方法さえ分かれば排他的論理和を用いる手法でもっと大きな乗積表も作れそうです。八元数以上では結合則が成り立たないとされていますが、その理由を探るためにも符号の付け方ルールを見直してみましょう。

十六元数の乗積表を作ってみた

十六元数ということで、4桁の二進数の排他的論理和表に符号をつけてみました。

十六元数の乗積表

黒字は正符号、赤字は負符号です。以下、符号の決め方の根拠を書いていきます。

    [基本ルール]
  • e_0\cdot e_a=e_a単位元の積)
  • 0\lt a の時、e_a\cdot e_a=-1\frac{\pi}2+\frac{\pi}2=\pi~rad回転)
  • a\lt b の時、\mathrm{sgn}(e_a\cdot e_b)=+1(積順と符号の関係)
  • a\ne0,~b\ne0,~a\ne b の時、e_a\cdot e_b=-e_b\cdot e_a(反交換)
  • 結合則はひとまず成立するものとして考え、破綻時に見直す。
背景が白

基本ルールに従います。

背景が灰色

基本ルールに従えば、i,~j,~ij(=k) の積のループ順は次のように定まります。

ij=-ji=k
jk=-kj=i
ki=-ik=j

 

このようなループ順の関係を、以降 \varepsilon(i,j,k) のように表記します。この場合は

\varepsilon(i,j,ij)

です。

背景が薄緑

基本ルールに従えば、l,~p,~lp の積のループ順は次のように定まります。

\varepsilon(l,p,lp)
背景がオレンジ

i に対する jljpj に対する ilipij に対する ilip はそれぞれ同列関係にあるべきですが、ループ順を考えると j\cdot il=-ijl からは \varepsilon(j,il,-ijl) が導かれるのに対し il\cdot j=-ijl からは \varepsilon(j,il,ijl) が導かれて矛盾してしまいます。これは、

-ijl=jil=j(il)=-(il)j=-i(lj)=i(jl)=ijl

を見れば一目瞭然、結合則によって反交換2回分が1回分に短縮されてしまい符号の辻褄が合わなくなったことが原因です。そこで、lp に対して結合の付け外しをする際には符号を反転させる」ことで矛盾を解消しましょう。

また、結合則を崩したことに伴う

(il)(il)=-ilil=iill=1\ne-1

(ij)(il)=-ji(il)=jiil=-jl
(ij)(il)=-il(ij)=-ilij=-lj=jl

という矛盾を防ぐため、「二乗となる元は他の元と結合しない」ようにします。

jl(-ijl)=ijl(jl)=-i(jl)(jl)=i
il(ijl)=-ijl(il)=jil(il)=-j(il)(il)=j
il(-jl)=il(lj)=-illj=ij

のように算出すれば問題ないようです。

\varepsilon(i,jl,-ijl)
\varepsilon(j,il,ijl)
\varepsilon(ij,il,-jl)
\varepsilon(i,jp,-ijp)
\varepsilon(j,ip,ijp)
\varepsilon(ij,ip,-jp)
背景が肌色

1,~i,~j,~ij に対する pl は同列関係にあるべきですね。

l(ijl)=-ijll=ij

のように算出すれば問題ないようです。

\varepsilon(i,l,il)
\varepsilon(j,l,jl)
\varepsilon(ij,l,ijl)
\varepsilon(i,p,ip)
\varepsilon(j,p,jp)
\varepsilon(ij,p,ijp)
背景が緑色

l,il,~jl,~ijl に対する p は同列関係にあるべきですね。

p(ijlp)=-ijlpp=ijl

のように算出すれば問題ないようです。

\varepsilon(il,p,ilp)
\varepsilon(jl,p,jlp)
\varepsilon(ijl,p,ijlp)
背景が薄水色

p,ip,~jp,~ijp に対する l は同列関係にあるべきですね。

l(-ijlp)=l(ijpl)=-ijpll=ijp

のように算出すれば問題ないようです。

\varepsilon(ip,l,-ilp)
\varepsilon(jp,l,-jlp)
\varepsilon(ijp,l,-ijlp)
背景が薄黄色

i,j,ij に対する lpil,jl,ijl に対する lpip,jp,ijp に対する lp は同列関係にあるべきですね。

lp(-ijlp)=ijlp(lp)=-ij(lp)(lp)=ij
ijl(lp)=-ijllp=ijp
lp(ijp)=-pl(ijp)=ijp(pl)=-ijppl=ijl

のように算出すれば問題ないようです。

\varepsilon(i,lp,-ilp)
\varepsilon(j,lp,-jlp)
\varepsilon(ij,lp,-ijlp)
\varepsilon(il,lp,ip)
\varepsilon(jl,lp,jp)
\varepsilon(ijl,lp,ijp)
背景が濃い水色

これらは全て lp を構成要素に持つ元が積のループ内に現れる乗積です。

(jl)(ip)=-(jl)(pi)=(jlp)i=-i(jlp)=ij(lp)=-ijlp
(jl)(ip)=-(ip)(jl)=( (ip)j)l=-(j(ip))l=jipl=-ijpl=ijlp

という矛盾を避けるため、lp の結合を優先させるようにします。

(jlp)(ijlp)=-j(lp)(ijlp)=j(lp)(ij)(lp)=-j(lp)(lp)(ij)=j(ij)=i
(ilp)(-ijlp)=-i(lp)(-ijlp)=-i(lp)(ij)(lp)=i(lp)(lp)(ij)=-iij=j
ij(ilp)=-iji(lp)=iij(lp)=-j(lp)=jlp
(ilp)(jlp)=-i(lp)(jlp)=i(lp)j(lp)=-i(lp)(lp)j=ij
(il)(jp)=-il(pj)=(ilp)j=-(i(lp))j=j(i(lp))=-jilp=ijlp

のように算出すれば問題ないようです。

\varepsilon(i,jlp,ijlp)
\varepsilon(j,ilp,-ijlp)
\varepsilon(ij,ilp,jlp)
\varepsilon(il,jp,ijlp)
\varepsilon(il,ijp,-jlp)
\varepsilon(jl,ip,-ijlp)
\varepsilon(jl,ijp,ilp)
\varepsilon(ijl,ip,jlp)
\varepsilon(ijl,jp,-ilp)

 

このようにして全ての乗積に符号をつけてみたのですが、十六元数としての正当性は大丈夫なのでしょうか。検証する手段がちょっと思いつかないのですが、少なくとも Wikipedia 先生の「十六元数」のページと比較してみた限りは一致してるようなのでとりあえずは良しとしましょう(*>_<*)ノ

万年カレンダーに”なる”方法

はじめに

アニメ映画「サマーウォーズ」で、先輩の誕生日を聞いた主人公が「モジュロ演算」という計算を使って何曜日なのか即答していました。モジュロ演算とは聞き慣れない言葉ですが、一体どんな計算なのでしょうか?

というわけで、今回は「道具に頼らない」という条件で日付から曜日が分かる方法についてアレコレ考えてみました(*´ω`*)

モジュロ演算って?

調べてみたところ、「モジュロ(演算)」というのは小学校で習う「割り算で余りを出す計算」のことのようです。別の呼び方で「剰余演算」ともいいますね。
(例えば 94 で割った余り「9\div4=2\cdots1」を「9~\mathrm{mod}~4\equiv1」と書きます)

この「モジュロ」そのものは曜日を計算する専用のものではないのですが、曜日には7日で1周するという性質がありますので「ある数を7で割った余り」を曜日に対応させるという使い方で応用することができるのです。

例えばある日曜日を0日目とした場合、その日からの日数が分かれば「日数を7で割った余り」を求めることで曜日も分かります。どういうことなのか、日数を7で割った余りと曜日の対応を表にしてみました。

0 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 31 32 33 34
35 36 37 38 39 40 41
42 43 44 45 46 47 48
49 50 51 52 53 54 55

では、年月日から曜日を知りたい場合は一体いくつを7で割ればよいのでしょうか。有名な方法としては「ツェラーの公式」を利用するのが一般的のようです。

実は私もこのツェラーの公式とほぼ同じものを車輪の再発明していたのですが、「もっと暗算にやさしく」と考えてボツ案にしたという経緯がございます。そんな私の試行錯誤っぷりを、まずは御覧くださいませ(;´∀`)

ボツにしたアイデア集(読み飛ばしてOK)

西暦 ccyymd 日の曜日。\lfloor\cdots\rfloor は小数点以下切り捨ての記号です。
出てきた数を7で割った余り 06 が 日曜~土曜 に対応しています。

ボツ案1:2ヶ月で-2日分&補正 作戦

1 月, 2 月 は前年の 5 月, 6 月 として計算

5(cc~\mathrm{mod}~4)+\left\lfloor\frac{10yy}8\right\rfloor+(16-m)+d
(奇数月補正:3,5,7月はさらに -4、9,11月は +4 する)

月単位でみた時、連続する2ヶ月が61日となるケースが1年の内に7回あることに着目した案です。暗算に適した式である反面、謎の奇数月補正で混乱しやすいのが難点。

ボツ案2:5ヶ月で+13日分 作戦

1 月, 2 月 は前年の 13 月, 14 月 または 前年の 5 月, 6 月 として計算

d+\left(\left\lfloor\frac{26(m+1)}{10}\right\rfloor-1\right)+\left\lfloor\frac{10yy}8\right\rfloor-2(cc~\mathrm{mod}~4)

月単位でみた時、連続する5ヶ月が153日となるケースが1年の内に7回あることに着目した案です。ツェラーの公式とほとんど同形で、二桁の掛け算がネック。

ボツ案3:1ヶ月で+3日分&補正 作戦

1 月, 2 月 は前年の 13 月, 14 月 または 前年の 5 月, 6 月 として計算

5(cc~\mathrm{mod}~4)+\left\lfloor\frac{10yy}8\right\rfloor+\left(3(m\pm4)~\mathrm{mod}~8+4\right)+d
(エイプリル補正:4月はさらに +1 する)

月単位でみた時、1ヶ月が31日であるケースが1年の内に7回あることに着目した案です。良案でしたが、後述する方法のが高速だったためお蔵入り。

 

補正処理をなくそうとすると計算が大変になってしまい、バランスが難しいですね。まあ、ボツ案とはいえこれでも十分実用の範囲とは思いますので念の為(;・∀・)

20xx年12月31日

それでは、いよいよ私のアイデア最新版を紹介しましょう。
まずは、20xx年(2000年~2099年)の大晦日の曜日から(*´ω`*)

西暦の下二桁 xx 年を「4で割った商余り」に分割し、次のように計算します。

余り+[7の整数倍])-(4で割った商×2)

[7の整数倍] は(4で割った商×2)を引いて正の数になるなら何倍でもよいです。もちろん0でも!

【2018年12月31日】
 18 →「42

 (2+[7])-(4×2) = 1

この数がその年の12月31日の曜日を表しています。7で割って余りを求めてみると 0~6 が 日~土 に対応しており、この場合は 1 ですから月曜日です。

20xx年m月d日

m月d日って、m月1日の前日(前月最終日)からd日後ですよね。つまり「m月1日の前日の曜日+d」が「m月d日の曜日」を表します。というわけで、次の表を御覧ください。

3月 4月 5月 6月
2 5 0 3
7月 8月 9月 10月
5 1 4 -1
11月 12月 翌1月 翌2月
2 4 0 3

これは、各月1日の前日の曜日が大晦日の曜日と比べて何日分後ろにズレているかをまとめたものです。つまりm月d日の曜日は大晦日の曜日+ズレ日数日と言えますね。

余り+[7の整数倍])-(4で割った商×2)+ズレ日数

【2019年2月11日】←「2018年の翌2月」であることに注意
 18 →「42

 (2+[7])-(4×2)+3+11 = 15
 → 7 で割った余りは 1(月曜日)

でも、このズレ日数を知るためには表を見なければなりません。「道具に頼らない」のが目的ですが、これを暗記するのはチョット面倒そう。計算で求める方法もあるにはありますが、「パターン記憶」を利用する方法がカンタンかもしれません。

上の「パターンを見る」ボタンを押してみてください。10月の「-1」から始まってチェック柄状に 1 ずつ増えながら「0」「1」「2」…と並んでることがお分かりいただけるかと思います。最後の「4」「5」だけやや変則的ですが、これならギリ自力で表を思い出せるのではないでしょうか。

ところで、どうして3月~「翌2月」なのでしょう。1月と2月だけは前の年からみた翌年という扱いになってますよね。その理由は、平年とうるう年で2月の日数が違うためです。1月1日や2月1日から見ると、その直後の3月1日以降では曜日のズレ方に1日分の誤差が生じてしまうのでそれを回避しているってわけなんです。

【オマケ】m月のズレ日数を計算で求める方法
(翌1,翌2月 は 13, 14月 または 5, 6月 として計算してね)

\left\lfloor\frac{26(m+1)}{10}\right\rfloor-1

または

3(m\pm4)~\mathrm{mod}~8+4
 ただし4月はさらに+1します

これらはちょうど、ボツ案2とボツ案3に出てきた式ですね。

20xx年以外の12月31日

西暦の上2桁を4で割った余りによって、最後に[追加] を足してあげるだけ。それ以外は 20xx年 の時とやり方は変わりません。

余り
[追加]

余り+[7の整数倍])-4で割った商×2 +[追加]

【1957年12月31日】
 19 → 余り3 → [1]
 57 →「141

 (1+[28])-(14×2) +[1] = 2
 → 2(火曜日)

実用的には1900年代と2000年代が分かれば十分と思いますので、わざわざこの表を覚える必要もなく、「1900年代のときだけ+1する」と覚えておけば問題ないでしょう。

ちなみに紀元前 Y 年は、400 の倍数から Y-1 を引いたものを年とすればOKです。とはいえ、こちらも実用面であまり意味はないかも。。(;・∀・)

最後に

多少の練習は必要ですが、この方法に慣れれば超速で目的の曜日が分かるようになると思います。もっとお手軽な方法がありましたら是非教えてくださいませ!

もっとも、これだけスマホタブレットなどが普及している現在、それが出来たからといって宴会芸くらいしか使い道ないのですが、頭の体操や知的好奇心を満たすにはちょうどよいネタかなということで。(*´ω`*)

使用素材

毒ワインとソムリエのジレンマ

はじめに

ライアーゲームを見ながら、私もゲーム(論理パズル)を創作してみました。

とはいっても、マネーの奪い合いでもなければ、問題文にない条件や設定を持ち込むような意地悪クイズでもありません。論理的にお考えいただければ幸いです。

宜しければ挑戦してみて下さいね(*´ω`*)

問題

f:id:m_arith:20180405164006j:plain

ある国の王様が、処刑予定となっている4人の囚人を集めてこう言いました。

「お前達の中に1人ソムリエがいるそうだな。そこで、こんなゲームを思いついた。見事勝ち残ることができた者は処刑を免除し、負けた者はそれをもって処刑とする。では、ルールを説明しよう。これより1人ずつ順番に処刑場へ連行する。その途中、ワイン蔵に立ち寄らせるので、自分以外の3人に飲ませたいワインを3つのグラスに注いで処刑場まで運んでもらう。そこには4種類のワインとそれぞれのワイン専用のグラスが用意されている。 全てのワインとグラスに1番から4番のいずれかの刻印があり、同じ番号同士なら専用ということだ。言うまでもないが専用ではないグラスにワインを注ぐことを禁止する。どの番号も必ず1種類のワインと4個以上のグラスに刻印されており、4種類中1種類に致死性の高い毒を入れさせてもらった。ちなみに蔵を1人出るたび、ワインやグラスの配置を整え並び替える。割ったり傷つけたりは即刻処刑だ。そして処刑場に全員揃ったら3人から1杯ずつ受け取り、3杯全て飲み干さない者も処刑する。それでは準備が整うまで、連行する順番を相談する時間を与えてやろう。」

さて、ソムリエには飲まなくても毒ワインを見抜く能力があり、それ以外の3人にはワインの知識すらありません。囚人達は「自分が助かる確率が少しでも上がることを最優先し、そのときに限り協力しあう」ものとして最善策をお考え下さい。

最善策への道


使用素材

エイプリルフールの由来のウソ?

今年のウソは?

4月1日といえば、エイプリルフールですね。近年では大手企業が会社をあげてこのイベントに乗っかり、世界中を楽しませてくれます。

私が密かに楽しみにしているのは、google日本語入力チームのウソ発表。

さて、この4月1日にウソをつくという習慣は一体いつから始まったのでしょうか。検索してみると様々な説が出てきたので、「もしかしたらこれもウソかも?」とつい懐疑的になってしまいました(>_<)。一つずつ見ていきましょう。

インド説

インドの僧侶が厳しい悟りの修行を終えて4月1日に普通の生活に戻った途端、再び迷いが生じてしまうことを揶揄したのが始まりという説。 そのため4月1日のことを「揶揄節」と呼ぶようになったそうなのですが、この話だけではウソをついてよいという話でもなさそうで関連性が見えてきませんね。強引に解釈するなら、それまでの修行がまるでウソだったようなところから来てるのかし(´・_・`)

聖書説

ノアの方舟の話で、水が引いたことを確認するためにハトを飛ばしたものの無収穫で戻ってきた日が4月1日だったことから「無駄足を踏まされる日」という説。確かに聖書の創世記8章8~9節にそういうシーンはありますが、日付の記述はありませんので4月1日とされた由来も気になります。それより、もしもこれを起源とした場合「ノアがハトにウソをついて無駄足させた」と相当歪んだ解釈になってしまいそう。キリスト教的に大丈夫なんでしょうか。そうそう、直前の創世記8章7節でハトより前に飛ばされてウロウロしたカラスのことも忘れないであげてください(。>﹏<。)

イギリス説

これはエイプリルフールの起源ではなく、エイプリルフールの有効期間は午前中だけ(午後にはネタバラシする)というイギリスの習慣の元ネタ(の一説)のようです。イギリスには、チャールズ2世によって1660年に王政復古されたことを祝う記念祭「Oak Apple Day」というのがあるそうで、もちろんエイプリルフールとは関係ない5月29日なのですが、その日は午前中だけオークアップルを身につけ王への忠誠を示すのだとか。

古代ローマ

古代ローマで行われていた身分階級を逆にする「さかさま祭り」から「ウソと本当も逆転」させるようになったとする説。もう少し調べてみたところ古代ローマ帝国では貴族や商人達が毎晩のように「ケーナ」と呼ばれる祝宴を開催していて、その余興でドンチャン騒ぎをする習慣があったそうです。祝祭の季節に行われる余興がさかさま祭りで、無礼講と称して身分階級を反対にする遊びで盛り上がったのだとか。恐らく古代ローマの祝祭は当時の新年つまり春分と思われますから、時期的にも説としての合理性はあるように思います。

フランス説その1

フランスの人々はこの日、魚を形どった紙や絵などを人の背中にこっそり貼り付けるドッキリを仕掛けるそうです。まんまと魚を貼られてしまった人のことを「Poisson d'avril(四月の魚)」と呼ぶというちょっとよくわからない風習なのですが、4月になるとサバがよく釣れるらしく、なんなら餌をつけてなくても釣れてしまうことから引っかかった人のことをそう呼ぶのだとか。うーん、たまたま日付が同じってだけで、エイプリルフールとは別のイベントのような気がしなくもないですね。

フランス説その2

これについては wikipedia 先生が詳しかったので引用してみます。

その昔、ヨーロッパでは3月25日を新年とし、4月1日まで春の祭りを開催していたが1564年にフランスのシャルル9世が1月1日を新年とする暦を採用した。これに反発した人々が、4月1日を「嘘の新年」とし、馬鹿騒ぎをはじめた(これ以降は嘘の起源と思われる)。

しかし、シャルル9世はこの事態に対して非常に憤慨し、町で「嘘の新年」を祝っていた人々を逮捕し、片っ端から処刑してしまう。処刑された人々の中には、まだ13歳だった少女までもが含まれていた。フランスの人々は、この事件に非常にショックを受け、フランス王への抗議と、この事件を忘れないために、その後も毎年4月1日になると盛大に「嘘の新年」を祝うようになっていった。これがエイプリルフールの始まりである。

そして13歳という若さで処刑された少女への哀悼の意を表して、1564年から13年ごとに「嘘の嘘の新年」を祝い、その日を一日中全く嘘をついてはいけない日とするという風習も生まれた。その後、エイプリルフールは世界中に広まり、ポピュラーとなったが、「嘘の嘘の新年」は次第に人々の記憶から消えていった。

1月1日を新年とする暦ってなんだろうと思って調べてみたのですが、フランスでは

と暦が変遷していることがわかりました。少し脱線しますが紐解くには非常に重要なポイントですので、これらの経緯について見ていきましょう。

このユリウス暦というのは、かのユリウス・カエサル(ジュリアス・シーザー)皇帝が実施したといわれる暦です。紀元前に作られたとは思えないほど非常に正確な暦で、ヨーロッパでは千年以上の長きに渡って使われてきました。上の変遷リストをみての通り、1582年の時点でも誤差は10日というオドロキの正確さ(@_@。

ただ、春分秋分夏至冬至といった太陽の運行に関する日がそれほどまでズレてしまうとさすがに宗教行事にも影響が出てしまいます。そろそろなんとかしようってことから1579年、時のローマ教皇グレゴリウス13世が学者などを集めて新しい暦の研究委員会を発足させました。これが現在世界中で使われているグレゴリオ暦です。

フランス革命暦というのは、市民の力によって王政を廃止(フランス革命)した際に作った革命政府が、カトリック色の強いグレゴリオ暦に反発して制定したものです。ところがたった十数年で「やっぱ王様欲しい!」ってことで国民投票でナポレオンが皇帝になり、カトリックとの和解の意味も込めて暦も元のグレゴリオ暦に戻すという冗談みたいな話がホントにありました。

さて、そろそろ話を戻します。フランスのシャルル9世が1564年に採用した暦とは、一体何だったのでしょうか。一説によればそれがグレゴリオ暦だという話ですが、シャルル9世はグレゴリオ暦が研究される以前の1574年にこの世を去っています。

しかも、いかにも横暴残虐な暴君かのような印象を受けますが、1564年の4月時点でシャルル9世は13歳、処刑されたという少女と同じです。幼少の頃に結核にかかり、10歳で王に即位したものの実権は母に握られ、その母が黒幕と噂されるカトリックの大虐殺によって父以上に慕っていた提督を殺され、24歳を目前にしてこの世を去った悲劇の王だったことも分かりました(;´Д`)

諸々考察してみると、この説は何らかの事実に基づいているのかもしれないけれど、エイプリルフールの由来としてはちょっと盛りすぎかな?という印象です。そもそも春分の日と1月1日のどちらをもって新年とするかも、暦を変える話ではなく日付を変えるって話ですしね。

まとめ

エイプリルフールの「フール」とは直訳するなら「バカな人」。ウソに騙された人を揶揄する言葉なのだそうです。ネガティブな印象を受けたのは私だけでしょうか。

むしろ最初に紹介させていただいた動画のように、あからさまなウソに対して全力になれる「いい意味でのバカ」という賛辞の意味でポジティブ解釈をしたいな、と私は思いました。(*´ω`*)

使用素材

abcjs でサイト上に楽譜を♪

Webで簡易作曲

Webサイト上に楽譜を書いたりそれを演奏できたりする abcjs というのを試してみたところ、なかなかよくできていたので紹介したいと思います。

abcjs は、米国バージニア州の Paul Rosen さんという方が GitHub で公開されている javascript のライブラリ。楽曲の譜面情報を文字列で書き表すための「ABC記譜法」というのがありまして、そのルールで書かれた内容を元に楽譜を自動生成してくれるスグレモノです。

MathJax を使ったことのある方なら、あれの楽譜版みたいなもの、といえばスゴさがお分かりいただけるかも? なにはともあれ、使ってみましょう。

abcjs はこんな感じ

↓このABC記譜テキストを編集すると下の楽譜に反映されます。
 
↑演奏バーもつけられるのですが、スマホだと完全に表示されるまでに時間がかかるのと、再生ボタンを押してもすぐには演奏が始まらない時があります(T_T) FirefoxChrome 系の最新ブラウザでは再生確認できましたが、IE11 は NG のようです。
 
 

はじめの一歩

まずは コチラ からダウンロード。「abcjs-midi.css」と「bin/abcjs_midi_5.x.x-min.js」があればとりま十分ですので、それを Web サーバ上に配置したら

<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="(配置先)/abcjs-midi.css" media="all" type="text/css" />
<script type="text/javascript" src="(配置先)/abcjs_midi_5.x.x-min.js"></script>

こんな感じのを HTML 内に書けば準備完了です。色んな使い方があるみたいなので、詳しいことは ドキュメントabcjs configulator 等を参照していただくとしまして、単純に先程御覧頂いたようなことがやりたいだけなら

new ABCJS.Editor(
    'editor', {                    // テキストエリアの DOM の ID
        'paper_id': 'paper',    // 楽譜を書かせたい DOM の ID
        'generate_midi': true,
        'midi_id': 'midi',     // 演奏UIを置く DOM の ID
        'generate_warnings': true,
        'warnings_id': 'warnings'  // エラー情報を表示したい DOM の ID
    }
);

こんな javascript を書くだけでできちゃいます。

ABC記譜法については「The abc music standard 2.1」や、まりんきょ さんの翻訳による「abc 記譜法」に詳しく書かれていますので参考にどうぞ!

9×9=?

九九をド忘れ

小学生の頃、掛け算の九九を覚えさせられましたよね。でも、もし催眠術かなにかで九九をド忘れしてしまった時に 9\times9 はいくつ?って聞かれたらどうしましょう。

掛け算ですから、地道に 99 回足し合わせればよさそうです。

\begin{align}9+9+9+9+9+9+9+9+9=81\end{align}

ただ何度も足すのはちょっと手間ですし、計算の回数が多くなると途中でミスをする可能性も高くなります。もっと神ワザ的な方法はないものでしょうか。

そこで紹介したいのが、私流の暗算法「イメージ算」です。

9\times9 を暗算してみた

某パズルゲームを連想するかもしれませんが、青色のマスの変遷に注目。

f:id:m_arith:20180326224227p:plain

f:id:m_arith:20180326224232p:plain

f:id:m_arith:20180326224235p:plain

このような流れをイメージすることにより、9\times98\times10+1 に置き換えられることが分かります。さすがにこの形になれば 81 って一目瞭然(*´ω`*)

…とはいっても、「九九だけを都合よくド忘れする」なんてことがありえませんし、わざわざこのようにイメージする必要性を感じませんよね。

ところが、実はこれを応用すると次のような計算で威力を発揮するんです。

991\times994 を暗算してみた

では先ほどの 9\times9 と同じ要領で 991\times994 を計算してみましょう。もう催眠術は解けましたので、九九を使ってよいですよ(*´ω`*)

f:id:m_arith:20180326232934p:plain

まずは右端の溝の幅が 1000-994=6 であることに注目します。
先程同様、この溝にピッタリはまる大きさに上部を削り取り、

\begin{align}991\times994=&(985+6)\times994\\=&(985\times994)+(6\times994)\end{align}

削り取った (6\times994) の部分を持ち上げて回転させ、溝に落とすと…

f:id:m_arith:20180326232939p:plain

\begin{align}991\times994=&985\times1000+(994-985)\times6\\=&985000+54\\=&985054\end{align}

このようにラクラク計算できてしまいます。計算式だけ見るとなんのこっちゃかもですが、イメージの流れを頭に描くといつの間にかこの式が出てきて答えがわかってしまう、そんな所に「イメージ算」のスゴさを感じていただけたら幸いです。

結論

式で書くとかえって分かりにくいかもですが、イメージ算の内容を分析してみると

\begin{align}A\times B=(N-((N-A)+(N-B)))\times N~+~(N-A)\times(N-B)\end{align}

という計算を視覚的に行っていたことが分かります。

この N10100 などの掛け算しやすい数がよく、もちろん 2020050500 などでもよいでしょう。但し、(N-A)\times(N-B) が簡単なほど計算の手間が省けますので、その条件に合わせられるときこそオススメの計算法と言えそうです。

少し工夫してあげれば、N 進数の計算や異なる基数への変換にも応用できますので、興味のある方は試行錯誤してみてくださいね。

というわけで、計算式とにらめっこだけではなく、視覚的なイメージを描いてみるとその本質や意外な近道を発見できるかも知れませんよ、というお話でした!

三次方程式の解の公式

※この記事は表示に時間がかかる場合があります。

結論

わたしのかんがえたさいきょうの

ax^3+bx^2+cx+d=0~の解

\displaystyle x=\frac{-b+\omega^N\sqrt[3]{t+\sqrt{u}}+\omega^{2N}\sqrt[3]{t-\sqrt{u}}}{3a}

 t=\frac{9a\left(bc-3ad\right)}{2}-b^3,~u=t^2-\left(b^2-3ac\right)^3

\omega~は~1~の三乗根、N~は任意の整数。

ちなみに、x^3+ax+b=0~の解は

\displaystyle x=\omega^N\sqrt[3]{\frac{-b+\sqrt{b^2-4(-a/3)^3}}2}+\omega^{2N}\sqrt[3]{\frac{-b-\sqrt{b^2-4(-a/3)^3}}2}

\displaystyle もし、~b=pq~かつ~a=-(p^2+q)~となる~p,q~が見つかるなら

\displaystyle x=p、\frac{-p\pm\sqrt{p^2+4q}}2

Fine||

唐突な書き出しでゴメンナサイ。「自己流で解の公式を求めてみた」というお題にて書いていたところ、ひたすら数式がならぶだけの超ツマンナイ記事になってしまったため、論文アレルギーの方への配慮で結論から先に書かせて頂きました。

とゆーわけで、ここから先は「数式ウェルカム♡」という物好きさんだけどうぞ!

解の公式の一般形予想

1n次方程式の N 番目の解を表す解の公式の一般形を、n 個の解の対称性により\begin{align}x=\sum_{m=-\infty}^{\infty}s'_m\left(e^{2i\pi\cdot\frac{N}{n}}\right)^m\end{align}と予想しました。これは原始n乗根の無限級数和をイメージしたもので、\begin{align}\tag{S}\label{S}x=\sum_{m=0}^{n-1}s_m\cdot e^{2i\pi\cdot\frac{mN}{n}}\end{align}へと集約することが可能です。ここで、1n次方程式の一般形\begin{align}\sum_{p=0}^na_px^{n-p}=0 (a_0\neq0)\end{align}の両辺をa_0で割った\begin{align}\sum_{p=0}^n\frac{a_p}{a_0}x^{n-p}=0\end{align}を A_p=\frac{a_p}{a_0} で置換すると(A_0=\frac{a_0}{a_0}=1)\begin{align}\tag{1}\label{1}\sum_{p=0}^nA_px^{n-p}=0\end{align}になるため、\eqref{S}を解に持つ\begin{align}\tag{2}\label{2}\prod_{N=0}^{n-1}\left(x-\sum_{m=0}^{n-1}s_m\cdot e^{2i\pi\cdot\frac{mN}{n}}\right)=0\end{align}を展開し、\eqref{1}\eqref{2} の係数比較で各 s_kA_p で表すことにします。

※ちなみにこの予想を立てた当初はまだ 1 の原始n乗根と指数関数の等式を見出しておらず、
e^{2i\pi\cdot\frac{N}{n}} ではなく独自に創作した \mathbb{P}^{\frac{N}{n}}\left(=\cos{\frac{2N\pi}{n}}+i\sin{\frac{2N\pi}{n}}\right) を用いていました。

n=1 の場合(1 次方程式)

\tag{1.1}\label{1.1}x+A_1=0

\tag{1.2}\label{1.2}(x-s_0)=0

\eqref{1.1}\eqref{1.2}より

A_1=-s_0

\tag{1.a}\label{1.a}s_0=-A_1

\eqref{1.2}\eqref{1.a}より

\tag{1.S}\label{1.S}x=-A_1

\therefore ax+b=0 の解の公式は

\displaystyle x=-\frac{b}{a}

n=2 の場合(2 次方程式)

\tag{2.1}\label{2.1}x^2+A_1x+A_2=0

\tag{2.2}\label{2.2}(x-(s_0+s_1))(x-(s_0-s_1))=0

\tag{2.2'}\label{2.2'}x^2+(-2s_0)x+(s_0^2-s_1^2)=0

\eqref{2.1}\eqref{2.2'}より

\begin{align}A_1&=-2s_0\\A_2&=s_0^2-s_1^2\end{align}\begin{align}\tag{2.a}\label{2.a}s_0&=-\frac{A_1}{2}\\s_1^2&=\left(-\frac{A_1}{2}\right)^2-A_2\\\tag{2.b}\label{2.b}s_1&=\pm\sqrt{\left(-\frac{A_1}{2}\right)^2-A_2}\end{align}

\eqref{2.2}\eqref{2.a}\eqref{2.b}より

\tag{2.S}\label{2.S}\displaystyle x=-\frac{A_1}{2}\pm\sqrt{\left(-\frac{A_1}{2}\right)^2-A_2}

\therefore ax^2+bx+c=0 の解の公式は

\begin{align}x&=-\frac{b}{2a}\pm\sqrt{\left(-\frac{b}{2a}\right)^2-\frac{c}{a}}\\&=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\end{align}

n=3 の場合(3 次方程式)

\tag{3.1}\label{3.1}x^3+A_1x^2+A_2x+A_3=0

\tag{3.2}\label{3.2}(x-(s_0+s_1+s_2))(x-(s_0+s_1\omega+s_2\omega^2)(x-(s_0+s_1\omega^2+s_2\omega))=0

\tag{3.2'}\label{3.2'}x^3+(-3s_0)x^2+3(s_0^2-s_1s_2)x+(3s_0s_1s_2-s_0^3-s_1^3-s_2^3)=0

便宜上、1 の原始3乗根を \omega~(=\frac{-1\pm\sqrt{3}i}{2}) と表記します。

\eqref{3.1}\eqref{3.2'}より

\begin{align}A_1&=-3s_0\\A_2&=3(s_0^2-s_1s_2)\\A_3&=3s_0s_1s_2-s_0^3-s_1^3-s_2^3\end{align}\begin{align}\tag{3.a}\label{3.a}s_0&=-\frac{A_1}{3}\\\tag{3.b}\label{3.b}s_1s_2&=\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\\s_1^3+s_2^3&=3\left(-\frac{A_1}{3}\right)\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)-\left(-\frac{A_1}{3}\right)^3-A_3\\&=3\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{3}-\left(-\frac{A_1}{3}\right)^3-A_3\\\tag{3.c}\label{3.c}&=2\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{3}-A_3\end{align}

ここで、s_1^3s_2^3 を解に持つ二次方程式を考えます。

(X-s_1^3)(X-s_2^3)=0

X^2-(s_1^3+s_2^3)+s_1^3s_2^3=0

\eqref{2.S}より

\begin{align}X&=-\frac{-(s_1^3+s_2^3)}{2}\pm\sqrt{\left(-\frac{-(s_1^3+s_2^3)}{2}\right)^2-s_1^3s_2^3}\\&=\frac{s_1^3+s_2^3}{2}\pm\sqrt{\left(\frac{s_1^3+s_2^3}{2}\right)^2-(s_1s_2)^3}\end{align}

\eqref{3.b}\eqref{3.c}を代入

\displaystyle X=\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\pm\sqrt{\left(\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\right)^2-\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)^3}

s_1^3s_2^3s_1s_2 をそれぞれ三乗して得たものですので、X の三乗根の主値より

\begin{align}\tag{3.d}\label{3.d}s_1=\sqrt[3]{\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}+\sqrt{\left(\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\right)^2-\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)^3}}\\\tag{3.d'}\label{3.d'}s_2=\sqrt[3]{\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}-\sqrt{\left(\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\right)^2-\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)^3}} \end{align}

とすることができます。(冪根の対称性により、s_1s_2 は逆でも構いません。)

\eqref{3.2}\eqref{3.a}\eqref{3.d}\eqref{3.d'}より任意の整数 N を用いて

\begin{align}x=&-\frac{A_1}{3}\\&+\omega^N\sqrt[3]{\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}+\sqrt{\left(\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\right)^2-\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)^3}}\\\tag{3.S}\label{3.S}&+\omega^{2N}\sqrt[3]{\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}-\sqrt{\left(\left(-\frac{A_1}{3}\right)^3+\frac{A_1A_2}{6}-\frac{A_3}{2}\right)^2-\left(\left(-\frac{A_1}{3}\right)^2-\frac{A_2}{3}\right)^3}}\end{align}

\therefore ax^3+bx^2+cx+d=0 の解の公式は

\begin{align}x=&-\frac{b}{3a}\\&+\omega^N\sqrt[3]{\left(-\frac{b}{3a}\right)^3+\frac{bc}{6a^2}-\frac{d}{2a}+\sqrt{\left(\left(-\frac{b}{3a}\right)^3+\frac{bc}{6a^2}-\frac{d}{2a}\right)^2-\left(\left(-\frac{b}{3a}\right)^2-\frac{c}{3a}\right)^3}}\\&+\omega^{2N}\sqrt[3]{\left(-\frac{b}{3a}\right)^3+\frac{bc}{6a^2}-\frac{d}{2a}-\sqrt{\left(\left(-\frac{b}{3a}\right)^3+\frac{bc}{6a^2}-\frac{d}{2a}\right)^2-\left(\left(-\frac{b}{3a}\right)^2-\frac{c}{3a}\right)^3}}\\=&-\frac{b}{3a}\\&+\omega^N\cdot\frac{1}{3a}\sqrt[3]{\frac{9a(bc-3ad)}{2}-b^3+\sqrt{\left(\frac{9a(bc-3ad)}{2}-b^3\right)^2-(b^2-3ac)^3}}\\&+\omega^{2N}\cdot\frac{1}{3a}\sqrt[3]{\frac{9a(bc-3ad)}{2}-b^3-\sqrt{\left(\frac{9a(bc-3ad)}{2}-b^3\right)^2-(b^2-3ac)^3}}\end{align}

t=\frac{9a(bc-3ad)}{2}-b^3u=t^2-(b^2-3ac)^3 として書き改めて

\displaystyle x=\frac{-b+\omega^N\sqrt[3]{t+\sqrt{u}}+\omega^{2N}\sqrt[3]{t-\sqrt{u}}}{3a}

n=4 の場合(4 次方程式)

\tag{4.1}\label{4.1}x^4+A_1x^3+A_2x^2+A_3x+A_4=0

\tag{4.2}\label{4.2}(x-(s_0+s_1+s_2+s_3))(x-(s_0+s_1i-s_2-s_3i))(x-(s_0-s_1+s_2-s_3))(x-(s_0-s_1i-s_2+s_3i))=0

\tag{4.2'}\label{4.2'}x^4+(-4s_0)x^3+2(3s_0^2-s_2^2-2s_1s_3)x^2+4(2s_0s_1s_3-s_0^3+s_0s_2^2-s_1^2s_2-s_2s_3^2)x+(s_0^4-s_1^4+s_2^4-s_3^4-2 s_0^2s_2^2+2s_1^2 s_3^2-4s_0^2s_1 s_3+4s_0s_1^2s_2+4s_0s_2s_3^2-4s_1s_2^2s_3)=0

\eqref{4.1}\eqref{4.2'}より

\begin{align}A_1&=-4s_0\\A_2&=2(3s_0^2-s_2^2-2s_1s_3)\\A_3&=4(2s_0s_1s_3-s_0^3+s_0s_2^2-s_1^2s_2-s_2s_3^2)\\A_4&=s_0^4-s_1^4+s_2^4-s_3^4-2s_0^2s_2^2+2s_1^2s_3^2-4s_0^2s_1s_3+4s_0s_1^2s_2+4s_0s_2s_3^2-4s_1s_2^2s_3\\&=s_0^4-s_1^4+s_2^4+4s_2^4-4s_2^4-s_3^4-2s_0^2s_2^2+4s_1^2s_3^2-2s_1^2s_3^2-4s_0^2s_1s_3+4s_0s_1^2s_2+4s_0s_2s_3^2+4s_1s_2^2s_3-8s_1s_2^2s_3\\&=4s_2^4-4s_2^4-8s_1s_2^2s_3+s_0^4+s_2^4+4s_1^2s_3^2+4s_1s_2^2s_3-2s_0^2s_2^2-4s_0^2s_1s_3+4s_0s_1^2s_2+4s_0s_2s_3^2-s_1^4-s_3^4-2s_1^2s_3^2\\&=4s_2^4-(4s_2^4+8s_1s_2^2s_3)+s_0^4+(s_2^4+4s_1^2s_3^2+4s_1s_2^2s_3)-(2s_0^2s_2^2+4s_0^2s_1s_3)+(4s_0s_1^2s_2+4s_0s_2s_3^2)-(s_1^4+s_3^4+2s_1^2s_3^2)\\&=4s_2^4-4s_2^2(s_2^2+2s_1s_3)+s_0^4+(s_2^2+2s_1s_3)^2-2s_0^2(s_2^2+2s_1s_3)+4s_0s_2(s_1^2+s_3^2)-(s_1^2+s_3^2)^2\end{align}
\begin{align}\tag{4.a}\label{4.a}s_0&=-\frac{A_1}{4}\\s_2^2+2s_1s_3&=3\left(-\frac{A_1}{4}\right)^2-\frac{A_2}{2}\\&=\frac{3A_1^2-8A_2}{16}\\s_2(s_1^2+s_3^2)&=-s_0^3+s_0(s_2^2+2s_1s_3)-\frac{A_3}{4}\\&=-\left(-\frac{A_1}{4}\right)^3+\left(-\frac{A_1}{4}\right)\left(3\left(-\frac{A_1}{4}\right)^2-\frac{A_2}{2}\right)-\frac{A_3}{4}\\&=2\left(-\frac{A_1}{4}\right)^3+\frac{A_1A_2}{8}-\frac{A_3}{4}\\&=\frac{-A_1^3+4A_1A_2-8A_3}{32}\end{align}
\begin{align}4s_2^6-4(s_2^2+2s_1s_3)s_2^4+(s_0^4+(s_2^2+2s_1s_3)^2-2s_0^2(s_2^2+2s_1s_3)+4s_0s_2(s_1^2+s_3^2)-A_4)s_2^2-s_2^2(s_1^2+s_3^2)^2=0\end{align}

p=s_0q=s_2^2+2s_1s_3r=s_2(s_1^2+s_3^2) とおき、

\begin{align}4s_2^6-4qs_2^4+(p^4+q^2-2p^2q+4pr-A_4)s_2^2-r^2=0\end{align}

s_2^23 次方程式とみなして s_2 を求め、

[s_2\neq0 だったら]
s_1^2s_3^2 を解とする 2 次方程式から s_1s_3 を導出します。

[s_2=0 だったら]

\begin{align}s_1s_3&=\frac{3A_1^2-8A_2}{32}\\s_1^4+s_3^4&=s_0^4+2s_1^2s_3^2-4s_0^2s_1s_3-A_4\\&= \left(-\frac{A_1}{4}\right)^4+2\left(\frac{3A_1^2-8A_2}{32}\right)^2-4\left(-\frac{A_1}{4}\right)^2\left(\frac{3A_1^2-8A_2}{32}\right)-A_4\end{align}

ですので、 s_1^4s_3^4 を解に持つ 2 次方程式から s_1s_3 を導出します。

あとは当て嵌めるだけで完成なのですが…

Hanc marginis exiguitas non caperet.
(この余白はそれを書くには狭すぎる)

D.C.||

抜けてるようで抜けてない話

こんな計算をご存知でしょうか?

12345679\times9=111111111

この式に初めて出会った時、私は 1 から 9 の数字と 1 が並んでいることに数の神秘を感じました。でも、よーくみるとなんだか違和感。そう、8 が抜けてるんです。

うわー、惜しい! かといって試しに 8 を入れて 123456789\times9 を計算してみると 1111111101 で、今度は 0 がジャマ。。゚(゚´Д`゚)゚。

でも待って。ここで私は「抜けてるようで実は抜けてない説」に気付きました!
どゆことかと言いますと、「12345679」を桁ごとに間をあけて書くとホントは「1~2~3~4~5~6~7~8.9~10」なんじゃないかなって思ったんです。

筆算を思い出していただき、一番下の桁から繰り上がりをしていくと

1~2~3~4~5~6~7~8.9~10」からの~
1~2~3~4~5~6~7~8.10~0」からの~
1~2~3~4~5~6~7~9.0~0

ホラ、同じじゃないですか(`ー´) ドヤッ!

とはいえ、これだけではまだ意味がよく分からないので別アプローチで補強しましょう。

数字が順番に並ぶ計算は他にも「1\div9801=1\div99\div99=0.00010203\dots」というのがあります。小数点以下に 00 から 99 までの二桁の数が並び、以降は再び 00 へ戻ってループ…なのですが、なんとこちらも 98 が抜けてるという共通点。

1\div998001=1\div999\div999=0.000001002003\dots」もやっぱり同様で、000 から 999 までの三桁の数が並ぶものの 998 が抜けています。

実はこれらも「抜けてるようで抜けてない説」なんです。
例として、一番シンプルな 1\div81=1\div9\div9 で検証してみますね。

\begin{align*} \left(1\div9\right)\div9&=\left(0.111\dots\right)\div9\\&=\left(0.1+0.01+0.001+\dots\right)\div9\\&=0.0111\dots+0.00111\dots+0.000111+\dots\\(&=0.0~1~2~3~4~5~6~7~8~9~10~11~12~\dots)\\&=0.0123456790123\dots \end{align*}

下から二段目のカッコ内は、繰り上げ前の筆算のように桁ごとの 1 の合計をならべて書いたものです。「抜けてるようで実は抜けてない」というのは「桁の繰り上がりによってあたかも抜けたように見える」というミラクル現象だったんですね!