mattyuuの数学ネタ集

世界は数式で溢れている

p進距離はなぜ特別か?

この記事は、日曜数学 Advent Calendar 2017 - Adventar 22日目の記事です。21日目は三重積さんの射影平面についての導入的な話 - すうがくなどについてのメモでした。

数学界隈のtwitterを見ていると「p進距離」、「p進数体」、「p進付値」とやたら[p進〜」という言葉を目にします。そこで今回は有理数{\mathbb Q}上の「p進距離」に注目します。「p進距離」は一見不思議な距離の定義ですが、オストロフスキーの定理 - Wikipediaを紹介、証明することで、通常の距離と同じくらい自然なものであるということを紹介することが目的です。言わずもがなですが、p素数です。つまり1つ1つの素数に対して、何か距離を定める規則が1つ決まると思ってください。

流れとしては下記となります。

  1. 距離とは何か
  2. 距離の例
  3. ノルムとは何か
  4. ノルムの例
  5. ノルムから距離の導出
  6. p進ノルムとp進距離
  7. オストロフスキーの定理とその証明

距離とは何か

数学は同じ概念を持つ対象から、それらが持っている性質の本質(エッセンス)を抽出し、逆にその本質をもって概念を定義し直します。距離という概念に対しても日常生活で使用しているユークリッド距離以外に、マハラノビス距離、ハミング距離など対象や用途によって様々な距離があります。

これらの距離の性質から本質を取り出し、距離を数学的に定義すると下記のようになります。

<距離の定義>
空でない集合Xに対して、X\times Xから\mathbb{R}_{\geq0}への写像dが、次の1)〜3)を満たすとき、dを集合X上の距離関数と呼び、集合Xの2点xyの距離をd(x,y)で定義する。
1) {}^\forall x,y \in Xに対して、「d(x,y)=0 \iff x=y」が成り立つ。
(同一の点間の距離は0だし、2点間の距離が0ならその2点の距離は0という当たり前のこと。)

2) {}^\forall x,y \in Xに対して、「d(x,y)=d(y,x)」が成り立つ。
(xyの距離はyxの距離と等しいという当たり前のこと。)

3) {}^\forall x,y,z \in Xに対して、「d(x,z)\leq d(x,y) + d(y,z)」が成り立つ。
(xからzへ行きたい時、どこか別の点yを経由すると歩く距離が長くなってしまうという当たり前のこと。)

逆にどんな関数でも、この条件を満たせば距離関数と呼んでよく、距離関数によって集合上に距離が定まることになります。

なお、空でない任意の集合Xに対して、距離関数d_0を、
\displaystyle
  d_0(x,y) = \begin{cases}
    0 & (x=y) \\
    1 & (x\neq y)
  \end{cases}
で定義すると、これは明らかに距離関数の条件を全て満たします。
この距離関数によって定まる距離を自明な距離と呼びます。

また、2つの距離関数d_1d_2に対して、「\lim_{n\rightarrow \infty }d_1(x_n,x) = 0 \iff \lim_{n\rightarrow \infty }d_2(x_n,x) = 0」が成り立つとき、2つの距離は同じ位相構造を定めると言います*1

今回のテーマのp進距離は有理数\mathbb Q上の距離関数d_pで定義される距離です。その具体的な関数の形はまた後で見ていきます。

距離の例

例えば、次の3つの関数はいずれも{\mathbb R}^2上の距離関数になります。

\displaystyle
\begin{cases}
 d^{(2)}( (x_1,y_1),(x_2,y_2) ) = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2} \\
\\
 d^{(1)}( (x_1,y_1),(x_2,y_2) ) = |x_1-x_2|+|y_1-y_2| \\
\\
 d^{(0)}( (x_1,y_1),(x_2,y_2) ) = \max\{ |x_1-x_2|,|y_1-y_2|\} \\
 \end{cases}

距離関数の条件を満たすことは実際に計算することでわかります。
これらの距離関数がどのような距離を定めているかは、図示するとわかりやすいです。

中学、高校では平面上の2点の距離(つまり、線分の長さ)はd^{(2)}から定まるユークリッド距離で計算しますが、数学的にはd^{(1)}d^{(0)}のような通常とは異なる距離も立派な距離になります。図示するとわかりますが、d^{(2)}d^{(1)}d^{(0)}は同じ位相構造を定めます*2

ノルムとは何か

ノルムは通常ベクトル空間に対して定義されますが、有理数体などの体は、自分自身の体の上のベクトル空間と見なせます。本記事で扱うノルムは有理数体上のものに限られるため、ノルムの定義は最初から体上に定義する形で与えます。

ノルムは中学校で習った絶対値(|\ast|)の一般化です。距離の性質から本質を取り出して、改めて数学的に距離を定義した時と同様に、絶対値で成り立っていた性質から本質的なものだけを取り出して、ノルムの定義としています。

<ノルムの定義>
Kに対して、Kから\mathbb{R}_{\geq0}への写像\varphiが、次の1)〜3)を満たすとき、\varphiを集合X上のノルムと呼ぶ。
1) x \in Kに対して「\varphi(x)=0 \iff x=0」が成り立つ。

2) {}^\forall x,y \in Kに対して、「\varphi(xy)=\varphi(x)\varphi(y)」が成り立つ。

3) {}^\forall x,y \in Kに対して、「\varphi(x+y)\leq \varphi(x) + \varphi(y)」が成り立つ。

(今後、\varphiがノルムのとき、\varphi(x)|x|の様に絶対値の記号を用いて書く。)

2つのノルム|\ast|_1|\ast|_2、及び\alpha > 0に対して任意のx \in K|x|_1=|x|_2^\alphaが成り立っている時、この2つのノルムは同値であるといいます *3

ノルムの例

距離の時と同様に、次で定義される|\ast|_0は明らかにノルムの条件を満たします。これを自明なノルムと呼びます。

\displaystyle
  |x|_0 = \begin{cases}
    0 & (x=0) \\
    1 & (x\neq 0)
  \end{cases}

また、中学校の時に習った絶対値も、当然有理数{\mathbb Q}上のノルムになっています。本記事ではこのノルムを、通常のノルムと呼び、|\ast|_\inftyで表します。

通常のノルム|\ast|_\inftyと、0<\alpha\leq1が与えられた時に、|\ast|_\infty^\alphaもノルムとなります。実際ノルムの条件1)、2)を満たすことは明らかです。
3)に関しても、

\displaystyle
\begin{split}
{|x+y|}^\alpha  & = {|x|}^\alpha{\left|1+\frac{y}{x}\right|}^\alpha \leq |x|^\alpha \left(1+\left|\frac{y}{x}\right|\right)^\alpha \\
& \leq {|x|}^\alpha  \left(1+{\left|\frac{y}{x}\right|}^\alpha\right) = {|x|}^\alpha + {|y|}^\alpha
\end{split}

となり、確かに3)も満たしていることがわかります。

ノルムから距離を構成できる

一般に体K上にノルム|\ast|が与えられているとき、x,y \in Kに対して、

\displaystyle
d(x,y)=|x-y|

と定義すると、これは距離関数の条件を満たすことが簡単に示せます。簡単に示せるわけは、距離関数の条件とノルムの条件はとても似通っており、元々ノルムは距離の一般化として生まれた概念だからだろうと思います。

自明なノルム|\ast|_0からは自明な距離が、通常のノルム|\ast|_\inftyからは通常使うユークリッド距離が導出されます。

先の例では|\ast|_\infty^\alphaもノルムとなっていましたが、|\ast|_\infty^\alphaからは明らかにユークリッド距離と同じ位相構造を定める距離が導出されます。一般に2つのノルムが同値であれば、そのノルムから導出される2つの距離は同じ位相構造を定めます。

「ノルムから導出される有理数体上の距離で、この2つとは違う位相構造を定めるものは他に何があるの?」「残りはp進距離(と同じ位相構造を定める距離)だけですよ。」というのが本記事で言いたいことです。

p進ノルムとp進距離

有理数体上にp進ノルムと呼ばれるノルムを定義します。

<{\mathbb Q}上のp進ノルムの定義>
p素数とし、{\mathbb Q}上のp進ノルム|\ast|_pを次式で定義する。
x\in {\mathbb Q}に対し、
|x|_p= \begin{cases}
    p^{-\nu_p(x)} & (x\neq 0) \\
    0 & (x=0)
  \end{cases}

ただし、\nu_p(x)xp^l\times \frac{a}{b}(lは整数、abpで割れない整数)と表したときの、lで定義します。(\nu_p(x)=l)

一見わかりにくいですが、例えば、

\displaystyle
{\left|\frac{68}{13}\right|}_2={\left|2^2\times\frac{17}{13}\right|}_2=2^{-2}

ですし、

\displaystyle
{\left|\frac{25}{54}\right|}_3={\left|3^{-3}\times\frac{25}{2}\right|}_3=3^{3}

となります。

このp進ノルムから構成される有理数体上の距離をp進距離といい、距離関数をd_pで表します。
\displaystyle
d_p(x,y)={|x-y|}_p

これは通常のユークリッド距離と同じ位相構造を定めません。
それが分かる1例として、22^22^32^4、、、という有理数体上の点列を考えるとこの点列は通常のユークリッド距離では明らかに収束せずに発散しますが、p=2とした2進距離では0との距離が、2^{-1}2^{-2}2^{-3}2^{-4}、、となるので、0に収束します。よってユークリッド距離とp進距離は同じ位相構造を定めません。p_1p_2が相異なる素数の時、p_1進距離とp_2進距離が同じ位相構造を定めないことも明らかでしょう。

オストロフスキーの定理とその証明

ざっと距離、ノルム、p進距離について記載しましたが、本記事で一番いいたいところ、

<オストロフスキーの定理>
有理数{\mathbb Q}上で互いに同値でないノルムは、自明なノルム、通常のノルム、p進ノルムに限られる。

同値なノルムから導出される距離は同じ位相構造を定めていました。オストロフスキーの定理から、ノルムから導出される有理数体上の距離は、同じ位相構造を定める距離にのみ注目すると、自明な距離、ユークリッド距離、p進距離の3種類しかないということが言えます。自明な距離と、私たちが通常使うユークリッド距離に並んで、p進距離が登場しています。よってp進距離は特別!!

では最後にオストロフスキーの定理を証明します。証明は、

整数論〈上〉 POD版

整数論〈上〉 POD版

に倣います。

<オストロフスキーの定理の証明>
\varphi{\mathbb Q}上の自明でないノルムとします。

次の2つは互いに排反であり、どちらかが必ず成り立っています。

  • 少なくとも1つの自然数a>1に対して、\varphi(a)>1 (任意のノルムに関して\varphi(1)=1を簡単に示せるので、1は除外しています。)
  • 任意の自然数nに対して\varphi(n)\leq 1

まず、前者だった場合を考えます。自然数nに対して
\displaystyle
\varphi(n)=\varphi(1+\cdots + 1) \leq \varphi(1) + \cdots \varphi(1) =n
つまり、\varphi(n)\leq nとなるので、\varphi(a)>1となる自然数aに対し、ある実数\alpha (0< \alpha \leq 1)が存在して、
\displaystyle
\varphi(a)=a^\alpha(> 1)
とおくことができます。

任意の自然数Nに対して、これをa進法で展開します(中学校で習った10進法で表されている整数を2進法で表すやり方と全く同じです。)。
\displaystyle
N=x_0+x_1a+\cdots + x_{k-1}a^{k-1}
ただし、0\leq x_i\leq a-1かつ、x_{k-1}\geq 1とします。これはNa進法で[x_{k-1}x_{k-2}\cdots x_1x_0]_aと表せることを意味します。
また、Na進法でk桁の数ということで、
\displaystyle
a^{k-1}\leq N < a^k
が成り立っていることもわかります。(というよりこれが成り立つようにkを決めています。)

ノルムの性質から、
\displaystyle
\begin{split}
\varphi(N)  & \leq \varphi(x_0) + \varphi(x_1)\varphi(a) + \cdots \varphi(x_{k-1})\varphi(a)^{k-1} \\
& \leq (a-1)(1+a^{\alpha}+\cdots +a^{(k-1)\alpha})\\
& \leq (a-1)\frac{a^{k\alpha}-1}{a^\alpha -1} < (a-1)\frac{a^{k\alpha}}{a^\alpha -1}=\frac{(a-1)a^\alpha}{a^\alpha -1}a^{(k-1)\alpha}\\
& \leq \frac{(a-1)a^\alpha}{a^\alpha -1}N^\alpha=CN^\alpha
\end{split}
つまり、
\displaystyle 
\varphi(N) < C N^\alpha
となります。
ここで、Cは下記で定義されるNに依存しない定数です。
\displaystyle
C=\frac{(a-1)a^\alpha}{a^\alpha -1}

