【Python演算】オイラーの公式と等比数列④「中学生には難しいが高校生なら気付くレベル」？

(2021.01.19までの更新分)Rによる執筆部
(2021.03.11以降の更新分)pythonとtex使用開始


この機会に以下の投稿で得てきた知見をまとめます。
[【Rで球面幾何学】指数関数や対数関数における「ネイピア数周期」の意味について。](https://qiita.com/ochimusha01/items/bebb9eb56346f57ff651)
[【初心者向け】指数・対数関数の発見とそれ以降の発展について。](https://qiita.com/ochimusha01/items/3e28f4f06abd8cef0af1)

ポイントとなるのはこの考え方ですね。
[【初心者向け】三角関数と指数・対数関数の「巡回性」について。](https://qiita.com/ochimusha01/items/61d8cfa89dc078cbe472)

>**三角関数**の微分（<font color=blue>それぞれが-90度の変遷に対応</font>）

```math
\cos(θ)\frac{d^n}{dθ^n}=(-\sin(θ),-\cos(θ),\sin(θ),\cos(θ),…)\\
\sin(θ)\frac{d^n}{dθ^n}=(\cos(θ),-\sin(θ),-\cos(θ),\sin(θ),…)
```

>**三角関数**の積分（<font color=blue>それぞれが+90度の変遷に対応</font>）

```math
\int \int \int … \int \cos(θ)(dθ)=(\sin(θ),-\cos(θ),-\sin(θ),\cos(θ),…)\\
\int \int \int … \int \sin(θ)(dθ)=(-\cos(θ),-\sin(θ),\cos(θ),\sin(θ),…)
```
>**円描画関数**$e^{θi}=\cos(θ)+\sin(θ)$の微分（<font color=blue>それぞれが-90度の変遷に対応</font>）

```math
(\cos(θ)+\sin(θ)i)\frac{d^n}{dθ^n}=(-\sin(θ)+\cos(θ)i,-(\cos(θ)+\sin(θ)i),-(-\sin(θ)+\cos(θ)i),\cos(θ)+\sin(θ)i,…)\\
e^{ix}\frac{d^n}{dθ^n}=(i e^{i x}(-\log θi),-e^{ix},-i e^{i x}(\log θi),e^{ix},…)
```

>**円描画関数**$e^{θi}=\cos(θ)+\sin(θ)$の積分（<font color=blue>それぞれが+90度の変遷に対応</font>）

```math
\int \int \int … \int (\cos(θ)+\sin(θ)i)(dθ)=(-(-\sin(θ)+\cos(θ)i),-(\cos(θ)+\sin(θ)i),-\sin(θ)+\cos(θ)i,\cos(θ)+\sin(θ)i,…)\\
\int \int \int … \int e^{ix}(dθ)=(- i e^{i x}(\log θi),- e^{i x},i e^{i x}(-\log θi),e^{ix},…)
```
###pythonによる検証結果

* $\cos(θ)$の場合

```math
\cos(θ)\frac{d^n}{dθ^n}=(-\sin(θ),-\cos(θ),\sin(θ),\cos(θ),…)\\
\int \int \int … \int \cos(θ)(dθ)=(\sin(θ),-\cos(θ),-\sin(θ),\cos(θ),…)
```

```python
import sympy as sp
x = sp.symbols('x', real=True)
Org=sp.cos(x)
Dif1=sp.diff(Org,x,1)
Dif2=sp.diff(Org,x,2)
Dif3=sp.diff(Org,x,3)
Dif4=sp.diff(Org,x,4)
Int1=sp.integrate(Org,x)
Int2=sp.integrate(Int1,x)
Int3=sp.integrate(Int2,x)
Int4=sp.integrate(Int3,x)
sp.init_printing()
display(Org) 
print(sp.latex(Org))
display(Dif1) 
print(sp.latex(Dif1))
display(Dif2) 
print(sp.latex(Dif2))
display(Dif3) 
print(sp.latex(Dif3))
display(Dif4) 
print(sp.latex(Dif4))
display(Int1) 
print(sp.latex(Int1))
display(Int2) 
print(sp.latex(Int2))
display(Int3) 
print(sp.latex(Int3))
display(Int4) 
print(sp.latex(Int4))
```
原関数

```math
\cos{\left(x \right)}
```
1階微分

```math
- \sin{\left(x \right)}
```
2階微分

```math
- \cos{\left(x \right)}
```
3階微分

```math
\sin{\left(x \right)}
```
4階微分(1周)

```math
\cos{\left(x \right)}
```
1階積分

```math
\sin{\left(x \right)}
```
2階積分

```math
- \cos{\left(x \right)}
```
3階積分

```math
- \sin{\left(x \right)}
```
4階積分(1周)

```math
\cos{\left(x \right)}
```
* $\sin(θ)$の場合

```math
\sin(θ)\frac{d^n}{dθ^n}=(\cos(θ),-\sin(θ),-\cos(θ),\sin(θ),…)\\
\int \int \int … \int \sin(θ)(dθ)=(-\cos(θ),-\sin(θ),\cos(θ),\sin(θ),…)
```

```python
import sympy as sp
x = sp.symbols('x', real=True)
Org=sp.sin(x)
Dif1=sp.diff(Org,x,1)
Dif2=sp.diff(Org,x,2)
Dif3=sp.diff(Org,x,3)
Dif4=sp.diff(Org,x,4)
Int1=sp.integrate(Org,x)
Int2=sp.integrate(Int1,x)
Int3=sp.integrate(Int2,x)
Int4=sp.integrate(Int3,x)
sp.init_printing()
display(Org) 
print(sp.latex(Org))
display(Dif1) 
print(sp.latex(Dif1))
display(Dif2) 
print(sp.latex(Dif2))
display(Dif3) 
print(sp.latex(Dif3))
display(Dif4) 
print(sp.latex(Dif4))
display(Int1) 
print(sp.latex(Int1))
display(Int2) 
print(sp.latex(Int2))
display(Int3) 
print(sp.latex(Int3))
display(Int4) 
print(sp.latex(Int4))
```
原関数

```math
\sin{\left(x \right)}
```
1階微分

```math
\cos{\left(x \right)}
```
2階微分

```math
- \sin{\left(x \right)}
```
3階微分

```math
- \cos{\left(x \right)}
```
4階微分(1周)

```math
\sin{\left(x \right)}
```
1階積分

```math
- \cos{\left(x \right)}
```
2階積分

```math
\sin{\left(x \right)}
```
3階積分

```math
\cos{\left(x \right)}
```
4階積分(1周)

```math
\sin{\left(x \right)}
```

* $e^{iθ}=\cos(θ)+\sin(θ)i$の場合

```math
(\cos(θ)+\sin(θ)i)\frac{d^n}{dθ^n}=(-\sin(θ)+\cos(θ)i,-(\cos(θ)+\sin(θ)i),-(-\sin(θ)+\cos(θ)i),\cos(θ)+\sin(θ)i,…)\\
\int \int \int … \int (\cos(θ)+\sin(θ)i)(dθ)=(-(-\sin(θ)+\cos(θ)i),-(\cos(θ)+\sin(θ)i),-\sin(θ)+\cos(θ)i,\cos(θ)+\sin(θ)i,…)\\
e^{ix}\frac{d^n}{dθ^n}=(i e^{i x}(-\log θi),-e^{ix},-i e^{i x}(\log θi),e^{ix},…)\\
\int \int \int … \int e^{ix}(dθ)=(- i e^{i x}(\log θi),- e^{i x},i e^{i x}(-\log θi),e^{ix},…)

```

```python
import sympy as sp
x = sp.symbols('x', real=True)
Org=sp.cos(x)+sp.sin(x)*sp.I
Dif1=sp.diff(Org,x,1)
Dif2=sp.diff(Org,x,2)
Dif3=sp.diff(Org,x,3)
Dif4=sp.diff(Org,x,4)
Int1=sp.integrate(Org,x)
Int2=sp.integrate(Int1,x)
Int3=sp.integrate(Int2,x)
Int4=sp.integrate(Int3,x)
sp.init_printing()
display(Org) 
print(sp.latex(Org))
display(Dif1) 
print(sp.latex(Dif1))
display(Dif2) 
print(sp.latex(Dif2))
display(Dif3) 
print(sp.latex(Dif3))
display(Dif4) 
print(sp.latex(Dif4))
display(Int1) 
print(sp.latex(Int1))
display(Int2) 
print(sp.latex(Int2))
display(Int3) 
print(sp.latex(Int3))
display(Int4) 
print(sp.latex(Int4))
```
原関数

```math
i \sin{\left(x \right)} + \cos{\left(x \right)}
```
1階微分

```math
- \sin{\left(x \right)} + i \cos{\left(x \right)}
```
2階微分

```math
- (i \sin{\left(x \right)} + \cos{\left(x \right)})
```
3階微分

```math
\sin{\left(x \right)} - i \cos{\left(x \right)}
```
4階微分(1周)

```math
 \sin{\left(x \right)} + \cos{\left(x \right)}
```
1階積分

```math
- i e^{i x}
```
2階積分

```math
- e^{i x}
```
3階積分

```math
i e^{i x}
```
4階積分(1周)

```math
e^{i x}
```

すなわち微積分概念の導入により、**円描画関数**$e^{θi}=\cos(θ)+\sin(θ)i$は以下の4態の集合に拡張されるのです。

#三角関数と自然指数・対数関数の巡回性

###元関数(<font color=blue>0階微分/0階積分</font>)

```math
e^{iθ}=\cos（θ)+\sin（θ)i…(θ_0=0)
```

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210118/20210118081438.gif)

```R
#SVoR(Simple Vivration of Real)Sn(n=1→-1)
s0<-rev(complex(re=seq(-1,1,length=31),im=rep(0,31)))

#cos(x)+sin(x)*(0±1i)

c0<-seq(0,pi,length=31)
f0p<-function(x) cos(x)+sin(x)*(0+1i)
sp<-f0p(c0)
f0m<-function(x) cos(x)+sin(x)*(0-1i)
sm<-f0m(c0)

src01<-function(Rad){

plot(s0,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="e^(θ*(0±1i))=cos(x)+sin(x)*(0±1i)",xlab="Cos(θ)",ylab="Sin(θ)*(0±1i)",col=rgb(0,1,0))
par(new=T)
plot(sp,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(0,0,1))
par(new=T)
plot(sm,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(1,0,0))

polygon(Re(c(sm[1:Rad],sm[Rad],sm[1])), #x
Im(c(sm[1:Rad],0,0)), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0))

polygon(Re(c(sp[1:Rad],sp[Rad],sp[1])),#x
 Im(c(sp[1:Rad],0,0)),#y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1))

SVoR<-paste("SVoR[",round(Re(s0[Rad]), digits=2),"],%=(1-SVoR)/2*100")
rd0<-round((1-Re(s0[Rad]))/2*100, digits=0)
SP<-paste("cos(π*",rd0,"%)+sin(π*",rd0,"%)*(0+1i)")
SM<-paste("cos(π*",rd0,"%)+sin(π*",rd0,"%)*(0-1i)")

legend("bottomleft", legend=c(SVoR,SP,SM),lty =c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))
}

#アニメーション表示
library("animation")
Time_Code=c(1:31)
saveGIF({
for (i in Time_Code){
　　src01(i)
}
}, interval = 0.1, movie.name = "src01.gif")
```
###1階微分/3階積分

```math
\log θi=-i e^{iθ}=-(-\sin（θ)+\cos（θ)i)…(θ_0=\frac{π}{2})
```

```R
> f1 <- expression(cos(x)+sin(x)*(0+1i))
> D(f1,"x")
cos(x) * (0 + (0+1i)) - sin(x)
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210118/20210118212257.gif)

```R
#SVoR(Simple Vivration of Real)Sn(n=1→-1)
s0<-rev(complex(re=seq(-1,1,length=31),im=rep(0,31)))

#cos(x)+sin(x)*(0±1i)

c0<-seq(0,pi,length=31)
f0p<-function(x) cos(x)+sin(x)*(0+1i)
sp<-f0p(c0)
f0m<-function(x) cos(x)+sin(x)*(0-1i)
sm<-f0m(c0)

src01<-function(Rad){

plot(s0*(0+1i),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="log(θ*(0±1i))=-sin(θ)+cos(θ)*(0±1i)",xlab="-Sin(θ)",ylab="Cos(θ)*(0±1i)",col=rgb(0,1,0))
par(new=T)
plot(sp*(0+1i),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(1,0,0))
par(new=T)
plot(sm*(0+1i),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(0,0,1))

polygon(Im(c(sp[1:Rad],0,0)), #x
Re(c(sp[1:Rad],sp[Rad],sp[1])), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1))

polygon(Im(c(sm[1:Rad],0,0)), #x
Re(c(sm[1:Rad],sm[Rad],sm[1])), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0))

SVoR<-paste("SVoR[",round(Re(s0[Rad]), digits=2),"],%=(1-SVoR)/2*100")
rd0<-round((1-Re(s0[Rad]))/2*100, digits=0)
SP<-paste("-sin(π*",rd0,"%)+cos(π*",rd0,"%)*(0+1i)")
SM<-paste("-sin(π*",rd0,"%)+cos(π*",rd0,"%)*(0-1i)")

legend("bottomleft", legend=c(SVoR,SP,SM),lty =c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))

}

