「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【数理Computingの基礎】数学界と物理学界を結ぶ「振動の定理」について。

発端はこの記事。

数列の極限は,

  • 1…(有限の値に)収束する。
  • 2A…正の無限大に発散する。
  • 2B…負の無限大に発散する。
  • 3…振動する。

のいずれかである。2と3の場合をいずれも発散すると言う。

例題5数列 An=(−1)^n の極限を調べよの解答

An−1 1 をひたすら交互に繰り返す。収束,正の無限大に発散,負の無限大に発散,のいずれにも当てはまらないので振動に分類される。

f:id:ochimusha01:20191031192319p:plain

だが、本当に? とっさに脳裏に浮かんだはこういうイメージ。

  • (-1)^-3=1/(-1*-1*-1)=-1
  • (-1)^-2=1/(-1*-1)=1
  • (-1)^-1=1/(-1)=-1
  • (-1)^0=-1/(-1)=1
  • (-1)^1=-1
  • (-1)^2=-1*-1=1
  • (-1)^3=-1*-1*-1=-1 

どうやら計算上もこの考え方で合ってる様だ?

上記計算の検証例

#(-1)^-3
1/(-1*-1*-1)
[1] -1
#(-1)^-2

1/(-1*-1)
[1] 1
#(-1)^-1

1/(-1)
[1] -1
#(-1)^0

-1/(-1)
[1] 1
#(-1)^1

-1
[1] -1
#(-1)^2

-1*-1
[1] 1
#(-1)^3

-1*-1*-1
[1] -1

上掲データの統計言語Rによる作表・作図例 

cx<-c(-3,-2,-1,0,1,2,3)
cy<-c(-1,1,-1,1,-1,1,-1)
Vibration <- data.frame(Period=cx, Amplitude=cy)

#作表する
library(xtable)
print(xtable(Vibration),type = "html")
#作図する
plot(cx,cy,type="l",main="An=(−1)^n",xlab="X",ylab="Y=(−1)^X") 

  Period Amplitude
1 -3.00 -1.00
2 -2.00 1.00
3 -1.00 -1.00
4 0.00 1.00
5 1.00 -1.00
6 2.00 1.00
7 3.00 -1.00

f:id:ochimusha01:20191031164755p:plain

ところがコンピューターにこれをそのまま計算させようとすると、小数点下がうまく補完出来ず躓いてしまうのです。 

上掲グラフの統計言語Rによるプログラミング例 

cx<-seq(-3,3,length=61)
f0<-function(x){(-1)^x}
cy<-f0(cx)
Vibration <- data.frame(Period=cx, Amplitude=cy)

#変数内のデータの直接表示
cy

#作表する
library(xtable)
print(xtable(Vibration),type = "html")

cy

f:id:ochimusha01:20191031172337p:plain

作表結果

  Period Amplitude
1 -3.00 -1.00
2 -2.90  
3 -2.80  
4 -2.70  
5 -2.60  
6 -2.50  
7 -2.40  
8 -2.30  
9 -2.20  
10 -2.10  
11 -2.00 1.00
12 -1.90  
13 -1.80  
14 -1.70  
15 -1.60  
16 -1.50  
17 -1.40  
18 -1.30  
19 -1.20  
20 -1.10  
21 -1.00 -1.00
22 -0.90  
23 -0.80  
24 -0.70  
25 -0.60  
26 -0.50  
27 -0.40  
28 -0.30  
29 -0.20  
30 -0.10  
31 0.00 1.00
32 0.10  
33 0.20  
34 0.30  
35 0.40  
36 0.50  
37 0.60  
38 0.70  
39 0.80  
40 0.90  
41 1.00 -1.00
42 1.10  
43 1.20  
44 1.30  
45 1.40  
46 1.50  
47 1.60  
48 1.70  
49 1.80  
50 1.90  
51 2.00 1.00
52 2.10  
53 2.20  
54 2.30  
55 2.40  
56 2.50  
57 2.60  
58 2.70  
59 2.80  
60 2.90  
61 3.00 -1.00

ここで「虚数Imaginary number)」や「複素数complex number)」といった概念導入による「それまで離散的な整数としてしか扱えなかった数理を連続的な実数に拡張する」数理上のパラダイムシフトが必要となる訳ですね。

二乗すると-2となる虚数Imaginary number)は現実に存在しない数なので、虚数を含む複素数a+biも現実には存在しない数です。この言葉を初めて書物で用いたのは「我思う、故に我あり」で有名なデカルトとされていますが、活用方法も思いつかず「想像上の数Nombre Imaginaire)」と否定的ニュアンスでしか捉えてませんでした。