CNに依存しないので、m自然数としてNN^mに置き換えると、
\displaystyle
\varphi(N^m)=\varphi(N)^m < CN^{m\alpha}
より、
\displaystyle
\varphi(N) < C^{\frac{1}{m}} N^{\alpha}
となり、m\rightarrow \inftyとすることで、
\displaystyle
\varphi(N)\leq N^{\alpha}
が成り立ちます。

次に、Na^kよりも小さい自然数だったので、b自然数として、N=a^k-bとおきます。ただし、b>a^k-a^{k-1}であると、N\geq a^{k-1}が成り立たなくなってしまうので、0 < b \leq a^k - a^{k-1}です。

任意のNについて\varphi(N) \leq N^{\alpha}を示しましたので、当然bについても\varphi(b) \leq b^\alpha \leq (a^k - a^{k-1})^\alpha成り立っています。
今、a^k=N+bより、ノルムの性質で、
\displaystyle
\varphi(a^k) = \varphi(N + b) \leq \varphi(N) + \varphi(b)
となり、最初の方で示した\varphi(a)=a^\alphaと先ほど示した\varphi(b) \leq (a^k - a^{k-1})^\alphaを用いると、
\displaystyle
\begin{split}
\varphi(N) & \geq \varphi(a^k) - \varphi(b) = \varphi(a)^k - \varphi(b) = a^{\alpha k} - \varphi(b) \\
& \geq a^{\alpha k} - (a^k - a^{k-1})^\alpha = \left(1-\left(1-\frac{1}{a}\right)^\alpha \right)a^{\alpha k} \\
& = C_1 a^{\alpha k} > C_1 N^\alpha
\end{split}
となります。ここで、C_1は下記で定義されるNに依存しない定数です。
\displaystyle
C_1= \left(1-\left(1-\frac{1}{a}\right)^\alpha \right)
先ほどと同様に\varphi(N) > C_1 N^\alphaに対して、NN^mに置き換えると、
\displaystyle
\varphi(N)^m = \varphi(N^m) > C_1 N^{\alpha m}
となり、
\displaystyle
\varphi(N) > {C_1}^{\frac{1}{m}} N^{\alpha}
から、m\rightarrow \inftyとすることで、
\displaystyle
\varphi(N)\geq N^{\alpha}
が成り立ち、先ほど、\varphi(N)\leq N^{\alpha}が成り立つことも示していたので、結局、
\displaystyle
\varphi(N) = N^{\alpha}
であることがわかりました。

最後に、{\mathbb Q}0でない元xx=\pm N_1/N_2(N_1N_2自然数)と表すと、
\displaystyle
\varphi(x)=\varphi\left(\frac{N_1}{N_2}\right) = \frac{\varphi(N_1)}{\varphi(N_2)}=\frac{N_1^\alpha}{N_2^\alpha}=|x|^\alpha
となります*4

まとめると少なくとも1つの自然数aに対して、\varphi(a)>1ならば、ノルム\varphiは通常のノルム|\ast|_\inftyと同値であることがわかりました。

では次に、後者の場合、つまり、任意の自然数nに対して\varphi(n)\leq 1である場合を考えます。

任意の素数pに対して\varphi(p)=1であるとすると、どんな自然数n素数の積で書けるため、ノルムの性質から\varphi(n)=1となり、これから全ての有理数x(\neq 0)に対して\varphi(x)=1が導けてしまいます。これは\varphiが自明なノルムでないことに矛盾するため、少なくとも1つの素数pに対して\varphi(p)<1となります。

ここで素数pとは異なる素数qに対しても、\varphi(q)<1であると仮定します。このとき自然数klを十分に大きく取れば、
\displaystyle
\varphi(p)^k < \frac{1}{2}, \qquad \varphi(q)^l < \frac{1}{2}
が成り立ちます。

p^kq^lは互いの素なので、ある整数uvが存在して、up^k + vq^l = 1となります。そして今任意のnに対して\varphi(n)\leq 1である場合を考えているので、\varphi(u)\leq 1\varphi(v)\leq 1となっており、以上から次の矛盾が得られ、pと異なる素数q\varphi(q)<1となることはないことがわかります。
\displaystyle
1=\varphi(1)=\varphi(up^k + vq^l )\leq \varphi(u)\varphi(p)^k + \varphi(v)\varphi(q)^l < \frac{1}{2} + \frac{1}{2} = 1.

ここまでをまとめると、任意の自然数nに対して\varphi(n)\leq 1である場合はただ1つの素数pが存在して、
\displaystyle
\varphi(p)=\rho < 1
となり、p以外の任意の素数qに対しては
\displaystyle
\varphi(q)= 1
となります。ただし\rho0<\rho < 1を満たす定数です。

あと少しです。以上から、自然数apと互いに素であれば明らかに\varphi(a)=1となります。
最後に、{\mathbb Q}0でない元xx=p^m a/b(abpと互いに素な整数)と表すと、
\displaystyle
\varphi(x)= \varphi(p^m)\frac{\varphi(a)}{\varphi(b)}=\varphi(p)^m=\rho^m=(p^{-m})^{-\frac{\log{\rho}}{\log{p}}}
となり、-\frac{\log{\rho}}{\log{p}}>0なので、これはp進ノルムと同値なノルムであることがわかります。

なんとも鮮やかな証明です。

明日はたけのこさんの保型形式のお話です。お楽しみに。
o-v-e-r-h-e-a-t.hatenablog.com

*1:2つの距離が同じ位相構造を定めることは、2つの距離が同値(あるCDが存在して、任意のxyに対してCd_1(x,y)\leq d_2(x,y)\leq Dd_1(x,y)が成り立つこと。)であることより広い概念です。2つの距離が同値であれば同じ位相構造を定めますが、一般にその逆は成り立ちません。

*2:同値でもあります。

*3:通常ベクトル空間のノルムに対しては、その同値性を「任意のベクトルxに対して、 C|x|_1 \leq |x|_2 \leq D|x|_1]となるCDが存在すること」と、定義します。しかしこの定義では後述するオストロフスキーの定理が強く見えまえん。この同値性を採用してしまうと、有理数体上で互いに同値でないノルムが自明なノルム、通常のノルム、p進ノルム以外にも例えば\sqrt{|x|}というノルムが存在してしまいます。

*4:この式変形で暗黙で使った、\varphi(-1)=1、及び\varphi(N_1/N_2)=\varphi(N_1)/\varphi(N_2)は、ノルムの定義から簡単に導けます。

調和級数大好きカメさん後日談

この記事は、インテジャーズ Advent Calendar 2017 - Adventar 19日目の記事です。

f:id:mattyuu:20171221164815p:plain

インテジャーズ Advent Calendar 2017 - Adventarの5日目の記事で調和級数大好きカメさんの話を書きました。今回はその後日談の紹介です。

まだ調和級数大好きカメさんをご存知ない方は前回の記事を先に読んでみてください。
mattyuu.hatenadiary.com

調和級数大好きカメさんからの相談

ある日、くまさんのところに毎日調和級数ライフを楽しんでいるはずのカメさんが深刻な顔をしてやってきました。

f:id:mattyuu:20171221164819p:plain

調和級数大好きカメさん「く、くまさん、、じ、実は相談が、、、」

くまさん「な、なんだい!?」

調和級数大好きカメさん「じ、実は僕、、、そ、、そ、、」

f:id:mattyuu:20171221164821p:plain

調和級数大好きカメさん素数が好きになったんだ。。」

なぜ素数が好きになったのか

f:id:mattyuu:20171221164829p:plain

くまさん「な、なぜだい!?、、君はゆっくりでもどんどん大きくなる調和級数に自分を重ね合わせてシンパシーを感じていたはずだろ??」

調和級数大好きカメさん「そ、素数にシンパシーを感じるんだよ。。」

くまさん「な、なぜだい!?君は素数とは似ても似つかないよ。。」

調和級数大好きカメさん「そ、素数はその逆数和が発散するんだ。素数分の1も足していけばいつかどんな大きくなるんだよ。インテジャーズに書いてあったんだ。」

f:id:mattyuu:20171221164839p:plain

integers.hatenablog.com

調和級数大好きカメさん「調和級数よりゆっくりだけど、無限に大きくなる。そんな素数にシンパシーを感じるんだよ。」

f:id:mattyuu:20171221164842p:plain


f:id:mattyuu:20171221164845p:plain

再び給水ポイントを

調和級数大好きカメさん「だからお願い、もう一度数直線上の整数に給水ポイントを設置してくれないか?」

くまさん「わ、わかったよ。」

f:id:mattyuu:20171221164849p:plain

くまさん「設置したよ。でも本当に大丈夫かい?」

調和級数大好きカメさん「ありがとう!調和級数と一緒で、順番を並び替えたらきっと給水ポイントに止まれるよ!」

f:id:mattyuu:20171221164852p:plain

整数1にたどり着けない

調和級数大好きカメさんは、数直線上で0を出発点とし、素数分の1の歩幅で歩き始めました。次の一歩が整数を超えてしまう時は、その歩幅は歩まずにそれより小さく、かつ整数を超えない素数分の1の歩幅で歩くのです。しかし、たった6歩歩いたところで行き詰まりました。6歩目に歩いた歩幅は1/654149です。次の一歩は654149より大きい素数の逆数にする必要がありますが、調和級数大好きカメさんはにわか素数ファンのため、大きい素数をほとんど知らなかったのです。次の一歩の計算に時間がかかり、なかなか一歩を踏み出せません。

f:id:mattyuu:20171221164856p:plain

カメさんはリスタートということで、出発点に戻り、様々な素数分の1の歩幅で歩きますが、どうしても1にぴったり止まることができませんでした。。

f:id:mattyuu:20171221164901p:plain

素数の逆数和はどんなに並び替えても整数にならない

f:id:mattyuu:20171221164904p:plain

くまさん「調和級数大好きカメさん、、、僕は気づいてしまったよ。どんなに歩幅を入れ替えても君はただ一つの整数にすらぴったりたどり着くことはできないんだよ」

調和級数大好きカメさん「そ、そんなーー(T T)」

<証明>
p_1p_2\cdotsp_nを相異なるn個の素数とします。p_ii番目の素数という意味合いではないので、p_1=2p_2=3とは限りません。

今、ある整数Nが存在して、
\frac{1}{p_1}+\frac{1}{p_2}+\cdots +\frac{1}{p_n}=N
となったと仮定すると、
両辺にp_2p_3\cdots p_nを掛けることで、
\frac{p_2p_3\cdots p_n}{p_1}+p_3\cdots p_n+\cdots +p_2p_3\cdots p_{n-1}=p_2p_3\cdots p_nN
となり、左辺の第1項は整数でない有理数、それ以外の項は全て整数となり、矛盾します。
よって、仮定を満たすような整数Nは存在しません。

やっぱり調和級数が大好き

f:id:mattyuu:20171221164908p:plain

調和級数大好きカメさん「くまさん、今回もいろいろありがとう。やっぱり僕には素数はまだ早かったよ。」

くまさん「そうだよね。素数の道は険しいよ。一緒に一歩一歩勉強していこう!」

調和級数大好きカメさん「そうしよう!」

f:id:mattyuu:20171221164911p:plain

調和級数大好きカメさんの話

この記事は、インテジャーズ Advent Calendar 2017 - Adventar 5日目の記事です。4日はせきゅーんさんセメレディの定理の組合せ論的証明ー2 - INTEGERSでした。

今回は調和級数と調和級数が大好きなカメさんのお話をしたいと思います。「調和級数って何?」っていう説明もしますので、知らない方も安心してください。

ちりが積もっても山にならない

俗世間では「ちりも積もれば山となる」とよく言われますが、数学の世界にはちりが積もっても山とならないようなものが存在します。

例えば、

\displaystyle
1+0.1+0.01+0.001+\cdots

という無限個の足し算を考えると、この無限個の足し算は明らかに、

\displaystyle
1+0.1+0.01+0.001+\cdots = 1.111111\cdots < 2