#アニメーション表示
library("animation")
Time_Code=c(1:31)
saveGIF({
for (i in Time_Code){
　　src01(i)
}
}, interval = 0.1, movie.name = "src02.gif")
```
###2階微分/2階積分

```math
-e^{iθ}=-(\cos（θ)+\sin（θ)i)…(θ_0=π)
```

```R
> f2 <- expression(cos(x)*(0+1i)-sin(x))
> D(f2,"x")
-(sin(x) * (0 + (0+1i)) + cos(x))
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210118/20210118201515.gif)

```R
#SVoR(Simple Vivration of Real)Sn(n=1→-1)
s0<-rev(complex(re=seq(-1,1,length=31),im=rep(0,31)))

#cos(x)+sin(x)*(0±1i)

c0<-seq(0,pi,length=31)
f0p<-function(x) cos(x)+sin(x)*(0+1i)
sp<-f0p(c0)
f0m<-function(x) cos(x)+sin(x)*(0-1i)
sm<-f0m(c0)

src01<-function(Rad){

plot(-s0,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="-e^(θ*(0±1i))=-(cos(x)+sin(x)*(0±1i))",xlab="-Cos(θ)",ylab="-Sin(θ)*(0±1i)",col=rgb(0,1,0))
par(new=T)
plot(-sp,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(0,0,1))
par(new=T)
plot(-sm,type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(1,0,0))

polygon(-Re(c(sm[1:Rad],sm[Rad],sm[1])), #x
-Im(c(sm[1:Rad],0,0)), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0))

polygon(-Re(c(sp[1:Rad],sp[Rad],sp[1])),#x
 -Im(c(sp[1:Rad],0,0)),#y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1))

SVoR<-paste("SVoR[",round(Re(s0[Rad]), digits=2),"],%=(1-SVoR)/2*100")
rd0<-round((1-Re(s0[Rad]))/2*100, digits=0)
SP<-paste("-(cos(π*",rd0,"%)+sin(π*",rd0,"%)*(0+1i))")
SM<-paste("-(cos(π*",rd0,"%)+sin(π*",rd0,"%)*(0-1i))")

legend("bottomleft", legend=c(SVoR,SP,SM),lty =c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))

}

#アニメーション表示
library("animation")
Time_Code=c(1:31)
saveGIF({
for (i in Time_Code){
　　src01(i)
}
}, interval = 0.1, movie.name = "src03.gif")
```
###3階微分/1階積分