それから数百年間は「詭弁的な数字であり、実用性はない」「ただの想像上の数に過ぎない」と否定的に評価されていたそうですが、オイラーの等式で有名なレオンハルト・オイラー虚数のもつ重要性を解き明かした後、その評価は一変。

さらに研究が進むにつれ、その存在を仮定して計算に使ってみたら非常に便利であることが分かり、数学者の間で広く使われるようになったようです。

 統計言語Rによるプログラミング例

cx<-seq(-3,3,length=61)
f0<-function(x){(-1)^(x*(0+1i))}
cyr<-Re(f0(cx))
cyi<-Im(f0(cx))
#CA=Correct Answer
CA_cy<-Re(f0(cx*2))
#作表する
Vibration01 <- data.frame(Period=cx, Real=cyr,Imaginal=cyi,CA=CA_cy)
library(xtable)
print(xtable(Vibration01),type = "html")
#「実数」領域の作図
plot(Vibration$Period,Vibration$Real,type="l",ylim=c(-1,1),col=rgb(0,1,0),main="An=(−1)^n",xlab="X",ylab="Y=(−1)^X")
par(new=T)#上書き指定
#「虚数」領域の作図
plot(Vibration$Period,Vibration$Imaginal,type="l",ylim=c(-1,1),col=rgb(0,0,1),main="",xlab="",ylab="")

par(new=T)#上書き指定
#正解領域の作図
plot(cx,CA_cy,type="l",ylim=c(-1,1),col=rgb(1,0,0),main="",xlab="",ylab="")

#凡例
legend("topright", legend=c("Real number","Imaginaly number","Correct Answer"),lty=c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))

作表結果

  Period Real Imaginal CA
1 -3.00 0.00 -1.00 -1.00
2 -2.90 -0.16 -0.99 -0.95
3 -2.80 -0.31 -0.95 -0.81
4 -2.70 -0.45 -0.89 -0.59
5 -2.60 -0.59 -0.81 -0.31
6 -2.50 -0.71 -0.71 0.00
7 -2.40 -0.81 -0.59 0.31
8 -2.30 -0.89 -0.45 0.59
9 -2.20 -0.95 -0.31 0.81
10 -2.10 -0.99 -0.16 0.95
11 -2.00 -1.00 -0.00 1.00
12 -1.90 -0.99 0.16 0.95
13 -1.80 -0.95 0.31 0.81
14 -1.70 -0.89 0.45 0.59
15 -1.60 -0.81 0.59 0.31
16 -1.50 -0.71 0.71 0.00
17 -1.40 -0.59 0.81 -0.31
18 -1.30 -0.45 0.89 -0.59
19 -1.20 -0.31 0.95 -0.81
20 -1.10 -0.16 0.99 -0.95
21 -1.00 -0.00 1.00 -1.00
22 -0.90 0.16 0.99 -0.95
23 -0.80 0.31 0.95 -0.81
24 -0.70 0.45 0.89 -0.59
25 -0.60 0.59 0.81 -0.31
26 -0.50 0.71 0.71 -0.00
27 -0.40 0.81 0.59 0.31
28 -0.30 0.89 0.45 0.59
29 -0.20 0.95 0.31 0.81
30 -0.10 0.99 0.16 0.95
31 0.00 1.00 0.00 1.00
32 0.10 0.99 -0.16 0.95
33 0.20 0.95 -0.31 0.81
34 0.30 0.89 -0.45 0.59
35 0.40 0.81 -0.59 0.31
36 0.50 0.71 -0.71 0.00
37 0.60 0.59 -0.81 -0.31
38 0.70 0.45 -0.89 -0.59
39 0.80 0.31 -0.95 -0.81
40 0.90 0.16 -0.99 -0.95
41 1.00 -0.00 -1.00 -1.00
42 1.10 -0.16 -0.99 -0.95
43 1.20 -0.31 -0.95 -0.81
44 1.30 -0.45 -0.89 -0.59
45 1.40 -0.59 -0.81 -0.31
46 1.50 -0.71 -0.71 0.00
47 1.60 -0.81 -0.59 0.31
48 1.70 -0.89 -0.45 0.59
49 1.80 -0.95 -0.31 0.81
50 1.90 -0.99 -0.16 0.95
51 2.00 -1.00 0.00 1.00
52 2.10 -0.99 0.16 0.95
53 2.20 -0.95 0.31 0.81
54 2.30 -0.89 0.45 0.59
55 2.40 -0.81 0.59 0.31
56 2.50 -0.71 0.71 0.00
57 2.60 -0.59 0.81 -0.31
58 2.70 -0.45 0.89 -0.59
59 2.80 -0.31 0.95 -0.81
60 2.90 -0.16 0.99 -0.95
61 3.00 0.00 1.00 -1.00

作図結果