という風に小数点以下に1が並ぶ数となり、この結果は2を超えることはありません。足していく数は全て0より大きいため、足し算を続ければ続けるほど足し算の途中結果はどんどん大きくなっていきます。

ちりのように小さい数がどんどん足されて、どんどん大きくなるのに2を超えないのです。


今度は、次のような無限個の足し算を考えてみます。分母が124816とどんどん倍になっているものです。

\displaystyle
1+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+\frac{1}{16}+\frac{1}{32}\cdots

下の図から明らかのように、足し算を続ければ続けるほど途中の結果は2に近づいていきます。こちらの無限の足し算の結果も2を超えることはありません。

f:id:mattyuu:20171205120105p:plain

たしかに数学の世界ではちりが積もっても山とならないような例が存在します。

調和級数

ちりが積もっても山にならない例を知った上で、本題の調和級数の話をします。

下記の無限個の足し算を調和級数と言います。

\displaystyle
1+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{5}+\frac{1}{6}+\frac{1}{7}+\cdots

この足し算は現実世界でちりが積もって山になるのと同じように、無限に大きくなるでしょうか?それとも、前述した2つの足し算同様に、ある値(前述の例では2)が存在して、どんなに頑張ってもその値を超えることはないのでしょうか?


調和級数も前述した例と同様に、足し算を続けていくと、「1兆分の1」、「1兆1分の1」、「1兆2分の1」、、、と足す数はどんどん小さくなっていきます。

\displaystyle
1+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+\cdots  + \frac{1}{1000000000000}+ \frac{1}{1000000000001}+\frac{1}{1000000000002}+\cdots +

「1兆分の1」は0.000000000001なので、全体の和はほとんど増えないことがお分かりいただけるかと思います。

しかし調和級数は足し算を続けていくとあらゆる数より大きくなります。例えばあなたが「100兆!」と言ったら、いつか調和級数の和も100兆を超えます。これはなかなか不思議なことです。本当にちりのようなどんどん小さくなる分数たちが、どんどん足されていくことでいつしかどんな数をも超えていくのです。このことを調和級数は発散するといいます。

下表に調和級数の途中までの和(1+\frac{1}{2}+\frac{1}{3}+\cdots+\frac{1}{n})が初めて218を越える時のnをまとめました。\frac{1}{36865412}まで足してやっと18を越えるということで、非常にゆっくり、そして着実に大きくなることがわかります。

f:id:mattyuu:20171205120109p:plain

調和級数が発散することの証明はインテジャーズに書いておりますので、是非読んでみてください。

integers.hatenablog.com

調和級数大好きカメさん登場

ここで今後の話をイメージしやすくするために調和級数が大好きなカメさんを登場させます。

調和級数は非常にゆっくりですが少しずつ大きくなり、いつしかあらゆる数より大きくなるものでした。カメさんもその歩みは遅いですが、非常に努力家なので、地道に歩き続けどんな遠くにも行ってしまいます。

ここに調和級数と努力家な自分にシンパシーを強く感じるカメさんがいます。いつしか他の動物たちから調和級数大好きカメさんと呼ばれるようになりました。

f:id:mattyuu:20171205120112p:plain

調和級数大好きカメさんは、調和級数が大好きなので歩く歩幅は調和級数に倣っています。つまり最初の一歩の歩幅は1、次の一歩の歩幅は\frac{1}{2}、その次は\frac{1}{3}です。調和級数のように数直線上で0を出発地点として、数直線を歩き続けます。

f:id:mattyuu:20171205120114p:plain


調和級数は発散するため、調和級数大好きカメさんはいつしか1000、いつしか100兆を超えて行きます。

f:id:mattyuu:20171205120124p:plain

喉が乾く調和級数大好きカメさん

調和級数大好きカメさんがいくら努力家だと言っても生き物です。飲まず食わずでは歩き続けることはできません。

f:id:mattyuu:20171205120135p:plain

そこで数直線上の整数点に給水所を設けてあげることにしました。給水所では水とバナナが供給されます。

f:id:mattyuu:20171205120131p:plain

ただし、1つだけルールがあります。調和級数大好きカメさんがぴったり整数の点に止まれた時だけ、つまりぴったり給水所にたどり着いた時だけ、水を飲み、バナナを食べても良いというルールです。

調和級数大好きカメさんのスタート地点は0で最初の一歩の歩幅は1ですから、一歩歩いて整数1の地点に止まりますので、調和級数大好きカメさんは水を飲みました。今はそんなにお腹は空いていないということで、「バナナは次の給水所で食べる」と言い残し、出発しました。

f:id:mattyuu:20171205120138p:plain

しかし、

\displaystyle
1+\frac{1}{2}+\frac{1}{3} = \frac{11}{6}  < 2


\displaystyle
1+\frac{1}{2}+\frac{1}{3} + \frac{1}{4} = \frac{25}{12} > 2

なので、次の整数2に設置された給水所にはぴったり止まることはできませんでした。「まあこんなこともあるさ」と調和級数大好きカメさんは整数3の給水所を目指し再び歩き始めます。

f:id:mattyuu:20171205120142p:plain


しかし、

\displaystyle
1+\frac{1}{2}+\frac{1}{3}+\cdots + \frac{1}{10}   < 3


\displaystyle
1+\frac{1}{2}+\frac{1}{3}+\cdots + \frac{1}{10}+\frac{1}{11}   > 3
なので、続く整数3の給水所にもぴったり止まることはできず、整数1の給水所でバナナを食べなかったことを後悔し始めました。しかし「自分の歩幅はどんどん小さくなるんだ。次くらいにはぴったり整数の給水所に止まれるだろう。」と調和級数大好きカメさんは再び歩き始めるのでした。

f:id:mattyuu:20171205120145p:plain

しかしその後、調和級数大好きカメさんが整数の給水所にぴったり止まることは二度とありませんでした。。。

f:id:mattyuu:20171205120148p:plain

調和級数の途中和は整数にならない

実はn>1のとき、

\displaystyle
1+\frac{1}{2}+\frac{1}{3}+\cdots + \frac{1}{n}

は整数になりません。

これは私は大学時代に読んでいた代数学のテキスト*1の演習問題で知りました。2016年11月、「これはあまり知られていなさそうだ。ブログに書いちゃおう!」と思い、この事実をブログに書いていたところ、あるブログが目に留まりました。

そうインテジャーズです。


integers.hatenablog.com

証明はインテジャーズの記事を読んでください。「他のブログに書いてあることは書く意味がない(T T)」と、私のブログは書きかけのまま一年以上放置されていましたが、今回インテジャーズのアドベントカレンダーに投稿することで、日の目を見ることとなりました。

調和級数大好きカメさんに水を飲ませてあげたい

調和級数大好きカメさんの友達のくまさんは、とても友達想い。飲み食いせず歩き続ける調和級数大好きカメさんに提案をします。

f:id:mattyuu:20171205120152p:plain

くまさん「調和級数大好きカメさん。このままじゃ倒れちゃうよ。」

調和級数大好きカメさん「いいんだよ。僕はルール通りに頑張るだけだよ。僕は歩幅を変えるつもりもないし、整数以外の点で水を望んだり、バナナを望んだりしない。いくら給水所までの距離が0.0000000000000001以下だったとしても。」

くまさん「次の一歩で整数の給水所を超えてしまう時、歩幅を変えて歩いて給水所に止まろうよ。バナナ美味しいよ。」

調和級数大好きカメさん「僕は調和級数が大好きだ。歩幅を変えるなんて絶対にやりたくないんだ。わかってくれよ、くまさん。」

くまさん「違うよ。たしかに歩幅は変えるよ。でもそれはこの先君が歩む一歩の歩幅にするんだよ。つまり今歩こうとしている一歩を将来にとっておいて、将来歩く一歩の歩幅で今歩むんだよ。当然その歩幅は今歩いちゃうんだから将来は歩いてはいけないということにすればいい。とっかえっこするだけだよ。」

内心喉が渇いて、お腹も空いていた調和級数大好きカメさんは迷い始めます。

調和級数大好きカメさん「本当にそれで整数の給水所に止まれるの・・・?」

くまさん「止まれるんだよ。しかも全整数の給水所に!

単位分数(エジプト分数)の話

調和級数の足し算に現れる分母が正の整数で分子が1である分数を単位分数と呼びます。\frac{1}{2}\frac{1}{691}等です。

そして、任意の有理数(=整数分の整数で表せる分数のこと。分数と思ってもらえればよい)は単位分数の和で表すことができるという素晴らしい定理があります。

証明はそうですね、インテジャーズを読んでください。

integers.hatenablog.com

調和級数大好きカメさんが次の一歩で次の整数にある給水所を超えてしまう時、今調和級数大好きカメさんがいる点と、次の整数の給水所までの距離は有理数(≒分数)になっています。

つまりその有理数を単位分数の和で表すことで、調和級数の足し算に現れる分数でその距離を歩くことができるのです。

しかし、右辺の単位分数は今まで調和級数大好きカメさんが歩いた歩幅になっていてはいけません。調和級数大好きカメさんは歩幅の順番を変えることに関してはOKを出しつつありますが、同じ歩幅を歩くなんてことは彼のプライドが許すわけないのです。このままではカメさんが確実に次の給水所に止まれるという保証がありません。

しかしながら、n自然数として、実は次の式が成り立ちます。

\displaystyle
\frac{1}{n}=\frac{1}{n(n+1)}+\frac{1}{n+1}

なんと単位分数はそれより分母の大きい二つの単位分数の和で表すことができるのです。しかも無限通りに。当然単位分数の数はどんどん多くなります。

つまり、次の給水所のまでの距離を単位分数で表した時に、その単位分数に今まで歩いた歩幅が含まれている場合、上の式を使って別の単位分数で表してあげれば良いのです。単位分数の分母はどんどん大きく取ることができます。一方調和級数大好きカメさんが歩いた歩幅は高々有限通りです。単位分数を別の単位分数で表すという操作を繰り返せば、いつかは絶対に今まで歩いていない歩幅が出てくるのです。

最後の説得

くまさん「わかったよね?つまり次の一歩はこう決めるんだ。基本的に次の一歩はまだ歩いていない歩幅のうち最大のもので歩いてね。つまり1\frac{1}{2}\frac{1}{341}の歩幅で今まで歩いたことがあって、\frac{1}{342}の歩幅で歩いたことがないんだったら、次の一歩は\frac{1}{342}だ。」

調和級数大好きカメさん「うん。いつもそうしてきたよ。」

くまさん「でも、次の一歩で次の整数の給水所を超えてしまう時だけ、今君がいるところから次の給水所までの距離を単位分数の和で表すんだ。その単位分数に今まで君が歩いたことのある歩幅がある場合は、より分母の大きい単位分数の和で表してあげよう。いつしか君が歩いたことのない歩幅が現れるよ。そうしたらその単位分数たちを歩幅にして歩いていけばいい。ちゃんと給水所にたどり着けるから。」

調和級数大好きカメさん「そうだね。うん、そうするよ。ギリギリ僕のポリシーに反しない。」

くまさん「そう。ただし、自分が歩いた歩幅はちゃんと覚えておかないといけないよ。うっかり同じ歩幅で歩いてしまうといけないから。」

調和級数大好きカメさん「僕の記憶力が良いのは知っているだろう。僕がそんなドジを踏むと思うかいwww」

くまさん「ごめん。ちなみに、君は調和級数の順番を変えて歩くことになるんだけど、この順番を変える写像全単射になっているよ。君は記憶力がいいから同じ歩幅を歩かない。つまり単射だ。そして、給水所を出発する時の次の一歩は確実にその時点で君が歩いていない歩幅で最大のものになる。なぜなら給水所から給水所まで一歩で行けるわけがないのだから。だから一つの整数を超えるごとにその時点で最大の単位分数を1つずつ消費することになるから、全射にもなるんだ。」

調和級数大好きカメさん「・・・ありがとう!」

こうして調和級数大好きカメさんは全整数で水を飲み、バナナを食べることができるようになりました。めでたしめでたし。

f:id:mattyuu:20171205120155p:plain

最後に

調和級数の部分和が整数にならないという事実がインテジャーズに書いてあったため、何かオリジナルなものを考えたいと思いました。「そういえば素数の逆数和も発散する。素数の逆数和の部分和は整数にならないのだろうか。これはインテジャーズにも載ってないかも。これを考えてみよう」と思った数秒後にはインテジャーズに載っていることを発見しました。

