オイラーの等式を可視化してみた話

　はじめまして、[りょーつ](https://twitter.com/Gomachan_2021)といいます。高専出身の大学院1年生です。ロボットや数学に関する記事を書いています。
　記事の内容が少し長くなってしまったので、コスパよく結論を知りたい方は「6章 おわりに」を読んでください。

# 目次
[1.はじめに](#1-はじめに)
[2.オイラーの等式](#2-オイラーの等式)
[3.ネイピア数eの定義](#3-ネイピア数eの定義)
[4.二項定理による展開](#4-二項定理による展開)
[5.可視化実験](#5-可視化実験)
[6.おわりに](#6-おわりに)

# 1. はじめに
　この記事は「オイラーの等式」を可視化することを目的としています。ただし、$e^{i \theta}$を三角関数に分解し、単位円を使って表示する文献は調べればいくらでも出てくるので、本記事では別の手法を使って「オイラーの等式」を可視化しようと思います。
　本記事は高専2年生までの数学の知識を必要とします。
 
# 2. オイラーの等式
　オイラーの等式はとっても有名な等式で、以下に示すような見た目をしています。
```math
1 + e^{i\pi} = 0
\tag{1}
```
とてもシンプルですが、この式は非常に不思議な意味を持っています。数学でよく出てくる円周率$\pi$、ネイピア数$e$、虚数$i$が組み合わさったものに実数$1$を足すとゼロになると言っているのです。数学者が好きそうな匂いがプンプンします。
　
# 3. ネイピア数eの定義
　ここではオイラーの等式とネイピア数$e$の定義の関係を示します。まずはネイピア数$e$の定義を確認しましょう。ネイピア数$e$は以下に示す極限で定義されます。
```math
e 
= 
\lim_{n\to 0} \left(1+n\right)^\dfrac{1}{n}
=
\lim_{n\to \infty} \left(1+\dfrac{1}{n}\right)^n
\tag{2}
```
数学の教科書とかにも載っていると思います。では(2)式をもとに、$e^z$について考えてみましょう。$z$は複素数です。$e^z$はネイピア数$e$の$z$個の積なので、以下のように表現できます。
```math
e^z 
= 
\Bigg( \lim_{n\to 0} \left(1+n\right)^\dfrac{1}{n} \Bigg)^z 
= 
\lim_{n\to 0} \left(1 + n\right)^\dfrac{z}{n}
\tag{3}
```
ここで少しややこしい変形ですが、$t = \dfrac{n}{z}$とおいて以下の変形を考えてみます。
```math
\lim_{n\to 0} \left(1 + n\right)^\dfrac{z}{n}
=
\lim_{n\to 0} \left(1 + z \times \dfrac{n}{z}\right)^\dfrac{z}{n}
=
\lim_{t\to 0} \left(1 + zt\right)^\dfrac{1}{t}
=
\lim_{t\to \infty} \left(1 + \dfrac{z}{t}\right)^t
\tag{4}
```
(4)式を(3)式に適用すると
```math
e^z 
= 
\lim_{t\to \infty} \left(1 + \dfrac{z}{t}\right)^t
\tag{5}
```
という関係が得られます。ここで$z$は複素数なので
```math
z 
= 
i\pi
\tag{6}
```
とすれば、
```math
e^{i\pi} 
= 
\lim_{t\to \infty} \left(1 + \dfrac{i\pi}{t}\right)^t
\tag{7}
```
という式が得られます。
　(7)式はオイラーの等式の一部なので、(1)式に代入するとオイラーの等式が極限を用いて記述できます!
```math 
1 + \lim_{t\to \infty} \left(1 + \dfrac{i\pi}{t}\right)^t
=
0
\tag{8}
```

# 4. 二項定理による展開
　3章では(1)式のオイラーの等式が、(8)式のような極限の形で記述できることを示しました。では、本当にこれが成り立つのかを検証していきます。極限が求まればよいので、$t$を自然数とみなして左辺を地道に計算してみましょう。
　$t = 1$のとき、
```math 
左辺
=
1 + 1 + i\pi 
\tag{9}
```
$t = 2$のとき、
```math 
左辺
=
1 + \left(1 + \dfrac{i\pi}{2}\right)^2 
=
1 + 1 + 2i\Big(\dfrac{\pi}{2}\Big) -\Big(\dfrac{\pi}{2}\Big)^2
=
1 + \left(1 - \Big(\dfrac{\pi}{2}\Big)^2 \right) + i2\Big(\dfrac{\pi}{2}\Big)
\tag{10}
```
$t = 3$のとき、
```math 
左辺
=
1 + \left(1 + \dfrac{i\pi}{3}\right)^3 
=
1 + 1 + 3i\Big(\dfrac{\pi}{3}\Big) -3\Big(\dfrac{\pi}{3}\Big)^2 -i\Big(\dfrac{\pi}{3}\Big)^3
=
1 + \left(1 - 3\Big(\dfrac{\pi}{3}\Big)^2\right) + i\left(3\Big(\dfrac{\pi}{3}\Big) - \Big(\dfrac{\pi}{3}\Big)^3 \right)
\tag{11}
```
$t = 4$のとき、
```math 
左辺
=
1 + \left(1 + \dfrac{i\pi}{4}\right)^4 
=
1 + 1 + 4i\Big(\dfrac{\pi}{4}\Big) -6\Big(\dfrac{\pi}{4}\Big)^2 -4i\Big(\dfrac{\pi}{4}\Big)^3 + \Big(\dfrac{\pi}{4}\Big)^4
=
1 + \left(1-6\Big(\dfrac{\pi}{4}\Big)^2 + \Big(\dfrac{\pi}{4}\Big)^4 \right) + i\left(4\Big(\dfrac{\pi}{4}\Big) -4\Big(\dfrac{\pi}{4}\Big)^3\right)
\tag{12}
```
なんとなく傾向が見えてきたのではないでしょうか？交互に虚数が表れていますね。では$t = N$のときを考えてみましょう。この場合、左辺は二項定理を使って展開されます。
```math 
左辺
=
1 + \left(1 + \dfrac{i\pi}{N}\right)^N 
=
1 + \sum_{k=1}^N {}_n C_k \Big(\dfrac{i\pi}{N}\Big)^k
\tag{13}
```
ここで(9)～(12)式に注目すると、$N$が奇数の時と偶数の時で式が若干変わることが分かります。場合わけをしてみましょう。
　まずは$N$が奇数の場合を考えます。奇数なので$N = 2M + 1$としてみましょう。Mは0以上の整数です。(9)式は$M=0$の場合、(11)式は$M = 1$の場合と言えます。(9)、(11)式のノリを引き継いで(13)式を分解すると以下のような関係式が得られます。
```math 
1 + \left(1 + \dfrac{i\pi}{N}\right)^{N}
=
1
+ 
\sum_{k=1}^{M} {}_{N} C_{2k} (-1)^k\Big(\dfrac{i\pi}{N}\Big)^{2k}
+
i\sum_{k=1}^{M} {}_{N} C_{2k+1} (-1)^k\Big(\dfrac{i\pi}{N}\Big)^{2k+1}
\tag{14}
```
(14)式において$N = 2M + 1$であることに注意してください。
　同様に$N$が偶数の場合を考えてみましょう。奇数なので$N = 2(M + 1)$と置きます。Mは先ほどと同様に0以上の整数です。(10)式は$M=0$の場合、(12)式は$M = 1$の場合と言えます。(10)、(12)式のノリを引き継いで(13)式を分解すると以下のような関係式が得られます。
```math 
1 + \left(1 + \dfrac{i\pi}{N}\right)^{N}
=
1
+
\sum_{k=1}^{M+1} {}_{N} C_{2k} (-1)^k\Big(\dfrac{i\pi}{N}\Big)^{2k}
+
i\sum_{k=1}^{M} {}_{N} C_{2k+1} (-1)^k\Big(\dfrac{i\pi}{N}\Big)^{2k+1}
\tag{15}
```
おなじく(15)式において$N = 2(M + 1)$であることに注意してください。

# 5. 可視化実験
　4章ではオイラーの等式の左辺を級数で表現することができました。ここでは級数が収束していく様子を示し、極限では(13)式の左辺が0に収束することを確認します。
　手計算は大変なので、(14)、(15)式を計算し、(13)式の右辺の実数成分と虚数成分を表示するプログラムをC言語で書きました。実行すると、$t$の値と、それに対応するオイラーの等式の左辺が表示されます。以下のプログラムでは$t=0～500$の範囲で計算するようになっています。実行環境は以下のリンクを踏んだ先にあるブラウザ上のものを使用しました。(https://9cguide.appspot.com/web_picoc_em.html)
```php
#include <stdio.h>
#include <math.h>

//set parameters///////////////////////////////////////////////////////////////////////////
int N = 500;              //set N

int M = 0;
double theta = M_PI;    //set theta = pi
int even_flag = 0;      //N = odd → 0, N = even → 1

double Re = 2;
double Re_element = 1;
double Im = 0;
double Im_element = 0;

//main function/////////////////////////////////////////////////////////////////////////////
int main(){
    
    for(int t = 1; t < N + 1;t++){

        //judge N = odd or even-------------------------------------------------------
        if(t%2) {
            M = (t - 1)/2;
            even_flag = 0;
        }else{
            M = t/2 - 1;
            even_flag = 1;
        }

        //calculate Re----------------------------------------------------------------
        Re = 2;
        Re_element = 1;
        for(int k = 1;k < M + 1 + even_flag;k++){
            Re_element *= -(t - 2*k + 2)*(t - 2*k + 1)*(theta/t)*(theta/t)/(2*k)/(2*k - 1);
            Re += Re_element;
        }

        //calculate Im-----------------------------------------------------------------
        Im = theta;
        Im_element = theta;
        for(int k = 1;k < M + 1;k++){
            Im_element *= -(t - 2*k + 1)*(t - 2*k)*(theta/t)*(theta/t)/(2*k)/(2*k + 1);
            Im += Im_element;
        }

        //print result-----------------------------------------------------------------
        printf("t = %d: 1 + e^{ipi} = %.2f + i%.2f\n", t, Re, Im);
    }
    return 0;
}
```
上記のプログラムの実行結果は以下のようになります。
```
t = 1: 1 + e^{ipi} = 2.00 + i3.14
t = 2: 1 + e^{ipi} = -0.47 + i3.14
t = 3: 1 + e^{ipi} = -1.29 + i1.99
・
・
・
t = 499: 1 + e^{ipi} = -0.01 + i0.00
t = 500: 1 + e^{ipi} = -0.01 + i0.00
```
各$t$の値におけるオイラーの等式の左辺が得られたので、グラフにしてみました。横軸を実軸、縦軸を虚軸として、上記の結果をプロットしたものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031572/49055ecd-e8b8-d12b-15e0-2fbc5e517e86.png)

図1　(8)式の級数で表現されるオイラーの等式の左辺が0に収束する様子

図1から、$t \to \infty$の極限で(8)式の左辺が0に収束することが分かります。ということは(1)式はやっぱり正しいですね。オイラーさんすごいです。

# 6. おわりに
　本記事ではオイラーの等式が(1)式で表される等式であり、(1)式の左辺がネイピア数$e$の定義をもとに(8)式に示す極限の形で書き表せることを示しました。そして実際に(8)式の左辺が0に収束していく様子を表したのが図1であり、オイラーの等式がなりたつことを視覚的に確かめました。
　可視化はできたものの、あらためて不思議な式だなあと思います。最後まで読んでくださりありがとうございました。