f:id:ochimusha01:20191128104505p:plain


あぁ、こりゃもう完全にオイラーの公式Euler's formulacos(θ)+sin(θi)が成立して円とか描いちゃうパターンですわ。
*楕円とかもっと歪な形で現れると思いきや、あら不思議…どうして? まぁ別に、歪む要因も見当たらない訳ですが。

統計言語Rによるプログラミング例

cx<-seq(-3,3,length=61)
f0<-function(x){(-1i)^x}
cxr<-Re(f0(cx))
cyi<-Im(f0(cx))
#複素空間の作図
plot(cxr,cyi,asp=1,type="l",ylim=c(-1,1),col=rgb(1,0,0),main="An=(−1)^n",xlab="Real number",ylab="Imaginaly number")
#凡例
legend("topright", legend=c("Real+Imaginal*i"),lty=c(1),col=c(rgb(1,0,0)))

f:id:ochimusha01:20191031210207p:plain

周期が倍だと円を2回描きます。

統計言語Rによるプログラミング例

cx<-seq(-3,3,length=61)
f0<-function(x){(-1i)^(2*x)}
cxr<-Re(f0(cx))
cyi<-Im(f0(cx))
#複素空間の作図
plot(cxr,cyi,asp=1,type="l",ylim=c(-1,1),col=rgb(1,0,0),main="An=(−1)^n",xlab="Real number",ylab="Imaginaly number")
#凡例
legend("topright", legend=c("Real+Imaginal*i"),lty=c(1),col=c(rgb(1,0,0)))

f:id:ochimusha01:20191128111511p:plain

そしていよいよ、冒頭図の作画に。

 統計言語Rによるプログラミング例
*赤が削除箇所と修正箇所

cx<-seq(-3,3,length=61)
f0<-function(x){(-1i)^x}
cyr<-Re(f0(cx))
cyi<-Im(f0(cx))
#CA=Correct Answer
CA_cy<-Re(f0(cx*2))
#作表する
#Vibration01 <- data.frame(Period=cx, Real=cyr,Imaginal=cyi,CA=CA_cy)
#library(xtable)
#print(xtable(Vibration01),type = "html")
#「実数」領域の作図
#plot(Vibration$Period,Vibration$Real,type="l",ylim=c(-1,1),col=rgb(0,1,0),main="An=(−1)^n",xlab="X",ylab="Y=−1i^2X")
#par(new=T)#上書き指定
#「虚数」領域の作図
#plot(Vibration$Period,Vibration$Imaginal,type="l",ylim=c(-1,1),col=rgb(0,0,1),main="",xlab="",ylab="")

#par(new=T)#上書き指定
#正解領域の作図
plot(cx,CA_cy,type="l",ylim=c(-1,1),col=rgb(0,0,0),main="-1^θ=-1i^2^θ=-1i^2θ",xlab="X",ylab="Y=-1i^2X")

#凡例
#legend("topright", legend=c("Real number","Imaginaly number","Correct Answer"),lty=c(1,1,1),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)))

f:id:ochimusha01:20191128121752p:plain

円を自然に回してみせるにはタイムラインと座標変換にSin波を射影すると良い」現象と何か関係ありそうですが、現段階ではよく分かりません…

f:id:ochimusha01:20191011021040g:plain

この一例だけ見ても「虚数複素数実数域まで含む数理を扱う上で必ず必須になるとはいえない思想実験屋が弄ぶ玩具に過ぎない」なる発想が間違っているのは明らか。むしろおそらく「(観察物理学者ならとっくの昔に気付いていた筈の、伝統的方法を継承して研鑽するだけでは克服不可能な近世以前の数学の欠陥を補う重要な方便として近代数学以降に採用された」と考える方がよほ自然なのです。

円運動 - Wikipedia

回転運動を回転面上の観測者が真横から見ると物体は単振動しているように見える。あるいは、物体のx座標とy座標は互いに位相が90度=π/2ずれた単振動を行っている。

振動運動では回転速度のことを周波数または振動数と呼ぶ。

 f:id:ochimusha01:20191029133633g:plain

f:id:ochimusha01:20191029193635g:plain

f:id:ochimusha01:20191029194000g:plain

確かに手段は何であれ「X軸にCos波、Y軸にSin波」を配する事さえ思いつけば円は描けてしまうのです。とはいえ実際にはこうした振動観自体、オイラーの公式Euler's formulacos(θ)+sin(θi)がにインスパイアされて生まれたという話も。何れにせよ単振動Simple Harmonic Oscillation)の研究史自体が「フックの法則Hooke's law、ラテン語アナグラムによる「鍵付き」発表1676年、正解の発表1678年)」までしか遡れないので、現代人の感覚では誤差範囲に過ぎないという話も。