【Rで球面幾何学】等差数列(算術数列)②数直線(Number Line)概念から同心円集合(Concentric Set)概念へ

まずは以下の投稿の内容のまとめから。
[【Rで球面幾何学】等差数列(算術数列)① 数直線(Number Line)概念の導入(Introduction)について。](https://qiita.com/ochimusha01/items/4e5eca346c85f161c3b7)

①**等差数列表現**(<font color="blue">Arithmetic Progression Explession</font>)<font color="green">Αn=A1+(n-1)d</font>(<font color="blue">ただしΑn=初項(First Term),d=公差(Common Difference)</font>)を用いると、以下の**単調数列**(<font color="blue">Monotonic Sequence</font>)が**自明の場合**(<font color="blue">Torivial Case</font>)としてそれぞれこの様に表現される。

1. **自然数列**(<font color="blue">Natural Sequence</font>)<font color="green">N[n]={1,2,3…,1+(n-1)*1}</font>…区間<font color="green">1</font>~無限大<font color="green">Inf</font>、初項<font color="green">1</font>、公差<font color="green">1</font>、一般項<font color="green">1+(n-1)*1</font>
2. **整数列**(<font color="blue">Integer Sequence</font>)<font color="green">Z[n]={0-(n-1)*1,…,-3,-2,-1,0,1,2,3,…1+(n-1)*1}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±1</font>、一般項<font color="green">0±(n-1)*1</font>
3. **偶数列**(<font color="blue">Even Sequence</font>)<font color="green">e[n]={-2n,…-6,-4,-2,0,2,4,6,…2n}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±2</font>、一般項<font color="green">±2n</font>
4. **奇数列**(<font color="blue">Odd Sequence</font>)<font color="green">o[n]={2n-1,…-5,-3,-1,1,3,5,…2n+1}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±2</font>、一般項<font color="green">±2n±1</font>

②自然数の様に片側の**端点**(<font color="blue">End Point</font>)のみが**無限大**<font color="green">Inf</font>もしくは**無限小**<font color="green">-Inf</font>に開き(<font color="blue">open</font>)、もう片側が閉じた(<font color="blue">closed</font>)**半開区間**(<font color="blue">Semi-Open Interval</font>)で仕切られた算術数列を**片側無限算術数列**(<font color="blue">One-Sided Infinite Arithmetic Sequence</font>)、整数や偶数や奇数の様に**初項**<font color="green">0</font>を中心に**無限大**<font color="green">Inf</font>と**無限小**<font color="green">-Inf</font>に挟まれた**開区間**(<font color="blue">Open Interval</font>)で仕切られた算術数列を**両側無限算術数列**(<font color="blue">Two-Sided Infinite Arithmetic Sequence</font>)と呼び分けるが、その振る舞いは**公差**<font color="green">d</font>の**符号の向き**(<font color="blue">Sign direction</font>)によって定まる。 

1. <font color="green">d</font>の符号が**正**(<font color="blue">plus</font>)ならば、その数列の**項**(<font color="green">term</font>)は**増加数列**(<font color="blue">Increasing Sequence</font>)を構成し無限大<font color="green">Inf</font>に**発散**(<font color="blue">divergence</font>)する。
2. <font color="green">d</font>の符号が**負**(<font color="blue">minus</font>)ならば、その数列の**項**(<font color="green">term</font>)は**減少数列**(<font color="blue">Decreasing Sequence</font>)を構成し無限小<font color="green">-Inf</font>に**発散**(<font color="blue">divergence</font>)する。

③自然数列と偶数列と奇数列は整数列の**真部分集合**(<font color="blue">Proper Subset</font>)として存在する。
[【初心者向け】集合論①部分集合(subset)と真部分集合(proper subset)について。](https://qiita.com/ochimusha01/items/760e3a02cf93f9db9ede)

ところで**数直線**(<font color="blue">Number line</font>)というと一般に物差しの様な棒状の何かとイメージされがちですが、実際のそれは**トポロジー**（<font color="blue">topology=位相幾何学</font>）的には「(<font color="blue">自然数や配列の様に1で始まるタイプを除くと</font>)**初項**<font color="green">0</font>の原点のみで固定された**直線**(<font color="blue">line</font>)」に外ならず、ぐるりと回って円を描き、目盛りが振られているせいでそれぞれが独特の**同心円集合**(<font color="blue">Concentric Set</font>)を構成するのです。

###片側の端点(<font color="blue">End Point</font>)のみが無限大<font color="green">Inf</font>もしくは無限小<font color="green">-Inf</font>に開かれた片側無限算術数列(<font color="blue">One-Sided Infinite Arithmetic Sequence</font>)。
「<font color="purple">円を描く関数</font>」の集合を**円関数集合**(<font color="blue">Circular Function Set</font>)と置く。そのうち「**半径**<font color="green">r</font><font color="purple">の円</font>」について**ピタゴラスの定理**(<font color="blue">Pythagorean theorem</font>)**半径**<font color="green">r</font>=<font color="green">sqrt(x^2+y^2+z^2+…)</font>から出発する最も直接的な表現は**複素数表現**(<font color="blue">Complex Expression</font>)=**極座標表現**(<font color="blue">Polar Coordinate Expression</font>)における「**絶対値**(<font color="blue">Module</font>)=<font color="green">r</font>,**偏角**(<font color="blue">Augment</font>)=<font color="green">θ{0→2π}</font>」である。見え方としては**反時計回り**で、**偏角**(<font color="blue">Augment</font>)=<font color="green">θ{0→2π}</font>の推移<font color="green">0→2π</font>がこの向きを**担保**(<font color="blue">Collateral</font>)する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201111/20201111061314.gif)

```R
OIAS01<-function(index){
#同心円の描画
c0=seq(0,2*pi,length=60)
cmp0<-complex(mod=1,arg=c0)
cx=Re(cmp0)
cy=Im(cmp0)
plot(cx,cy,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="One-sided Infinite Arithmetic Sequence",xlab="",ylab="")
par(new=T)#上書き
plot(cx*2,cy*2,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*3,cy*3,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*4,cy*4,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*5,cy*5,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
#同心円領域の塗り潰し(x=1)
polygon(cx, #x
cy, #y
density=c(50), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=2)
polygon(cx*2, #x
cy*2, #y
density=c(40), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*3, #x
cy*3, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*4, #x
cy*4, #y
density=c(20), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*5, #x
cy*5, #y
density=c(10), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
segments(0,0,5,0,col=rgb(0,1,0))

par(new=T)#上書き
ax=c(0,cx[index]*1,cx[index]*2,cx[index]*3,cx[index]*4,cx[index]*5)
ay=c(0,cy[index]*1,cy[index]*2,cy[index]*3,cy[index]*4,cy[index]*5)
plot(ax,ay,asp=1,type="o",xlim=c(-3,3),ylim=c(-3,3),col=rgb(0,0,1),main="",xlab="",ylab="")
}
#アニメーション動作設定
Time_Code<-seq(1,59,by=2)
#アニメーション
library("animation")
saveGIF({
for (i in Time_Code){
　OIAS01(i)
}
}, interval = 0.1, movie.name = "OIAS03.gif")
```
[初心者向け】「単位円筒」から「単位球面」へ](https://qiita.com/ochimusha01/items/08f5c5ad1aba4a59a27d)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201202%2F20201202093758.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=167e614307e1813ff07f89cc7e325745)

###無限大<font color="green">Inf</font>と無限小<font color="green">-Inf</font>に挟まれた開区間(<font color="blue">Open Interval</font>)で仕切られた両側無限算術数列(<font color="blue">Two-Sided Infinite Arithmetic Sequence</font>)
①**直線**<font color="green">y=0</font>を軸線に選ぶとxの値が<font color="green">+1</font>から<font color="green">-1</font>(<font color="blue">-1から+1</font>)にかけて推移するのに対して、yの値は決して<font color="green">0以下</font>(<font color="blue">0以上</font>)にならない。見え方としては反時計回り。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201111/20201111043648.gif)

```R
TIASx01<-function(index){
#同心円の描画
c0=seq(0,2*pi,length=60)
cx=cos(c0)
cy=sin(c0)
plot(cx,cy,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="Two-sided Infinite Arithmetic Sequence",xlab="x",ylab="y")
par(new=T)#上書き
plot(cx*2,cy*2,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*3,cy*3,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*4,cy*4,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*5,cy*5,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
#同心円領域の塗り潰し(x=1)
polygon(cx, #x
cy, #y
density=c(50), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=2)
polygon(cx*2, #x
cy*2, #y
density=c(40), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*3, #x
cy*3, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*4, #x
cy*4, #y
density=c(20), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*5, #x
cy*5, #y
density=c(10), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

abline(h = 0,col=rgb(0,1,0))
abline(v = 0,col=c(200,200,200))

par(new=T)#上書き
axp=c(0,cx[index]*1,cx[index]*2,cx[index]*3,cx[index]*4,cx[index]*5)
ayp=c(0,cy[index]*1,cy[index]*2,cy[index]*3,cy[index]*4,cy[index]*5)
plot(axp,ayp,asp=1,type="o",xlim=c(-3,3),ylim=c(-3,3),col=rgb(0,0,1),main="",xlab="",ylab="")
par(new=T)#上書き
axm=c(0,cx[index]*-1,cx[index]*-2,cx[index]*-3,cx[index]*-4,cx[index]*-5)
aym=c(0,cy[index]*-1,cy[index]*-2,cy[index]*-3,cy[index]*-4,cy[index]*-5)
plot(axm,aym,asp=1,type="o",xlim=c(-3,3),ylim=c(-3,3),col=rgb(1,0,0),main="",xlab="",ylab="")
}
#アニメーション動作設定
Time_Code<-seq(1,29,by=2)
#アニメーション
library("animation")
saveGIF({
for (i in Time_Code){
　TIASx01(i)
}
}, interval = 0.1, movie.name = "TIASx001.gif")
```
これは**円関数集合**(<font color=blue>Circle Function Set</font>)でいうと<font color=green>Cos(θ)+Sin(θ)i</font>に該当する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201108/20201108040152.gif)