integers.hatenablog.com

今回の話がインテジャーズに載っていないことを祈るばかりです。

今回の主張
自然数から自然数への全単射\varphi : \mathbb{N} \rightarrow \mathbb{N}が存在して、任意の自然数Nに対して、ある自然数Kが存在して、
\displaystyle
\sum_{k=1}^K\frac{1}{\varphi(k)}=N
となる。


明日はコロちゃんぬさんの「インテジャーズとの出会いとか」です!

追記)調和級数大好きカメさんの後日談も書きました。

mattyuu.hatenadiary.com

*1:

代数系入門

代数系入門

血液型の割合に感じる神の意思

この記事は、日曜数学 Advent Calendar 2017 - Adventar 3日目の記事です。2日目は数学カフェの中の人さんの【日曜数学アドベントカレンダー2日目】2343の魅力を伝えたい。 - 数学カフェの中の人達のブログでした。ちなみに2343はスーパー合成数でした。

この記事の内容は今年6月に行われた第9回日曜数学会で発表した内容をまとめたものです。なお、今年開催された日曜数学会は全3回全て発表したので皆勤賞です!それでは始めます!


f:id:mattyuu:20171203102234j:plain

『血液型の割合に感じる神の意思』というタイトルで発表させていただきます。よろしくお願いします。


ある日twitterを見ていると、このようなアンケートが目に留まりました。
twitterには4択のアンケート機能がありますが、この機能を使って血液型のアンケートをとっています。「アンケート結果が日本人の血液型の割合と同じになるのか?」ということを調査しているようです。


f:id:mattyuu:20171203102237j:plain

最終票数は493票となっており、その結果を実際の日本人の血液型の割合と比べると、アンケート結果の血液型の割合と、日本人の血液型の割合がほぼ同じになっていることがわかります。数学的には大数の法則と言いますが、こんな単純な調査でも意図した結果が出てくるのは面白いですね。

生物学に疎い私はこの調査結果を見て、「日本人の血液型の割合はどのように決まっているのか?」と疑問を持ちました。しかも血液型の割合は国によって違うと聞いたことがあり、俄然気になります。


f:id:mattyuu:20171203102240j:plain

そこで日本以外の国の血液型の割合も調べて見ると、図中の円グラフのように確かに国によって血液型の割合はまちまちでした*1。ブラジルに至っては100%O型ということで驚きです。


f:id:mattyuu:20171203102243j:plain

以上が動機となり、今回の発表のテーマは『血液型の割合はどうやって決まるのか?』、『日本の血液型の割合は今後変わっていく可能性はあるのか?』としました。これらの疑問に数学を使って答えていきましょう!その結果、「神の意思」と呼んでも良いような事実に辿り着きましたので、紹介したいと思います。


f:id:mattyuu:20171203102246j:plain

まずはそもそも血液型とは何かを説明します。血液型を決める遺伝子(血液型遺伝子と呼ぶ)には、A型、B型、O型の3種類があり、人はその内の2つの遺伝子の組み合わせを持っています。血液型はA型、B型、AB型、O型の4種類だと思っていましたが、細かく言うとAA、AO、BB、BO、AB、OOの6種類があったのです。

ABO式血液型 - Wikipediaによるとこれら6種類のことを血液型ではなく遺伝子型と呼ぶようです*2。そしてAAとAOの遺伝子型をA型、BBとBOの遺伝子型をB型、ABの遺伝子型をそのままAB型、OOの遺伝子型をO型と決めています。AOをA型、BOをB型と呼ぶとO型遺伝子がかわいそうですが、O型遺伝子はA型、B型遺伝子に対して劣性遺伝子と言うそうで、生物学的にちゃんとした理由があるものと思われます。

f:id:mattyuu:20171203102250j:plain

次にお父さんとお母さんの血液型が赤ちゃんにどのように遺伝するのかを説明します。赤ちゃんは、お父さんが持っている2つの血液型遺伝子のうちどちらか一方を、そして、お母さんが持っている2つの血液型遺伝子のうちどちらか片方を、それぞれランダムに引き継ぎます。と言っても、実際に例を見た方がわかりやすいと思うので、2例出して説明します。

まずは1例目です。
この例ではお父さんはAAのA型、お母さんはBOのB型です。お父さんの遺伝子型はAAですので、赤ちゃんが引き継ぐのはA型の血液型遺伝子だけです。一方お母さんからは50%の確率でB型の血液型遺伝子を、50%の確率でO型の血液型遺伝子を引き継ぎます。よって赤ちゃんの血液型は50%の確率でAB、50%の確率でAOとなります。


f:id:mattyuu:20171203102254j:plain

次の例ではお父さんはABのAB型、お母さんはBOのB型になっています。先ほどの例と同様にお父さんからはA型、B型の血液型遺伝子を50%ずつの確率で、お母さんからはB型、O型の血液型遺伝子を50%ずつの確率でそれぞれ引き継ぐためそれぞれ25%の確率で、AB、AO、BB、BOの血液型を持った赤ちゃんが生まれてきます。


f:id:mattyuu:20171203102258j:plain

では、いよいよ数学を使ってモデル化していきましょう。血液型がAAの人の割合をp_{\rm AA}という記号*3で表します。AOからOOまでの他の遺伝子型に対しても同様です。

これら6つの変数p_{\rm AA}p_{\rm AO}p_{\rm BB}p_{\rm BO}p_{\rm AB}p_{\rm OO}は割合を表しますから、当然それぞれの変数が実際にとる値は0以上1以下になります(0\leq p_i \leq 1)。また、人の血液型はAA、AO、BB、BO、AB、OOのいずれかですから、6つの変数の和は1になります(p_{\rm AA} +p_{\rm AO} +p_{\rm BB} +p_{\rm BO} +p_{\rm AB} +p_{\rm OO}=1 )。

現在の日本だと、AAが8%、AOが31%、BBが3%、BOが19%、ABが10%、OOが29%となっているので、p_{\rm AA}=0.08p_{\rm AO}=0.31p_{\rm BB}=0.03p_{\rm BO}=0.19p_{\rm AB}=0.1p_{\rm OO}=0.29となります。


f:id:mattyuu:20171203102301j:plain

今回のテーマに『日本の血液型の割合は今後変わっていく可能性はあるのか?』という疑問を掲げています。先ほど血液型の割合を変数(p_i)で表しましたが、これに加えて変数の時間変化も考える必要があります。

そこで、ある世代の血液型の割合(p_i)を入れると、次の世代の血液型の割合(p_i^{+})を返すような関数Fを作りたいと思います。Fが作れると、ある世代の血液型の割合に次々とFを作用させる事で血液型の割合の変数の時間変化がわかるのです。


f:id:mattyuu:20171203102305j:plain

Fを構成するに当たって3つの前提があります。

まず1つ目は『結婚相手は血液型で選ばない』という事です。血液型の相性という話も聞くため、中には結婚相手を血液型で選ぶ人もいるかもしれませんが、大半の人は血液型では相手を選ばないでしょう。マクロな視点で見たら結婚相手の血液型の確率は現在の血液型の割合に平均化されるという事です。

2つ目の前提は、『どの血液型の組み合わせのカップルも平均して同じ数の子供を出産する』です。夫婦によって子供の数はまちまちですが、その数は夫婦の血液型に依らないだろうという前提です。「あの夫婦はA型同士なので子沢山だわね」というような話は聞いたことありませんので、これも自然な前提かと思います。

3つ目の前提は『時間軸に世代という明確な区切りがあるものとする』です。今の日本には0歳児から100歳を超える御高齢の方まで連続的に各年齢の人が暮らしていますが、祖父母世代、父母世代、子供世代というように世代が存在することを前提にします。今の子供世代が次世代の父母世代となり赤ちゃんを産む事で次の子供世代が誕生し、また次の世代では最初の子供世代の人たちは祖父母世代となり、先代で誕生した子供世代が父母世代となり新しい子供世代が誕生します。前2つのものに比べて少し重たい前提ではありますが、暖かく見守ってほしいです。Fは父母世代の血液型の割合から、次の子供世代の血液型の割合を与える関数になるのです。

さて、モデルと前提が準備できましたので実際にFを構成していきます。


f:id:mattyuu:20171203102313j:plain

こちらが次の世代のAAの血液型の割合p_{\rm AA}^{+}を与える数式になります。
まず、右辺の\frac{1}{4}p_{\rm AO}p_{\rm AB}について説明します。
夫婦をランダムに選んだ時に、お父さんがAO、お母さんがABである確率はp_{\rm AO}p_{\rm AB}となります*4。そして、この夫婦の赤ちゃんの血液型がAAになる確率は25%(=1/4)です。これから父母世代のAOのお父さん、ABのお母さんが次の世代のAAの割合に寄与する大きさは\frac{1}{4}p_{\rm AO}p_{\rm AB}となるのです。

赤ちゃんの血液型がAAということは、お父さん、お母さんの血液型の組として考えられるのは、(AA,AA)、(AA,AO)、(AO,AA)、(AO,AO)、(AA,AB)、(AB,AA)、(AO,AB)、(AB,AO)、(AB,AB)のいずれかです。お父さんの血液型がBO、お母さんの血液型がABであればどう頑張ってもAAの血液型を持つ赤ちゃんは産まれてこないため、(BO,AB)は考える必要はありません。(AO,AB)以外にも同様に計算していって全て足すこと*5で次の世代のAAの血液型の割合を出せるのです。


f:id:mattyuu:20171203102309j:plain

同様に計算すると次の世代のAO、BB、BO、AB、OOの血液型の割合を導出する式はこちらになります。目が回りそうです。。。簡単に書けないでしょうか。。?


f:id:mattyuu:20171203102316j:plain

よく見ると、右辺は変数の二次式になっています。今までp_{\rm AA}^2と書いてあったところもp_{\rm AA}p_{\rm AA}と書くことで、左のp_iはお父さん達の、右のp_jはお母さん達の血液型の割合のように見えてきませんか?


f:id:mattyuu:20171203102323j:plain

知らない方はご勘弁ですが(大半かもしれません...)、二次式は大学初年度で習う線形代数の二次形式(二次形式 - Wikipedia)という言葉を使えば、ベクトルと行列を使って簡単に書き表すことができます*6。ベクトルはお父さん、お母さん世代の血液型の割合、行列はAA、AO、BB、BO、AB、OO それぞれに固有な定数行列となります。

例えば次の世代のAAの割合(p_{\rm AA}^{+})は簡単にp^{\rm T}P_{\rm AA}pと書けます。複雑な係数たちはP_{\rm AA}という定数行列が中に閉じ込めてくれています。P_{\rm AA}は何も悪いことしていないのに、一身に面倒なものを全て抱え込んでくれております。そういった意味で私はP_{\rm AA}を次の世代のAA型の割合を司る定数行列と呼んで崇めています。


f:id:mattyuu:20171203102327j:plain

他の血液型の割合を司る行列たちはこのようになっています。みんなありがとう。


f:id:mattyuu:20171203102320j:plain

さて、P_{\rm AA}P_{\rm OO}のおかげで関数Fをこのように簡単に書くことができます。二次形式に慣れていない方は前述した二次式と全く等価ですので無理に理解する必要はありません。


f:id:mattyuu:20171203102331j:plain

今回のテーマを再掲します。『血液型の割合はどうやって決まるのか?』に対しては関数Fが定まったので済みとします。Fがあれば原始時代の血液型の割合から、後の世代の血液型の組が全てわかるからです。

次に『日本の血液型の割合は今後変わっていく可能性はあるのか?』について考えます。


f:id:mattyuu:20171203102336j:plain

今の世代と次の世代で血液型の割合が変わらないということは、今の血液型の割合にFを作用させても同じ割合が出てくることを意味します。血液型の割合がこのような条件を満たすとき、今後も割合が常に一定ということで「定常状態」と呼ぶことにします。


f:id:mattyuu:20171203102340j:plain

前述した通り現在の日本では、AAが8%、AOが31%、BBが3%、BOが19%、ABが10%、OOが29%となっているので、p_{\rm AA}=0.08p_{\rm AO}=0.31p_{\rm BB}=0.03p_{\rm BO}=0.19p_{\rm AB}=0.1p_{\rm OO}=0.29です。日本の血液型の割合が今後も変わらない、つまり定常状態になっていることを確かめるためには、これらの割合の組にFを作用させて割合が変化しないことを確認すればいいのです。


