LoginSignup
2
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-18

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

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

ポイントとなるのはこの考え方ですね。
【初心者向け】三角関数と指数・対数関数の「巡回性」について。

三角関数の微分(それぞれが-90度の変遷に対応

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

三角関数の積分(それぞれが+90度の変遷に対応

\int \int \int … \int \cos(θ)(dθ)=(\sin(θ),-\cos(θ),-\sin(θ),\cos(θ),…)\\
\int \int \int … \int \sin(θ)(dθ)=(-\cos(θ),-\sin(θ),\cos(θ),\sin(θ),…)

円描画関数$e^{θi}=\cos(θ)+\sin(θ)$の微分(それぞれが-90度の変遷に対応

(\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(θ)$の積分(それぞれが+90度の変遷に対応

\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(θ)$の場合
\cos(θ)\frac{d^n}{dθ^n}=(-\sin(θ),-\cos(θ),\sin(θ),\cos(θ),…)\\
\int \int \int … \int \cos(θ)(dθ)=(\sin(θ),-\cos(θ),-\sin(θ),\cos(θ),…)
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))

原関数

\cos{\left(x \right)}

1階微分

- \sin{\left(x \right)}

2階微分

- \cos{\left(x \right)}

3階微分

\sin{\left(x \right)}

4階微分(1周)

\cos{\left(x \right)}

1階積分

\sin{\left(x \right)}

2階積分

- \cos{\left(x \right)}

3階積分

- \sin{\left(x \right)}

4階積分(1周)

\cos{\left(x \right)}
  • $\sin(θ)$の場合
\sin(θ)\frac{d^n}{dθ^n}=(\cos(θ),-\sin(θ),-\cos(θ),\sin(θ),…)\\
\int \int \int … \int \sin(θ)(dθ)=(-\cos(θ),-\sin(θ),\cos(θ),\sin(θ),…)
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))

原関数

\sin{\left(x \right)}

1階微分

\cos{\left(x \right)}

2階微分

- \sin{\left(x \right)}

3階微分

- \cos{\left(x \right)}

4階微分(1周)

\sin{\left(x \right)}

1階積分

- \cos{\left(x \right)}

2階積分

\sin{\left(x \right)}

3階積分

\cos{\left(x \right)}

4階積分(1周)

\sin{\left(x \right)}
  • $e^{iθ}=\cos(θ)+\sin(θ)i$の場合
(\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},…)

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))

原関数

i \sin{\left(x \right)} + \cos{\left(x \right)}

1階微分

- \sin{\left(x \right)} + i \cos{\left(x \right)}

2階微分

- (i \sin{\left(x \right)} + \cos{\left(x \right)})

3階微分

\sin{\left(x \right)} - i \cos{\left(x \right)}

4階微分(1周)

 \sin{\left(x \right)} + \cos{\left(x \right)}

1階積分

- i e^{i x}

2階積分

- e^{i x}

3階積分

i e^{i x}

4階積分(1周)

e^{i x}

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

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

元関数(0階微分/0階積分)

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

image.gif

#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階積分

\log θi=-i e^{iθ}=-(-\sin(θ)+\cos(θ)i)…(θ_0=\frac{π}{2})
> f1 <- expression(cos(x)+sin(x)*(0+1i))
> D(f1,"x")
cos(x) * (0 + (0+1i)) - sin(x)

image.gif

#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階積分

-e^{iθ}=-(\cos(θ)+\sin(θ)i)…(θ_0=π)
> f2 <- expression(cos(x)*(0+1i)-sin(x))
> D(f2,"x")
-(sin(x) * (0 + (0+1i)) + cos(x))

image.gif

#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階積分

-\log θi=i e^{iθ}=-\sin(θ)+\cos(θ)i…(θ_0=-\frac{π}{2})
> f3 <- expression(-(cos(x)+sin(x)*(0+1i)))
> D(f3,"x")
-(cos(x) * (0 + (0+1i)) - sin(x))

image.gif

#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階積分(最初に戻る)

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

あれ微分しても積分しても同じ形のe^xは何処に?

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

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

オイラーの公式

マクローリン級数によるオイラーの公式e^ix=cos(x)+sin(x)iの「証明」の問題点(e^ixの定義はどこに隠れているか) を指摘する朝永振一郎のエッセイを紹介します.

朝永振一郎(1906~1979,ノーベル物理学賞を受賞した日本を代表する物理学者)は,エッセイ 「数学がわかるというのはどういうことであるか」 (朝永振一郎 『科学者の自由な楽園』 江沢 洋(編集) 岩波文庫,2000 に所収) において,オイラーの公式と出会ったときのことを次のように記しています (中学とあるのは旧制中学で卒業は17歳)。

幾何学的に定義された三角関数というものが、 指数関数という解析的なものと結びつくということは何とも脅威であったが、 それだけにまたその意味が理解できない、 証明はベキ級数を使ってやればいかにも簡単明りょう疑う余地はないが、 何かごまかされたみたいで、あと味が悪い、 ところが、やはり中学生より大きくなっていたので、 そのあと味悪さの原因がどこにあるかに気づいた。 どう気がついたかというと、この定理が出てくる前に、 数の虚数ベキの定義がやってないという点である。 ベキの定義はまず正の整数ベキから出発し、次に負数ベキが逆数と関係させて定義され、次に分数ベキが平方根とか立方根とかに関係させて定義されている。 ここまでは中学校で教えられた。さらに進んで無理数ベキは極限概念として微分学で習っている。ところが虚数ベキの定義になると、まだどこでも習ったことはない。 その習っていないものがいきなり式の左辺に出現したのだから理解できないのは当然である。 そういうことに気がついた。こう気がつくと、この定理の意味は一目りょう然となった。 つまり、これはむしろ虚数ベキの定義そのものなのであると、やはり高校生になると中学生のときとちがって、もやもやとわからないといっていないで、なぜわからないか、どこがわからない原因かと、つきとめることができたのであろうか。

虚数ベキe^ixの定義こそが問題であると指摘されています。指数関数のベキ級数展開e^xにおいてxixに置き換えた式をe^ixの定義とするとオイラーの公式が導かれるという証明になっているからです(無限級数の収束、実部と虚部に分ける順序交換は絶対収束級数であることから正当なものです)あるいはオイラーの公式e^ix=cos(x)+sin(x)ie^ixの定義とする方法もあります(オイラーの発見を尊重しない悪いやり方だという人もいますが, 数学ではよくやる手段です)。

そもそもe^x関数で合成されているのはどんな波形なんでしょうか?
【Rで球面幾何学】オイラーの公式を導出したマクローリン級数の限界?
image.gif
image.gif
現れたのはSinh関数Cosh関数…そんな感じで以下続報…

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1