```R
expcos00<-function(Radian){
c0<-seq(0,pi*2,length=61)
cx<-cos(c0)
cy<-sin(c0)
plot(cx,cy,type="l",xlim=c(-1,1),asp=1,ylim=c(-1,1),main="Cos(θ)+Sin(θ)i",xlab="Cos(θ)",ylab="Sin(θ)i")
abline(h=0,col=rgb(1,0,0))
abline(v=0,col=rgb(1,0,0))
# θ位置を書き添える 。
text(cx[Radian],cy[Radian],"θ",col=rgb(0,1,0))
segments(0,0,cx[Radian],cy[Radian],col=rgb(0,1,0))
# 凡例を書き添える 。
legend("topright", legend=c("y=Cos(θ)+Sin(θ)i","x=y=0"), lty =c(1,1),col=c(rgb(0,0,0),rgb(1,0,0)))
}

#アニメーション
library("animation")
Time_Code=seq(1,59, length=30)
saveGIF({
for (i in Time_Code){
　expcos00(i)
}
}, interval = 0.1, movie.name = "expcos00.gif")
```

②一方**直線**<font color="green">x=0</font>を軸線に選ぶとyの値が<font color="green">+1</font>から<font color="green">-1</font>(<font color="blue">-1から+1</font>)にかけて推移するのに対して、xの値は決して<font color="green">0以下</font>(<font color="blue">0以上</font>)にならない。見え方としては時計回り。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201110/20201110234311.gif)

