LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-27

まずは以下の投稿の内容のまとめから。
【Rで球面幾何学】等差数列(算術数列)① 数直線(Number Line)概念の導入(Introduction)について。

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

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

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

  1. dの符号が(plus)ならば、その数列の(term)は増加数列(Increasing Sequence)を構成し無限大Inf発散(divergence)する。
  2. dの符号が(minus)ならば、その数列の(term)は減少数列(Decreasing Sequence)を構成し無限小-Inf発散(divergence)する。

③自然数列と偶数列と奇数列は整数列の真部分集合(Proper Subset)として存在する。
【初心者向け】集合論①部分集合(subset)と真部分集合(proper subset)について。

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

片側の端点(End Point)のみが無限大Infもしくは無限小-Infに開かれた片側無限算術数列(One-Sided Infinite Arithmetic Sequence)。

円を描く関数」の集合を円関数集合(Circular Function Set)と置く。そのうち「半径rの円」についてピタゴラスの定理(Pythagorean theorem)半径r=sqrt(x^2+y^2+z^2+…)から出発する最も直接的な表現は複素数表現(Complex Expression)=極座標表現(Polar Coordinate Expression)における「絶対値(Module)=r,偏角(Augment)=θ{0→2π}」である。見え方としては反時計回りで、偏角(Augment)=θ{0→2π}の推移0→2πがこの向きを担保(Collateral)する。
image.gif

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

初心者向け】「単位円筒」から「単位球面」へ
image.gif

無限大Infと無限小-Infに挟まれた開区間(Open Interval)で仕切られた両側無限算術数列(Two-Sided Infinite Arithmetic Sequence)

直線y=0を軸線に選ぶとxの値が+1から-1(-1から+1)にかけて推移するのに対して、yの値は決して0以下(0以上)にならない。見え方としては反時計回り。
image.gif

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

これは円関数集合(Circle Function Set)でいうとCos(θ)+Sin(θ)iに該当する。
image.gif

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

②一方直線x=0を軸線に選ぶとyの値が+1から-1(-1から+1)にかけて推移するのに対して、xの値は決して0以下(0以上)にならない。見え方としては時計回り。
image.gif

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

これは円関数集合(Circle Function Set)でいうとSin(θ)+Cos(θ)iに該当する。
image.gif

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

【無限遠点を巡る数理】「半径だけの世界」から「直径もある世界」へ
image.gif
image.gif
まだこの時点では「偶奇性(Evenness)」問題は表面化してきません。その事実が確認出来たので、とりあえず以下続報…

1
0
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
1
0