f:id:mattyuu:20171203102344j:plain

実際に計算して見るとこの通りほぼほぼ変わりませんでした!普通なら「日本人の血液型の割合は今後変わらないことがわかったぞ!」と喜びたいところですが、血液型の割合が変化していないということはなんとなくわかっていたことなので、このモデルの妥当性が示されたということで喜びたいと思います。

ただし、今後外国の方の移住が進んで血液型の割合に変化が出たり、「B型結婚禁止法」、「A型子供4人産むこと義務法」等前提条件が崩れるような意味のわからない法律が策定された場合は再度モデル作りが必要になります。


f:id:mattyuu:20171203102348j:plain

ここまでで残っていたテーマ『日本の血液型の割合は今後変わっていく可能性はあるのか?』も解決しました。最後に私が気づいた神の意思と呼べるようなものを紹介したいと思います。


f:id:mattyuu:20171203102206j:plain

当初の予想では原始時代の血液型の割合がわかれば、Fを作用していくことによって血液型の割合が変遷し、最終的に定常状態に落ち着くのであろうと予想していました。


f:id:mattyuu:20171203102210j:plain

しかし実際にいろいろな初期値(原始時代の血液型の割合)を入れてシミュレーションしたところ、たった1回Fを作用させるだけで定常状態になることがわかりました。これは驚きです!

シミュレーション結果だけではなく、変数pを文字で置いて、F(F(p))F(p)が一致することを確認しているので、これは数学的な事実(定理と言ってよい?)です。F(F(p))に対して、P_{\rm OO}=1-P_{\rm AA}-P_{\rm AO}-P_{\rm BB}-P_{\rm BO}-P_{\rm AB}を入れることで、うまいこと4次の項が消えてF(p)になることが確認できます。ちょうど良い計算練習になるので、興味がある方は計算してみてください。


f:id:mattyuu:20171203102213j:plain

この発見を別の見方でも解説します。まずUという血液型の割合の空間があった時に、この血液型の空間において定常状態となる血液型の割合の集合(つまり、F(x)=xを満たすUの元全体)を考えます。

F(x)は二次式なので二次曲面(二次曲面 - Wikipedia)のようになるかと思いますが、6次元空間なので図示できません。。。図の赤いところが定常状態の集合のイメージです。


f:id:mattyuu:20171203102216j:plain

当初の予想では、Uに任意の点(初期値)を選ぶと、Fを作用させるにごとに点が移動していき、いつかは定常状態の赤い面に辿りつき、それ以降はFを作用させても動かない、となると思っていました。


f:id:mattyuu:20171203102219j:plain

しかし実際にわかったことは、Uのどの点を出発点にしても、たった1回Fを作用させることで定常状態の赤い面に辿りつき、それ以降はFを作用させても動かないというものでした。なんとも驚きです!


f:id:mattyuu:20171203102224j:plain

これはまさしく血液型の割合を安定させようという神の意思ではないでしょうか?生物学は疎いのですが、自然が作り出したものだけあって数学と同じく非常に美しく感じます。

実はこの内容を日曜数学会以前にもクローズな場で発表したことがあるのですが、発表後、聴講者の方から「これはハーディー・ワインベルクの法則(ハーディー・ワインベルクの法則 - Wikipedia)というものだよ。」と教えていただき、驚きました。リーマン予想への挑戦やラマヌジャンを見つけ出したことで有名なハーディーが、このような生物学の法則に関しても言及していたのです!そして私の前提もハーディー・ワインベルクの法則の前提と共通する部分が多々あり、「自分すごい!」と思いました。

数学では証明はできても、なんか不思議と感じることは山ほどあります。例えば、\sum_{n=1}^{\infty}\frac{1}{n^2}=\frac{\pi^2}{6}などは証明を読めば成り立つことがわかりますが、なぜ突然\piが出てくるのか、なんで6なのか等不思議は尽きません。今回の神の意思も同様で、任意のpに対してF(F(p))=F(p)となることは確認しましたが、なぜこんなことが成り立つのか?血液型を司る行列たちにどんな秘密があるのかはわかっていません。一時期躍起になって挑戦しましたがわかりませんでした。血液型遺伝子がAとOしかない場合でも試しましたがやはり同様に成り立ったため、血液型遺伝子の種類が増えても成り立つと予想します。

と言うことで次の問題を投げかけて本記事を締めくくりたいと思います。誰かわかったら教えてくださいm( )m

誰か解いて問題
U=\{x \mid 0\leq x_i \leq 1, \sum x_i=1\}\subset {R}^nn次の対称行列P_1,\cdots ,P_nに対して、関数F\colon U\rightarrow Uを次式で定義する。
(F(x)の第i成分)=x^{{\rm T}}P_ix
この時、任意のx\in Uに対してF(F(x))=F(x)が成り立つようなP_1,\cdots,P_nの性質の必要十分条件を与えよ。


f:id:mattyuu:20171203102228j:plain

*1:血液型の割合に関しては、下記のサイトを引用しました。uranailady.com

*2:2つの血液型遺伝子の組AA、AO、BB、BO、AB、OOは本来きちんと遺伝子型と書くべきですが、説明がしにくくなるので、今後これらも広い意味で血液型と書く事にします。

*3:以下、変数と呼びます。

*4:ここで結婚相手は血液型で選ばないという前提が効いています。

*5:お父さん、お母さんの血液型の組に対して何も重み付けせず足すことができるのは、2つ目の前提『どの血液型の組み合わせのカップルも平均して同じ数の子供を出産する』によるものです。

*6:ちょうどこの数式を考えていた頃、別件でガウス整数論の二次形式を読んでいたので「うぉー二次形式すごい!」となった思い出があります。ガウス整数論の二次形式はベクトル、行列の成分は整数の範囲の話になるため、これでもかというくらい全く別の数学です。

ロマ数ボーイズ~フォトアルバム~

はじめに

2017年4月1日に「【非公式】ロマンティック数学ナイトボーイズ(以下、ロマ数ボーイズ)を開催しました!当日の様子をフォトアルバムのような感じでレポートします。40枚超えの画像ファイルが貼られておりますが、1ファイル当たり50KB〜100KBに抑えましたのでご安心ください。写真を撮っていただいたHF(仮)(@prinum2357)さんありがとうございました。

当日の様子に関しては、この業界で有名なもっちょさんが当日のtwitterのまとめもしてくださっています。臨場感溢れるtweetによる実況も是非楽しんでください。

togetter.com

なお、同日同時間帯に和から株式会社様主催の【公式】の「ロマンティック数学ナイトガールズ」も開催されていました。ロマ数ガールズのレポートは下記にまとめられておりますので、ぜひご覧になってください。

wakara.co.jp

ロマ数ボーイズ開催

司会はソニーミュージックアーティストでお笑い芸人をされているセントラルパークの倉重かおるさん(以下、かおるさん)です!

f:id:mattyuu:20170408225359j:plain

「ロマンティックでも、ナイトでも、ボーイズでもない。あっているのは数学だけ」と言う開会宣言でロマ数ボーイズが開催されました。

かおるさんは数学好きが集まるイベントがあるとは信じれなかった、エイプリルフールの嘘ではないかと思っていたようです。。。

1.コロちゃんぬさん

〜食べられないパンと数学〜

トップバッターは普段高校の先生をされているコロちゃんぬさんです。

f:id:mattyuu:20170408230253j:plain

「パンはパンでも食べられないパンはなーんだ?」という定番のなぞなぞに対して、数学的な解を与えてくれました。

f:id:mattyuu:20170408230301j:plain

随所に数学ワードに関連付けたオヤジ顔負けのオヤジギャクを披露する笑いの絶えないプレゼンでしたwwwこんなに楽しく数学が学べるなんて、コロちゃんぬさんの生徒が羨ましいですね。

【コロちゃんぬさんの当日資料はこちらからご参照ください】

www.slideshare.net

2.怪傑ギリジンさん

〜木を生やそう〜

2番手は現役高校生のギリジンさんです。

f:id:mattyuu:20170408230309j:plain

木の話?と思いきや数学の基礎論である公理論的集合論のお話でした。「アロンシャイン木」、「王(Konig)の補題」、「ススリン木」、「構成可能宇宙」、「ダイヤモンド原理」初めて聞く用語ばかりでしたが、それぞれの言葉にインパクトがあり、不思議な魅力を感じました。。。。「なんかすごそうだぞ」という小学生のような感想をtweetしてしまいました。。。

f:id:mattyuu:20170408230323j:plain

プレゼンの参考にされたという『キューネンの集合論*1』を購入したので、次ギリジンさんにお会いする時までには少しでも話せるようになりなりたいと思います。

プレゼン後「ロマンティックは?」とかおるさんに聞かれていました。。かおるさんのロマンティックいびりが始まった瞬間でしたww

3.tsujimotterさん

〜ロマンティックな9つの数について〜

3番手は日曜数学者の生みの親であるtsujimotterさんでした。

f:id:mattyuu:20170408230334j:plain

ヘーグナー数という虚二次体の類数に関する9つの数のお話です。「1、2、3、7、11、19、43、67、163」はヘーグナー数という性質を持つからこそ、素数をたくさん生成する多項式を生み出したり、ほとんど整数となるような数を生み出したりできます。

f:id:mattyuu:20170408230340j:plain

カメラ目線ですごくいい笑顔です(^^)数学に限らず好きなことを語る人達の笑顔は本当にいいものですね。今思えばこういった笑顔を見たいからこそロマ数ボーイズを開催したんだと思います。

f:id:mattyuu:20170408230348j:plain

かおるさんのロマンティックいびりに対して、答えるtsujimotterさん。かおるさんに伝わりきらなかったようで、残念そうな顔で席に戻っていくtsujimotterさんの姿を私は見ました。実はこの後の飛び込みプレゼンでtsujimotterさんが再登場します。乞うご期待。

【tsujimotterさんの当日資料はこちらからご参照ください】

www.slideshare.net

4.ぼくけんくんさん

〜ボーイズは分解がお好き!〜

4番手はぼくけんくんさんです。

f:id:mattyuu:20170408230356j:plain

ボーイズは機械の分解が好きということで、数学における「分解」をいろいろ集めて報告してくださいました。「分解」という単語で数学的な手法、対象を見てみると、素因数分解フーリエ展開、ホモロジーといった普段バラバラに考えているものたちに何かのつながりが見てきます。「分解とかけまして〇〇(ある数学の用語)とときます、その心は、□□なんです」みたいにこじつけでもいろいろ遊んだら楽しそうです。

f:id:mattyuu:20170408230407j:plain

「有休はホモロジーの境界作用素のように再来年には消えてしまいます。」という言葉で会場が湧きました。

5.蝶番さん

〜結晶と空間充填〜

歓談タイムを挟んでの5番目は蝶番さんです。

f:id:mattyuu:20170408230417j:plain

空間を充填する多面体の話です。結晶の格子点は規則正しく並んでいるので、各格子点を起点に3次元のボロノイ図を書けばたしかに空間を充填する多面体ができそうだと納得しました。

f:id:mattyuu:20170408230426j:plain

蝶番さんのプレゼンのすごいところは3次元を表現したアニメで視覚的に理解できるようにしてくださっているところです。おそらくGeoGebraというソフトを使われております。最近twitterでもたくさんの数学アニメを作られています。私もやってみたい。

f:id:mattyuu:20170408230437j:plain

歓談タイムの時には空間を充填する少しいびつな多面体の実物を持ってこられておりました。

6.ちゃんおぎさん

〜ロマンティックなので、〇距離恋愛について語ってみる〜

6番手はちゃんおぎさんです。毎週火曜に神保町のみらい研究所で行なわれている「3Dプログラミングのための数学勉強会」でお世話になっております。

f:id:mattyuu:20170408230446j:plain

レイマーチングという3Dプログラミングの手法で、立体のハートを描いています。ハートの描画には日常私たちがイメージするユークリッド距離を用いています。しかし数学は自由です。距離に関してもある特定の条件を満たせば数学的に距離と呼んでよく、ユークリッド距離以外の距離を用いるとハートはどのような形になるのか?といったお話です。

f:id:mattyuu:20170408230517j:plain