```R
TIASy01<-function(index){

#同心円の描画

c0=seq(0,2*pi,length=60)
cx=sin(c0)
cy=cos(c0)
plot(cx,cy,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="Two-sided Infinite Arithmetic Sequence",xlab="x",ylab="y")
par(new=T)#上書き
plot(cx*2,cy*2,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*3,cy*3,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*4,cy*4,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
par(new=T)#上書き
plot(cx*5,cy*5,asp=1,type="l",xlim=c(-3,3),ylim=c(-3,3),main="",xlab="",ylab="")
#同心円領域の塗り潰し(x=1)
polygon(cx, #x
cy, #y
density=c(50), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=2)
polygon(cx*2, #x
cy*2, #y
density=c(40), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*3, #x
cy*3, #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*4, #x
cy*4, #y
density=c(20), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
#同心円領域の塗り潰し(x=3)
polygon(cx*5, #x
cy*5, #y
density=c(10), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色

abline(h = 0,col=c(200,200,200))
abline(v = 0,col=rgb(0,1,0))

par(new=T)#上書き
axp=c(0,cx[index]*1,cx[index]*2,cx[index]*3,cx[index]*4,cx[index]*5)
ayp=c(0,cy[index]*1,cy[index]*2,cy[index]*3,cy[index]*4,cy[index]*5)
plot(ayp,axp,asp=1,type="o",xlim=c(-3,3),ylim=c(-3,3),col=rgb(0,0,1),main="",xlab="",ylab="")
par(new=T)#上書き
axm=c(0,cx[index]*-1,cx[index]*-2,cx[index]*-3,cx[index]*-4,cx[index]*-5)
aym=c(0,cy[index]*-1,cy[index]*-2,cy[index]*-3,cy[index]*-4,cy[index]*-5)
plot(aym,axm,asp=1,type="o",xlim=c(-3,3),ylim=c(-3,3),col=rgb(1,0,0),main="",xlab="",ylab="")
}
#アニメーション動作設定
Time_Code<-rev(c(seq(45,59,by=2),seq(1,15,by=2)))
#Time_Code<-seq(1,59,by=2)
#アニメーション
library("animation")
saveGIF({
for (i in Time_Code){
　TIASy01(i)
}
}, interval = 0.1, movie.name = "TIASy0107.gif")
```
これは**円関数集合**(<font color=blue>Circle Function Set</font>)でいうと<font color=green>Sin(θ)+Cos(θ)i</font>に該当する。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201110/20201110223555.gif)