```math
-\log θi=i e^{iθ}=-\sin（θ)+\cos（θ)i…(θ_0=-\frac{π}{2})
```

```R
> f3 <- expression(-(cos(x)+sin(x)*(0+1i)))
> D(f3,"x")
-(cos(x) * (0 + (0+1i)) - sin(x))
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210118/20210118204807.gif)

```R
#SVoR(Simple Vivration of Real)Sn(n=1→-1)
s0<-rev(complex(re=seq(-1,1,length=31),im=rep(0,31)))

#cos(x)+sin(x)*(0±1i)

c0<-seq(0,pi,length=31)
f0p<-function(x) cos(x)+sin(x)*(0+1i)
sp<-f0p(c0)
f0m<-function(x) cos(x)+sin(x)*(0-1i)
sm<-f0m(c0)

src01<-function(Rad){

plot(-(s0*(0+1i)),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="-log(θ*(0±1i))=-(-sin(θ)+cos(θ)*(0±1i))",xlab="Sin(θ)",ylab="-Cos(θ)*(0±1i)",col=rgb(0,1,0))
par(new=T)
plot(-(sp*(0+1i)),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(1,0,0))
par(new=T)
plot(-(sm*(0+1i)),type="l",asp=1,xlim=c(-1,1),ylim=c(-1,1),main="",xlab="",ylab="",col=rgb(0,0,1))

polygon(-Im(c(sp[1:Rad],0,0)), #x
-Re(c(sp[1:Rad],sp[Rad],sp[1])), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(0,0,1))

polygon(-Im(c(sm[1:Rad],0,0)), #x
-Re(c(sm[1:Rad],sm[Rad],sm[1])), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0))