こんな感じになりました。詳しくはちゃんおぎさんの記事にて動画でご確認ください。
プレゼン中に距離を変えるところだけライブコーディングしたところが私の中では斬新でした。

f:id:mattyuu:20170408230527j:plain

一般的な意味でのロマンティック成分は十分にあったためか、かおるさんによるロマンティックいびりはなく、逆に褒められていたように記憶しております。

【ちゃんおぎさんの当日発表内容はこちらからご参照ください】
qiita.com

7.三好さん

〜パズルの母はメタパズル~図形パズルのコンセプトデザインについて~〜

7番手は「総務のおじさん」という自己紹介でお馴染みの三好さんです。

f:id:mattyuu:20170408230545j:plain

三好さんがコンセプトを提案されたGrowing Mirror Symmetryというパズルについてお話をしてくださいました。どのようにコンセプトが生まれたのか、またコンセプトからどういった過程でパズルが出来上がったのかといった話をメタパズル、メタメタパズルという用語を用いて説明されました。

f:id:mattyuu:20170408230555j:plain

パズルが出来上がるまでの過程を見ずに、出来上がったパズルだけを目にする機会の多い私たちは、「どうやってこんなパズル思いつくんだよ?」とパズル作成者と自分の能力の差に悲観的になってしまいがちですが(少なくとも私は)、大事なのは「図形の不思議に気づくこと」、「パズルを愛する仲間たちとの交流」とのことです。これはパズル作成に限った話ではないなと思いました。常にアンテナを伸ばしておき、同じものに感動できる仲間たちと話すことで、すばらしいモノを生み出すことができるのではないでしょうか。

f:id:mattyuu:20170408230603j:plain

最後突然Romantcというスライドでプレゼンが終わったため、

f:id:mattyuu:20170408230613j:plain

当然ロマンティックいびりが始まりましたwww

f:id:mattyuu:20170408230626j:plain

歓談タイムでは参加者の方がGrowing Mirror Symmetryを実際に触っておられました。

8.s.t.さん

TDAしnight!!〜

8番手はロマンティック成分はないと最初に断っておいたs.t.さんです。

f:id:mattyuu:20170408230651j:plain

Topological data analysisという分野のお話です。

f:id:mattyuu:20170408230707j:plain

いつもたくさんの数式を超スピードで発表されるs.t.さん。今回はこのような絵のスライドもあり説明が丁寧だと言われていました。persistent homologyという道具を使っているようなのですが、私には難しいかったです。ただ楽しそうに話すs.t.さんを見るのは好きです。

f:id:mattyuu:20170408230721j:plain

歓談タイムではガチな話をされておりました。

9.みうらさん

〜4階と5階のあいだ〜

二回目の歓談タイムを挟み、9番手は現役大学院生のみうらさんです。

f:id:mattyuu:20170408230739j:plain

スタイリッシュに、安定の語り口でプレゼンをしてくださいました。カタラン予想を語りつつ、n/(n+1)、(n+1)/nが共に有限小数になるのはn=4の時のみであることが示されました。

f:id:mattyuu:20170408230806j:plain

有限に思いを馳せる。ロマンティック成分は人それぞれです。かおるさんからは「ロマンティック カムバック!」と褒められていました。

【みうらさんの当日資料はこちらからご参照ください】

t.co

10.nkjmゆうさん

〜「もんもん」とした生物多様性を計算する〜

10番手は生物学の分野から登場のnkjmゆうさんです。いつも生物学の話に数学を織り交ぜてプレゼンしております。

f:id:mattyuu:20170408230825j:plain

「目に見える生物はあんまり興味ない」ということで、細菌がお好きのようです。生物の種類の分類の階層に「門」というものがあるようで、「細菌の世界にはどれだけ門があるねん?」という問題に数式を使ってった話のようです*2

f:id:mattyuu:20170408230839j:plain

細菌は目に見えないだけですごく多様ってことです。

11.小清水さん

〜2進数フレンズ〜

11番手は小清水さんです。

f:id:mattyuu:20170408230847j:plain

話題のけものフレンズを題材に2進数の世界の話です。けものフレンズの主題歌を歌おうとしましたが、歌詞を忘れてしまったようで失敗しましたwww

コンピュータでは2進数で数が表現されていて、2進数で表現しているからこそ起こる不思議な現象を紹介されました。また負数の表現の話のところは、加藤文元先生のp進数の入門書でも同じような話が出てきており面白かったです*3

f:id:mattyuu:20170408230856j:plain

やはりまとめで突然のロマンティック成分www
この後かおるさんのロマンティックいびりが始まったのは言うまでもありません。誤解のないように言っておきますが、かおるさんはロマンティックいびりをしつつ会場を盛り上げてくださっています。さすがプロのお笑い芸人さんは違います。

f:id:mattyuu:20170408230906j:plain

【小清水さんのプレゼン内容はこちらからご参照ください】
t.co

12.mattyuu

〜書を捨てよ町へ出よ素数を見つけよう!〜

最後は私のプレゼンです。

f:id:mattyuu:20170408230918j:plain

今年も素数が熱いぞということで素数に関するプレゼンです。最初の自己紹介のスライドの辺りの発表は緊張していたのですが、素数の話を始めた時から急に緊張が消え、自分の声をたくましく感じる瞬間がありました。不思議な体験でした。

f:id:mattyuu:20170408230938j:plain

素数コレクター!」という街中で素数を集めるAndroidアプリを開発し、その紹介をさせていただきました。

f:id:mattyuu:20170408230948j:plain

歓談タイムで参加者の方が紙に書いた3つの素数も、

f:id:mattyuu:20170408230957j:plain

ばっちり素数としてコレクトすることができました。ちゃんと動いてよかった。。。

素数コレクター!のプレゼン内容はこちらからご参照ください】
mattyuu.hatenadiary.com

飛び込みプレゼン1 tsujimotterさん

飛び込みプレゼンお一人目は「補足スライドが本編」とおっしゃるtsujimotterさんが再登場です。

f:id:mattyuu:20170408231029j:plain

j関数、虚数乗法という数学用語を用いて、本編の発表では伝えきることができなかったロマンティックに関して語ってくださいました。プロの数学者とアマチュアの数学好きの間には壁、ギャップがあるように感じますが、実はそんなことはなく、私たちの目の前に現れる不思議な現象(今回の例では本編の素数を生成する多項式やほとんど整数の話)の背後に、陸続きで昨今のプロの数学者の研究が繋がっているのです。というお話でした。

f:id:mattyuu:20170408231039j:plain

数学それ自体がロマンティックだと語るtsujimotterさん。確かにそうでした。ロマ数ボーイズではプレゼンにロマンティック成分を入れるように頼んでおりましたが、そんな必要は全くなかったということを認識した瞬間でした。

自分が好きな「ロマンティックな数学」の話を熱く語る、これ以上ロマンティックなことがありますでしょうか(いや、ない)。

飛び込みプレゼン2 宮永さん

飛び込みプレゼンお二人目、そして最後のプレゼンターは宮永さんです。

f:id:mattyuu:20170408231116j:plain

九連環という知恵の輪の解法が、

f:id:mattyuu:20170409084543j:plain

なんと紙を半分に折っていくときの山折り、谷折り、紙が下か、上かといった情報と1:1に対応するとのことです。数学の魅力として、異なる分野で思いもよらないつながりが発見されるということがありますが、まさにその例だと思いました。

tb_lbさんからの挑戦状

参加者の方には、tb_lbさんからの数学の問題3題を配布しました。tb_lbさんはMathPowerへの良問の問題提供で話題を集めたお方で、お忙しい中突然のお願いに対して快く問題を作っていただけました。どれもこの上なく面白いです。私は問題2が好きです。驚くべきことに問題や解答が開催日4月1日の4、1に絡んでいます。こちらにも貼り付けますので、まだ解いてない方はぜひ挑戦してみてください。

【問題1】
f:id:mattyuu:20170409084715j:plain

【問題2】
f:id:mattyuu:20170409084740j:plain

【問題3】
f:id:mattyuu:20170409084801j:plain

さいごに

なんと!何らかのトレンドのランキングで、同日にセンバツ決勝を決めた"大阪桐蔭"に続くトレンドワードとして"#ロマ数ボーイズ"が2位にランキングすることもできました!盛り上げてくださったみなさんありがとうございました!

f:id:mattyuu:20170409084619j:plain

今回イベントが成功したと言っても良いのは、司会のセントラルパーク倉重かおるさん、問題提供をしていただいたtb_lbさん、プレゼンターが定員に達さず突然のお願いにも関わらず快くプレゼンターを引き受けてくださったプレゼンターの方々、会場が狭いのに文句を言わず楽しんでくれた参加者の方々、事前準備、当日準備を手伝ってくれた幹事グループの皆さん、ボーイズと名乗ってイベントを開催することを承認してくださった和から株式会社様のおかげです。本当にありがとうございましたm( )m

最後に記念撮影です。みんないい笑顔です(^_^)
f:id:mattyuu:20170408225413j:plain

*1:

集合論―独立性証明への案内

集合論―独立性証明への案内

*2:私の席からはnkjmさんのスライドが見えず、自分のプレゼンも迫っていて心に余裕がなく、ゆっくり見れてません。。すみません。誰か補記できる方はご連絡ください。。。

*3:

天に向かって続く数

天に向かって続く数

書を捨てよ町に出よ素数を見つけよう!

はじめに

2017年4月1日に「【非公式】ロマンティック数学ナイトボーイズ(以下、ロマ数ボーイズ)*1」という数学イベントを主催し、私も掲題のタイトルでプレゼンを行いました。当日の様子は近いうちにレポート形式で公開しようと思います*2が、まずは私のプレゼンの内容を公開します。イベント開催日もブログ公開日もエイプリルフールである4月1日ですが、本記事の内容に嘘はないことは明言しておきます。

なお、「ロマ数ボーイズ」の開催宣言は私の素数記念日に行っています。

また、私が初めて公の場で数学の発表を行った2016年10月1日の第7回日曜数学会「リーマンゼータ関数のゼロ点を手計算してみた*3」のプレゼンからちょうど半年ということで、いろいろな意味でとても感慨深いイベントとなりました。この半年間で今まで付き合ってこなかったような方とたくさん知り合いになれました。今後ともよろしくお願いします。

また、今後出会うであろう数学好きの方、数学好きになりそうな方、数学嫌いでも必要だから学ぼうとされている方、今後よろしくお願いします。

では始めます。

f:id:mattyuu:20170327004704j:plain

みんな大好き素数

というのは言い過ぎですが、少なくとも数学好きの方の中には素数好きは多いです。「ホテルの部屋番号が素数!だった!」とか、「AKB48の総選挙のさっしーの得票数が素数だ!」というようなツイートを見かけることがありますし、今年「素数大富豪*4」はメディアにも取り上げられ今まで数学を意識していなかった多くの方がその存在を知るところになりました。また、先日は素数姫さんが「素数に恋する女*5」という本を発売するなど数学界は素数の話題に事欠きません。

かく言う私も素数が好きです。居酒屋の靴箱の番号や駐輪場の駐車番号では必ず素数を探し、靴を入れ、自転車を止めています。アパートの部屋番号も301、素数です。

こんなツイートもしています。

数学者、数学好きの方が素数を愛する理由は様々なものが考えられますが、私が一番の理由と考えるものは「無秩序の中の秩序」という言葉で表せます。数学者は様々なものを観察し、そこから共通のパターンを抽出し、一般化、抽象化して強力な理論を組み立てます。そういった意味で数学者はパターンを探す天才です。そして古くから知られている対象であるのに数学者がそのパターンを見出せない存在、それが素数なのです。

素数は多くの天才数学者からの「お前を制御したい」というアプローチをひょいとかわします。それほど素数は無秩序です。しかし無秩序であると考えられてきた素数が、実はある側面では驚くべき秩序を兼ね備えていることを数学者達は歴史を通して発見してきました。ここでは私が特に「秩序ってるなぁ」と思う3つの数式、定理を言葉だけで簡単に紹介します。(わからなくても本記事には関係ないので気にしないでください)


f:id:mattyuu:20170327004719j:plain

これほどまでの驚くべき秩序を兼ね備えながら、今の所出現が予測できない無秩序な素数、、、やばいですよね。。。

素数コレクター!」概説