```R
expcos0R<-function(Radian){
c0<-seq(0,pi*2,length=61)
cx<-sin(c0)
cy<-cos(c0)
plot(cx,cy,type="l",xlim=c(-1,1),asp=1,ylim=c(-1,1),main="Sin(θ)+Cos(θ)i",xlab="Sin(θ)",ylab="Cos(θ)i")
abline(h=0,col=rgb(1,0,0))
abline(v=0,col=rgb(1,0,0))
# θ位置を書き添える 。
text(cx[Radian],cy[Radian],"θ",col=rgb(0,1,0))
segments(0,0,cx[Radian],cy[Radian],col=rgb(0,1,0))
# 凡例を書き添える 。
legend("topright", legend=c("y=Cos(θ)+Sin(θ)i","x=y=0"), lty =c(1,1),col=c(rgb(0,0,0),rgb(1,0,0)))
}

#アニメーション
library("animation")
Time_Code=seq(1,59, length=30)
saveGIF({
for (i in Time_Code){
　expcos0R(i)
}
}, interval = 0.1, movie.name = "expcos0R.gif")
```
[【無限遠点を巡る数理】「半径だけの世界」から「直径もある世界」へ](https://qiita.com/ochimusha01/items/f53aed43bd720d008253)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201202%2F20201202110929.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=2707333ff7b779922e55b3d65cdd454c)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201202%2F20201202095654.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b16b4ae7d0364d94bc8506e883ad1132)
まだこの時点では「**偶奇性**(<font color=blue>Evenness</font>)」問題は表面化してきません。その事実が確認出来たので、とりあえず以下続報…