SVoR<-paste("SVoR[",round(Re(s0[Rad]), digits=2),"],%=(1-SVoR)/2*100")
rd0<-round((1-Re(s0[Rad]))/2*100, digits=0)
SP<-paste("-(-sin(π*",rd0,"%)+cos(π*",rd0,"%)*(0+1i))")
SM<-paste("-(-sin(π*",rd0,"%)+cos(π*",rd0,"%)*(0-1i))")

legend("topleft", legend=c(SVoR,SP,SM),lty =c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))

}

#アニメーション表示
library("animation")
Time_Code=c(1:31)
saveGIF({
for (i in Time_Code){
　　src01(i)
}
}, interval = 0.1, movie.name = "src04.gif")
```
###4階微分/4階積分(<font color=blue>最初に戻る</font>)

```R
> f4 <- expression(-(cos(x)*(0+1i)-sin(x)))
> D(f4,"x")
sin(x) * (0 + (0+1i)) + cos(x)
```

あれ微分しても積分しても同じ形の<font color=purple>e^x</font>は何処に？

#「中学生には難しいが高校生なら気付くレベル」？

それについては、こんな話もある様です。

[オイラーの公式](https://sci-tech.ksc.kwansei.ac.jp/~shimeno/math/euler/euler.html)

>**マクローリン級数**による**オイラーの公式**<font color=purple>e^ix=cos(x)+sin(x)i</font>の「**証明**」の問題点（<font color=blue>e^ixの定義はどこに隠れているか</font>） を指摘する朝永振一郎のエッセイを紹介します．
>
>**朝永振一郎**(<font color=blue>1906～1979,ノーベル物理学賞を受賞した日本を代表する物理学者</font>）は，エッセイ ｢**数学がわかるというのはどういうことであるか**｣ （<font color=blue>朝永振一郎 『科学者の自由な楽園』 江沢 洋(編集) 岩波文庫，2000 に所収</font>） において，オイラーの公式と出会ったときのことを次のように記しています （<font color=blue>中学とあるのは旧制中学で卒業は17歳</font>）。
>
>幾何学的に定義された三角関数というものが、 指数関数という解析的なものと結びつくということは何とも脅威であったが、 それだけにまたその意味が理解できない、 証明はベキ級数を使ってやればいかにも簡単明りょう疑う余地はないが、 何かごまかされたみたいで、あと味が悪い、 ところが、やはり中学生より大きくなっていたので、 そのあと味悪さの原因がどこにあるかに気づいた。 どう気がついたかというと、この定理が出てくる前に、 数の虚数ベキの定義がやってないという点である。 ベキの定義はまず正の整数ベキから出発し、次に負数ベキが逆数と関係させて定義され、次に分数ベキが平方根とか立方根とかに関係させて定義されている。 ここまでは中学校で教えられた。さらに進んで無理数ベキは極限概念として微分学で習っている。ところが虚数ベキの定義になると、まだどこでも習ったことはない。 その習っていないものがいきなり式の左辺に出現したのだから理解できないのは当然である。 そういうことに気がついた。こう気がつくと、この定理の意味は一目りょう然となった。 つまり、これはむしろ虚数ベキの定義そのものなのであると、やはり高校生になると中学生のときとちがって、もやもやとわからないといっていないで、なぜわからないか、どこがわからない原因かと、つきとめることができたのであろうか。
>
>**虚数ベキ**<font color=purple>e^ix</font>の定義こそが問題であると指摘されています。指数関数のベキ級数展開<font color=purple>e^x</font>において<font color=green>x</font>を<font color=green>ix</font>に置き換えた式を<font color=purple>e^ix</font>の定義とするとオイラーの公式が導かれるという証明になっているからです(<font color=blue>無限級数の収束、実部と虚部に分ける順序交換は絶対収束級数であることから正当なものです</font>）あるいは**オイラーの公式**<font color=purple>e^ix=cos(x)+sin(x)i</font>を<font color=purple>e^ix</font>の定義とする方法もあります（<font color=blue>オイラーの発見を尊重しない悪いやり方だという人もいますが， 数学ではよくやる手段です</font>）。

そもそも<font color=purple>e^x関数</font>で合成されているのはどんな波形なんでしょうか？
[【Rで球面幾何学】オイラーの公式を導出したマクローリン級数の限界？](https://qiita.com/ochimusha01/items/4a484d5759f96abb0ab3)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210119/20210119041651.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210119/20210119223413.gif)
現れたのは<font color=purple>Sinh関数</font>と<font color=purple>Cosh関数</font>…そんな感じで以下続報…