というわけで、まとめると数学好きの方は街中で素数を探してしまうんです(少なくとも一人はいます。私です。)。でも街中の素数との出会いは一期一会。わざわざどこでどんな素数に出会ったかなんてめんどくさくて記録できません。それでも素数との出会いを大切にしたい。。。悩める日々の中で私が思いついた解決策、それが「素数コレクター!」の開発でした!

ジャジャーン!
f:id:mattyuu:20170327012539j:plain
(トップページの画面右下くまさんの顔をタップすると次の画面に進みます。#BAD_UI)

素数コレクター!」は私が開発したAndroidアプリです*6。このアプリは、街中で撮った写真から素数を自動で抽出し、自分だけの素数図鑑に登録してくれます。素数との出会い日記帳を作るイメージです。素数好きの方にとったら、まさに夢の素数アプリではないでしょうか。メイン機能としては「素数コレクト!」、「素数図鑑」、「ステータス」の3機能があります。次章から1つずつ紹介していきます。

素数コレクト!」機能

これがまさに「素数コレクター!」の肝となる機能です。トップページからの初期遷移時は下記のような画面になっています。

f:id:mattyuu:20170327012754j:plain

[画像選択]ボタンを押して過去にとった写真を選択する、もしくは[カメラ起動]ボタンを押して写真を撮ると、下図のように写真が画面に表示されます。(下の例は私が過去にRSA暗号について語った時のプレゼン資料をカメラで撮ったものになります。)

f:id:mattyuu:20170327012807j:plain

さあ、この状態で[素数コレクト!]ボタンを押しましょう。白黒のテキスト写真であれば数秒で、今回の例のようなカラフルな写真であれば10秒程度で素数抽出処理が完了し、下の図のように写真内の数と素数がそれぞれ抜き出されます!

f:id:mattyuu:20170327012818j:plain

確かに"5"、"29"と素数が抽出されていることがわかります。しかし"27"はどこにあるのでしょうか?実はわかりにくいですがこの画像ファイルの左上に"27.jpeg"というファイル名が表示されています。ここから"27"が抽出されたのです!なんかすごくないでしょうか?*7

とは言っても、この写真ファイルからテキスト情報を抜き出す処理はGoogleのWeb API*8を使っています。この処理の部分は私が開発したところではないことを明言しておきます。さすがGoogle様。貴方のおかげで「素数コレクター!」が作れました。ありがとうございます。

一点補足すると例えば"7253"という数字列があった時、「素数コレクター!」では"7"、"2"、"5"、"3"や"53"といった素数はコレクトせず、あくまで"7253"という素数のみをコレクトするようにしております。また"2,200円"と記載された広告を写真に撮ってコレクトした場合は、"2"と"200"を写真内の数字列として分けて取り込み、結果"2"が素数としてコレクトされます。

こうして抽出された素数"5"、"29"は素数図鑑に記録されます。次の章では「素数図鑑」機能を紹介します。

素数図鑑」機能

さて「素数コレクト!」画面で画面左部分を画面外から画面内にスワイプすると、下図のようにメニューがするーっと現れます。

f:id:mattyuu:20170327012831j:plain

ここから別の機能に遷移することができます。では「素数図鑑」メニューをタップして素数図鑑を見てみましょう。

f:id:mattyuu:20170327012840j:plain

素数図鑑」画面では今までに「素数コレクト!」機能で見つけた素数が登録されます。リスト形式になっておりスワイプすることでより大きな素数も見ることができます。

f:id:mattyuu:20170327012848j:plain

しかし、これでは見出しがあるだけで図鑑にはなっていませんね。安心してください、これでは終わりません。では今回見つけた"5"をタップしてみましょう。

f:id:mattyuu:20170327012900j:plain

なんと"5"の詳細ページに飛び、画面下部にはWikipediaのページが現れました!スワイプすることで"5"に関する様々な情報をWikipediaから学ぶ事ができます。

f:id:mattyuu:20170401081205j:plain

さて画面上部には"5"を今まで何個見つけたかも表示されています。そして、その横には[生息地確認]ボタンをいう気になるボタンがあります。早速タップしてみましょう。

f:id:mattyuu:20170327012933j:plain

なんとGoolge マップの画面が現れ、これまでに自分が"5"を見つけてきた場所にピンが打たれているではありませんか!これで"5"さんとの思い出の場所を覚える必要がなくなりますし、"5"さん以外の別の素数さんとの思い出と"5"さんとの思い出が混ざってしまって、"5"さんと微妙な関係になってしまう事も防げそうです。

、、、

というわけで、最後に「ステータス」機能を紹介します。

「ステータス」機能

「ステータス」機能は今までの機能とは違いとてもライトな機能になっており、次の1画面だけでボタン等の利用者が制御できる部品はありません。

f:id:mattyuu:20170327012924j:plain

ここではこれまでに見つけた、

をそれぞれ確認することができます。画面下部ではくまさんが貴方の素数コレクターとしてのレベルを教えてくれます。

しかし、レベルは素数のコレクト率(=全素数の種類に対する、集めた素数の種類の割合)で算出するようにしております。素数が無限個あることから、何億種類の素数を集めてもそのコレクト率が0%より大きくなることはありません。つまりみんないつまで経っても「見習い素数コレクター」です。素数の前ではみんな平等という勝手なコンセプトを打ち出しているのです。

以上で「素数コレクター!」全体を通しての機能説明を終えます。

ロマンティック成分

このプレゼンはロマ数ボーイズのために用意したものであることを思い出してください。ロマ数ボーイズではプレゼンターの方に、プレゼンにロマンティック成分を入れていただくように事前に頼んでおりました。当然私も「素数コレクター!」を使ったロマンティックなプレゼンをする必要があります。

ロマンティックを演出するために題材として選んだのは、、、、なんと山手線です!

JRの路線図などを見ると山手線は円であるようにデフォルメされていますが、実際はグニョグニョしており、実はハート形に見えなくないのです。

d.hatena.ne.jp

この山手線沿線で素数を探し、その素数の生息地がハート形になればこんなロマンティックなことはないのではないでしょうか。

ということで、山手線沿線で素数を集める旅に出ました。集める素数として選んだのは、自分が見習い素数コレクターであるということも加味して、一番難易度が低そうな"2"にしました。

自分で作ったアプリを片手に素数を集めに町に出る、、、、なんて幸せなことなんでしょう。有楽町でレンタサイクルを借り、反時計回りに山手線を回りながら素数"2"を探しました。


f:id:mattyuu:20170327004754j:plain

そして素数を探していると、縦書きの数字列も認識するという事実を発見しました。下の図は居酒屋の看板ですが、看板の右後方にひっそりと数字列が存在しています。その数字列が横方向、縦方向それぞれ認識されていることが分かるかと思います。さすがGoogle様です!

f:id:mattyuu:20170327004906j:plain

慣れない土地で道に迷ったり、自転車だったら歩道橋が使えず途方にくれたり、夜になって素数が見つけにくくなったり、雨が降ったり、寒かったり、、それなりに苦難をのり超え2日間で8時間をかけ"2"を集め、完成したのが次の"2"の生息地です!


ジャジャーン!
f:id:mattyuu:20170327010008p:plain

ハートのくぼみを顕著に出すために、途中山手線から離れている箇所もあります。また、時間と気力がなく品川の方までは下がれませんでした。細かい話は抜きにしても、これはどっからどう見てもハートじゃないでしょうか。

この素数"2"の生息地をプリントアウトして、高級指輪の箱に詰め、彼女に「君のためにこの大都会東京に素数でハートを描いたよ」と決め台詞を吐けば結婚間違いないでしょう*9

まさに、ロマンティック!!
f:id:mattyuu:20170327005122p:plain

余談にはなりますが、池袋、新宿の南側にそれぞれ素数砂漠 *10を見つけたことをご報告させていただきます。

f:id:mattyuu:20170401081244j:plain

さいごに

さいごに「素数コレクター!」の地域格差及び数学の力について語らせてください。

「都会は看板や建物が多いから素数がたくさんあっていいよね、、、僕の住んでる田舎は田んぼや畑ばっかりで素数なんてちっとも見つからないよ。これじゃポ◯モンGOと同じで地域格差が生まれちゃうよ」と嘆かれてる方もいるかも知れません。

しかし、本質は違うんです!この素数コレクターで集めているものは実は素数ではなく、人間が勝手に作った素数を表すただの記号(数字)の列なのです。本来素数はどこかにあるようなものではなく、また本来素数はどこにでもあるものなのです!

田舎でも紙とペンを用意して紙に"2"という記号を書けばそこに素数(と呼んでいる数字列)が現れます。その"2"を出発点として紙の上でペンを走らせれば、どこにもないはずの世界が、そしてまた驚くほど豊潤な世界がはっきりと広がっていくのです。これが数学の力なんです!都会は表向きは素数が溢れ、田舎には素数がないように思えてしまいますが、それはまやかしです。数学の世界は全ての存在に対して平等です。当然都会も田舎も全く関係なく平等なのです!

f:id:mattyuu:20170327015441j:plain

スペシャルサンクス

このハートマークを作るための素数集めの旅において街中のいろいろな方にお世話になりました。お世話になった方々へのお礼を記載して本記事を締めくくりたいと思います。お世話になったレベルの高い順にベスト3をランキング形式で掲載します。最後まで読んでいただきありがとうございました。

[第1位]テナントビルの階数表示さん

f:id:mattyuu:20170327005215j:plain

そろそろ素数が欲しいと思った時、周りを見渡せば貴方がいてくれました。テナントビルは普通二階以上あるので簡単に"2"を集めることができました。本当にありがとうございました。

[第2位]電信柱の住所表示標識さん

f:id:mattyuu:20170327005228j:plain

例えば何処かの街の二丁目に差し掛かると、出会う貴方は皆"2"を持っていました。ハート形のくぼみのところの"2"を集める時は大変お世話になりました。ありがとうございました。季節の変わり目ですので、くれぐれもお体に気を付けてこれからも頑張って下さい。

[第3位]建築計画さん

f:id:mattyuu:20170327005239j:plain

上位2名の方に比べたら出会う機会は少なかったですが、貴方にはたくさんの文字列が書いてあります。探せば大抵そこには"2"もあり、貴方は特別な安心感を与えてくれました。ありがとうございました*11

ちなみにお世話になったランキング第4位は賃貸アパマンの広告さんでした。写真は載せませんが、ありがとうございました。

f:id:mattyuu:20170401081305j:plain

*1:和から株式会社様主催の公式の「ロマンティック数学ナイト」に対して、個人で勝手に企画したイベントですので【非公式】としております。名称を使う許可は頂いています。同日同時間帯に公式のロマンティック数学ナイトガールズが開催されておりました。

*2:2017.4.3追記 もっちょさんがtogetterしてくださったので、こちらで当日の雰囲気がバッチリわかります。https://togetter.com/li/1096657

*3:mattyuu.hatenadiary.com

*4:下記が素数大富豪の考案者せきゅーん氏の素数大富豪のまとめサイトになります。 integers.hatenablog.com

*5:私も持ってます!

素数姫の素数入門

素数姫の素数入門

*6:いつかGoogle play ストアに公開したいです!が、今のところいつになるかわかりません。自分が趣味で作ったアプリが何かの間違いで第三者のAndroidを壊してしまう、といった恐怖もありますし、作り込みが甘いところがあったり、現状ソースが汚かったりすることも理由です(APIの結果のjsonをオブジェクトではなく文字列として扱っているところ、数の抜き出しを正規表現ではなく、ゴリゴリで行っているところなど。自分でソースが汚い、作り込みが甘いと認識できているだけマシとは思いますが。。)。有識者の方にレビューをいただきながらしっかり完成させ公開したいです。

*7:しかし当然ながら素数の抜き出しに100%成功するわけではありません。どんな写真を撮るかで成功率は大きく上下しますが、私が素数を抜き出すために撮った(それなりにちゃんと素数が写っている)写真での成功率は80〜90%くらいという感覚です。大抵撮り直せばちゃんと取り込まれます。取り込まれないものはどんだけ写真を撮っても取り込まれませんでした。この辺りはGoolge様のAPIの進歩で改善していくのではないかと思います。

*8:こちらのCLOUD VISION APIOCR機能になります。 cloud.google.com

*9:同じようなプロポーズネタを以前の有限体上の楕円曲線のオチとして書いたので、まだ読まれてない方は是非読んでみてください。 mattyuu.hatenadiary.com

*10:2,3,5,7,11,13,,,と素数は無秩序に無限に出現しますが、しばらく素数が出現しない区間素数砂漠と呼んでおります。実は任意の長さの区間からなる素数砂漠が存在することを中学、高校レベルの数学で簡単に示すことができます。

*11:建築計画の写真を撮る私の姿はあまりにシュールで、周りの方々に建築オタクと思われてしまった可能性があります。建築オタクではなく数学オタクですのでそこんとこよろしくお願いします。

有限体Fp上の楕円曲線'のパズル

はじめに

先日職場の勉強会でRSA暗号楕円曲線暗号について発表をしました。面白いことに話の全体を通してフェルマー(17世紀のフランスのアマチュア数学者)が登場しました。

フェルマーパスカルと共に確率論を創始するなど、上記の暗号関連の話以外にも重要な仕事を行なっております。フェルマーは17世紀の人ですが、現代社会の根っこの部分に彼が与えた、与えている影響は大きそうです。ただ、今回はこれ以上フェルマーの話はしません。勉強会の資料作成を通して、有限体上の楕円曲線を可視化したのですが(←グラフ書いただけですが)、可視化した楕円曲線を眺めたり、いじったりしているうちに、「パズルとして売り出せるんじゃない?」というような面白い性質を見つけたのでその紹介をしたいと思います。

まず、楕円曲線とは下記で定義されます。

楕円曲線の定義

abを定数とし、方程式
\displaystyle
y^2=x^3+ax+b
を満たす(x,y)全体の集合(←グラフと呼ぶ)を楕円曲線という。

注1:この記事では上記の一般形を得るために、標数が2、3以外の体K上で考えています。abKの元です。
注2:(右辺のxの3次式)=0は重解を持たないものとします。

中学校や高校で習う関数のグラフは、実数体(\mathbb R)という足し算、引き算、掛け算、割り算ができる世界*1の上で考えています。実数上で楕円曲線のグラフを描くと、例えば下記の図のようになります。

a=1b=1の場合

f:id:mattyuu:20170129155536p:plain

a=-1b=0の場合

f:id:mattyuu:20170129155547p:plain

2つ目のy^2=x^3-x (a=-1b=0)の例でグラフの描き方を簡単に説明します。

x=1のときは、y^2=0となりますからy=0です。(x,y)=(1,0)に赤い点を描きます。同様にx=0-1のときもy=0となるので、(x,y)=(0,0)(-1,0)にも赤い点を描きます。

x=2のときは、y^2=6となるので、y=\pm\sqrt{6}です。(x,y)=(2,\sqrt{6})(2,-\sqrt{6})に赤い点を描きます。先程と違い、1つのxに対して2つのyが対応しました。

x=1/2のときは、y^2=-3/8となるので、これを満たす実数yは存在しません。そのため実数上のグラフではx=1/2のときは描く点はありません。

x-\inftyから\inftyまで動かしながら、各xに対して方程式を満たすyを同様に求めて(x,y)に点を描いていくと、先程の2つ目のグラフになるのです。

有限体{\mathbb F}_p上の楕円曲線

楕円曲線暗号では、楕円曲線実数体(\mathbb R)上ではなく、有限体{\mathbb F}_p上で考えます。有限体{\mathbb F}_pが何かわからない方は以前書いた下記の記事を読んでみてください。

mattyuu.hatenadiary.com

{\mathbb F}_pは簡単に言えば集合\{0,1,2,\cdots,p-1\}に適切に足し算、引き算、掛け算、割り算を定義した世界になります。今回の記事では足し算と、掛け算しか使わないため、例として{\mathbb F}_5の足し算表、掛け算表を載せておきます。

足し算表

+ 0 1 2 3 4
0 0 1 2 3 4
1 1 2 3 4 0
2 2 3 4 0 1
3 3 4 0 1 2
4 4 0 1 2 3

掛け算表

× 0 1 2 3 4
0 0 0 0 0 0
1 0 1 2 3 4
2 0 2 4 1 3
3 0 3 1 4 2
4 0 4 3 2 1

有限体{\mathbb F}_pの復習が終わりましたので、実際に{\mathbb F}_p上の楕円曲線を描いてみましょう。ここでは例としてp=5a=1b=1とします。

f:id:mattyuu:20170129155625j:plain

楕円曲線というのに、グラフは繋がってないし、曲がった感じもしませんが、楕円曲線の定義に反してませんし、描き方も実数体上の時と全く一緒です。実数体では-\inftyから\inftyまでの無限個のxに対して、yを求めないとグラフは描けませんでしたが、有限体{\mathbb F}_p上ではp個のxに対してyを求めればよいことが本質的に異なります。

では実際に上のグラフがy^2=x^3+x+1のグラフになっていることを確認してみましょう。

x=0のとき、y^2=1となるので、2乗して1になる数求めればよいことになります。{\mathbb F}_5上では0^2=01^2=12^2=43^2=44^2=1より、x=0のときはy=14となります。よって(x,y)=(0,1)(0,4)のマスにピンク色を塗っております。

同様に例えばx=4のとき、y^2=4となります。{\mathbb F}_5上では2^2=43^2=4より、(x,y)=(4,2)(4,3)のマスにピンク色を塗ります。

様子が違うのはx=1のときです。このときy^2=3となりますが、{\mathbb F}_5上では2乗して3になる数は存在しません。そのためx=1の縦列のセルにはピンク色に塗るセルはありません。これは先述した実数体上の楕円曲線の例で、y^2=-3/8の解が存在せず描く点がなかったことと同じです。

今回有限体上の楕円曲線javascriptでプログラムを作って描画しています。プログラムの良いところは一回プログラムを作ってしまえばパラメータ(ここではpab)を変えたグラフも容易に描画できることです。手計算、手描きでグラフを作成すると、パラメータを変えるごとに改めて計算を行う必要があります。またpを大きくすると計算自体が大変になります。

さあプログラムの利点を活かして{\mathbb F}_5上の楕円曲線'を全て描画してみましょう。abはそれぞれ\{0,1,2,3,4\}の5通りから選ぶことができるので、全部で25通りの楕円曲線'が得られます。

{\mathbb F}_5上の楕円曲線'たち
f:id:mattyuu:20170129155643p:plain

p=23にしても描けます!
{\mathbb F}_{23}上の楕円曲線'たち(出力結果を一部抜粋、実際には23^2=529通りの楕円曲線'が現れます。)
f:id:mattyuu:20170129155655p:plain

はぁはぁ、、楽しい。。

ここで一点白状します。上記には楕円曲線以外のグラフも含まれています。楕円曲線の定義の注2で記載しましたが、y^2=x^3+ax+bの右辺のxの3次式について、(右辺のxの3次式)=0という方程式を作ると、この方程式は重解を持たないという前提があります。例えば{\mathbb F}_5上ではx^3+2x+2=(x-1)^2(x-3)となり、重解を持ってしまうので、{\mathbb F}_5上でy^2=x^3+2x+2楕円曲線ではありません。

しかし、今回考えたパズルは全てのabを対象にしないと成立しません。誠に情けないですが楕円曲線の集合に、楕円曲線とは言ってはいけない{\mathbb F}_5上のy^2=x^3+2x+2といった曲線も追加して楕円曲線'という名前で広い範囲の集合を考えます。

気づいた性質

さて、楕円曲線'のグラフを並べてみると気づくことがあります。それはpaを固定して、b0からp-1まで動かしたp個のグラフを重ね合わせると全マスがちょうど1回ずつピンク色に塗られるのです!

言葉だけではわからないと思いますので、つまりこういうことです。
f:id:mattyuu:20170129155713j:plain

つまり、こういうことです。
f:id:mattyuu:20170129155805g:plain

つまり、こういうことです。
f:id:mattyuu:20170129155831g:plain

最後の例ではピンク色の部分はセロハンのような素材と思ってください。セロハンを重ねるごとにピンク色が濃くなります。aが同じ値の時は各セルが足並みをそろえて濃くなっていく様子が確認できます。

p=23でも、綺麗に成り立ちます。(ファイルサイズが大きくなってしまうので、アニメは途中で止めています。)
f:id:mattyuu:20170129155851g:plain

はぁはぁ、、面白い。。

p=97とか、p=691とかもっと大きい素数では楕円曲線'のグラフもより複雑になります。複雑なグラフがp個あり、それを重ね合わせると綺麗なピンク一色!何かに役立つわけではないですが、数学の力を感じさせられます!

この性質が成り立つ証明は超簡単です。残念ながらこの性質は楕円曲線ではない方程式でも成り立ちますし、もっと言えば体{\mathbb F}_p上じゃなく剰余類環{\mathbb Z}_n上でも成り立ちます。

証明

{\mathbb F}_p上の楕円曲線':y^2=x^3+ax+bに対してa=a_0\in {\mathbb F}_pを1つ固定する。この時、下記2点を示せばよい。

  1. \forall (x_0,y_0) \in {\mathbb F}_p \times {\mathbb F}_pに対して、\exists b_0 \in {\mathbb F}_p{y_0}^2={x_0}^3+a_0x_0+b_0となる。
  2. b_0\ne b_1 \in {\mathbb F}_pのとき、y^2=x^3+a_0x+b_0y^2=x^3+a_0x+b_1は共通の解を持たない。
  • 1の証明:b_0={y_0}^2-{x_0}^3-a_0x_0とすればよい。
  • 2の証明:(x_0,y_0)が共通の解とすると、{y_0}^2={x_0}^3+a_0x_0+b_0{y_0}^2={x_0}^3+a_0x_0+b_1がそれぞれ成り立つ。辺々を引くと、b_0=b_1となり、これは前提に矛盾。

証明はいかにも当たり前ですが、可視化してみないと気づかなかった性質なので、満足感はあります。

応用例

楕円曲線'に関して面白い性質を見つけたので、何か応用したくあります。

まずは、大人向けのパズルとして活躍の余地はないでしょうか。p=5のときは、25種類の楕円曲線'が描かれたカードを用意します。色が塗られていない部分は透過するようにしたいためアクリル板で作成しましょう。25枚のカードから適切に5枚ずつ選んで、それぞれの組で各カードを適切に回転、反転させて重ね合わせることで、ピンク一色のカードの組が5セットできたら成功です。*2

f:id:mattyuu:20170129155916j:plain

p=5が余裕でできるようになったら、p=7p=11と難易度を上げていけば素数の数だけ楽しめます!

次に思いつくのは子供向けの絵合せパズルです。2〜3歳の時はaを固定して、5枚のカードでくまさんの絵合せをしましょう。

f:id:mattyuu:20170129155959g:plain

幼稚園に行きだしたら、ゴレンジャーを題材にしましょう。この頃になると25枚あっても大丈夫なはずです。

f:id:mattyuu:20170129160032g:plain

このように子供の時から素数楕円曲線'に慣れ親しみ純粋に育った男の子は、プロポーズにもメッセージカードと称して楕円曲線'カードを使用してしまう恐れがあります。

f:id:mattyuu:20170129160100g:plain

おまけ

今回は有限体上の楕円曲線を可視化しました(←グラフ書いただけ)。可視化すると楕円曲線の方程式を満たす解の個数も一目瞭然ですが、この解の個数がフェルマーの最終定理の証明に深く関係しています。また、この解の個数はハッセ・ヴェイユ境界と呼ばれる、より高度な数学にも関連しています。私はステートメントはなんとなくわかるレベルです。

今回楕円曲線とは何かということに関しては何も触れていません。楕円曲線google検索すると、やはりtsujimotterさんの記事がwikipediaの次に出てきましたので、ここにも貼り付けておきます。楕円曲線の面白いネタがたくさん書かれています。興味がある方は一緒に楕円曲線の勉強をしましょう。
tsujimotter-sub.hatenablog.com

ついでながら、今回ゴレンジャーのアニメはjavascriptcanvasで作成したのですが、画像を回転させるのにこれまたtsujimotterさんの下記の記事が大変役に立ちました。原点を中心としてcanvas全体を回転させるのは簡単にできるのですが、画像を中心として、その画像だけを回転させる方法はネットで調べてもよくわからず、ネットサーフィンを続けているうちに下記の記事に行き着きました。参考にこちらも貼り付けておきます。

tsujimotter.hatenablog.com

f:id:mattyuu:20170129160143j:plain

*1:数学的には四則ができる世界を体(たい)と呼ぶ

*2:このパズルを売り出すためには解の一意性を証明しておく必要があります。