【Rで球面幾何学】指数関数や対数関数における「ネイピア数周期」の意味について。

[【初心者向け】指数・対数関数の発見](https://qiita.com/ochimusha01/items/3e28f4f06abd8cef0af1)
![20190927233136 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/216d94f6-b445-ae38-64d8-bd6f8db5a2c9.png)

ところで**指数関数**<font color="green">Y=a^Xi</font>や**対数関数**<font color="green">Y=Log(Xi,base=a)</font>が「**ちゃんと１回だけ**」円を描くのは**底（<font color="blue">root</font>）**を**ネイピア数**<font color="green">e</font>(<font color="blue">exp(1)=2.718282</font>)もしくは<font color="green">1/e</font>(<font color="blue">exp(-1)=0.3678794</font>)とする以下の8種類の関数だけだったりします。

- **自然指数関数**<font color="green">e^Xi</font>（<font color="blue">exp(x*(0+1i))</font>）あるいは<font color="green">1/e^Xi</font>（<font color="blue">exp(-1*(0+1i))</font>）
- 上の符号を逆転させた**自然指数関数**<font color="green">-e^Xi</font>あるいは<font color="green">-1/e^Xi</font>
- **自然対数関数**<font color="green">log(Xi)</font>あるいは<font color="green">log(Xi,base=1/exp(1))</font>
- 上の符号を逆転させた**自然対数関数**<font color="green">-log(Xi)</font>あるいは<font color="green">-log(Xi,base=1/exp(1))</font>

そうして描かれる円がどれも「<font color="red">中心座標を0とする半径１の円弧</font>」という辺りも興味深い？

①**自然指数関数**<font color="green">e^Xi</font>（<font color="blue">exp(x*(0+1i))</font>）あるいは<font color="green">1/e^Xi</font>（<font color="blue">exp(-1*(0+1i))</font>）の場合

```R
#統計言語Rによる実演例「1/e^Xiとe^Xiの狭間」
root_move_01<-function(rp){

#タイトル定義
Main_title<-c("Alternative to root")
x_title<-c("Real Expanse")
y_title<-c("Imaginaly Expanse")
#関数定義
f1<-function(x){rp^(x*(0+1i))} 
theta <- c(seq(0, pi, length=180),seq(-pi, 0, length=180))
Circle_x=Im(f1(theta))
Circle_y=Re(f1(theta))

f2<-function(x){-rp^(x*(0+1i))} 
#f3<-function(x){log(x*(0+1i))}
cnv_y <- c(seq(-3, 3, length=300))
Log_plus <- f1(cnv_y)
#f4<-function(x){-log(x*(0+1i))} 
Log_minus <-f2(cnv_y) 
#f5<-function(x){2*x^2} 
#f6<-function(x){x^2} 
#f7<-function(x){4*x+5} 
#凡例用関数名定義
f1_name<-c("root^xi(x=Real,y=Imaginaly),r=1") 
f2_name<-c("Exponential root^xi,-root^xi")  
f3_name<-c("Logarithmic log(xi, base=root),-log(xi, base=root)")  
#f4_name<-c("2*(x-3)^2") 
#f5_name<-c("2*x^2")  
#f6_name<-c("x^2") 

#グラフのスケール決定
gs_x<-c(-1.7,1.7)
gs_y<-c(-1.7,1.7)
#グラフの色の決定
Black<-rgb(0,0,0)
Red<-rgb(1,0,0)
Magenta<-rgb(1,0,1)
Blue<-rgb(0,0,1)
Green<-rgb(0,1,0)
Cyan<-rgb(0,1,1)
Yellow<-rgb(1,1,0)
Gray<-"#777777"
#グラフ描画
plot(Circle_x,Circle_y,xlim=gs_x,ylim=gs_y,type="l",col=Black, main=Main_title,xlab=x_title,ylab=y_title)
par(new=T)#上書き指定
plot(f1,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(f2,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_plus, cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_minus,cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
#基準線
abline(h=0,,col=Gray)
abline(v=0,,col=Gray)
#塗りつぶし
polygon(c(Circle_x), #x
c(Circle_y), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　
#凡例描画
legend("bottomleft", legend=c(f1_name,f2_name,f3_name),lty=c(1,1,1),col=c(Black,Blue,Green))
}
```
**根**を<font color="green">-1</font>(<font color="blue">1/root</font>)から<font color="green">0</font>(<font color="blue">root/root</font>)にかけて変化させる->**下から上に円弧消失**
![20190628102302.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/17183052-29c7-20cc-2e31-67cb248665b8.gif)

```R
#-1から0へ
library("animation")
Time_Code=c(exp(-1.0),exp(-0.9),exp(-0.8),exp(-0.7),exp(-0.6),exp(-0.5),exp(-0.4),exp(-0.3),exp(-0.2),exp(-0.1),exp(0.0))
saveGIF({
for (i in Time_Code){
　　root_move_01(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```
**根**を<font color="green">0</font>(<font color="blue">root/root</font>)から<font color="green">1</font>(<font color="blue">root</font>)にかけて変化させる->**上から下に円弧出現**
![20190628102545.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1204f224-00ed-745d-d403-3d928e689354.gif)

```R
#0から+1へ
library("animation")
Time_Code=c(exp(0),exp(0.1),exp(0.2),exp(0.3),exp(0.4),exp(0.5),exp(0.6),exp(0.7),exp(0.8),exp(0.9),exp(1.0))
saveGIF({
for (i in Time_Code){
　　root_move_01(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

それでは根が<font color="green">1/e</font>**以下**だったり、<font color="green">e</font>**以上**だったりするとどうなるのでしょう。なんとネイピア数周期で円を重ね書きし続けるのです。

**根**が<font color="green">e</font>**以上**
![20190628103123.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e7d3396a-7b2a-d102-cb18-9c802d011632.gif)

```R
#+1から+2へ
library("animation")
Time_Code=c(exp(1.0),exp(1.1),exp(1.2),exp(1.3),exp(1.4),exp(1.5),exp(1.6),exp(1.7),exp(1.8),exp(1.9),exp(2.0))
saveGIF({
for (i in Time_Code){
　　root_move_01(i)
}
}, interval = 0.1, movie.name = "TEST.gif")  
```
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210108/20210108152226.gif)

```R
#+1から+6へ
library("animation")
Time_Code=c(exp(1.0),exp(1.5),exp(2.0),exp(2.5),exp(3.0),exp(3.5),exp(4.0),exp(4.5),exp(5.0),exp(5.5),exp(6.0))
saveGIF({
for (i in Time_Code){
　　root_move_01(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

**根**が<font color="green">1/e</font>**以下**
![20190628103446.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/101e2395-d39e-8c56-ce98-2421cc1fa192.gif)

```R
#-1から-2へ
library("animation")
Time_Code=c(exp(-1.0),exp(-1.1),exp(-1.2),exp(-1.3),exp(-1.4),exp(-1.5),exp(-1.6),exp(-1.7),exp(-1.8),exp(-1.9),exp(-2.0))
saveGIF({
for (i in Time_Code){
　　root_move_01(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

②①の符号を逆転させた**自然指数関数**<font color="green">-e^Xi</font>あるいは<font color="green">-1/e^Xi</font>

```R
#統計言語Rによる実演例「-1/e^Xiと-e^Xiの狭間」
root_move_02<-function(rp){

#タイトル定義
Main_title<-c("Alternative to root")
x_title<-c("Real Expanse")
y_title<-c("Imaginaly Expanse")
#関数定義
f1<-function(x){rp^(x*(0+1i))} 
theta <- c(seq(0, pi, length=180),seq(-pi, 0, length=180))
f2<-function(x){-rp^(x*(0+1i))} 
Circle_x=Im(f2(theta))
Circle_y=Re(f2(theta))
#f3<-function(x){log(x*(0+1i))}
cnv_y <- c(seq(-3, 3, length=300))
Log_plus <- f1(cnv_y)
#f4<-function(x){-log(x*(0+1i))} 
Log_minus <-f2(cnv_y) 
#f5<-function(x){2*x^2} 
#f6<-function(x){x^2} 
#f7<-function(x){4*x+5} 
#凡例用関数名定義
f1_name<-c("-root^xi(x=Real,y=Imaginaly),r=1") 
f2_name<-c("Exponential root^xi,-root^xi")  
f3_name<-c("Logarithmic log(xi, base=root),-log(xi, base=root)")  
#f4_name<-c("2*(x-3)^2") 
#f5_name<-c("2*x^2")  
#f6_name<-c("x^2") 

#グラフのスケール決定
gs_x<-c(-1.7,1.7)
gs_y<-c(-1.7,1.7)
#グラフの色の決定
Black<-rgb(0,0,0)
Red<-rgb(1,0,0)
Magenta<-rgb(1,0,1)
Blue<-rgb(0,0,1)
Green<-rgb(0,1,0)
Cyan<-rgb(0,1,1)
Yellow<-rgb(1,1,0)
Gray<-"#777777"
#グラフ描画
plot(Circle_x,Circle_y,xlim=gs_x,ylim=gs_y,type="l",col=Black, main=Main_title,xlab=x_title,ylab=y_title)
par(new=T)#上書き指定
plot(f1,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(f2,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_plus, cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_minus,cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
#基準線
abline(h=0,,col=Gray)
abline(v=0,,col=Gray)
#塗りつぶし
polygon(c(Circle_x), #x
c(Circle_y), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　
#凡例描画
legend("bottomleft", legend=c(f1_name,f2_name,f3_name),lty=c(1,1,1),col=c(Black,Blue,Green))
}
```

**根**を<font color="green">-1</font>(<font color="blue">1/root</font>)から<font color="green">0</font>(<font color="blue">root/root</font>)にかけて変化させる->**上から下に円弧消失**
![20190628111214.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/001550a3-de8b-e5a2-d574-b0948302d7bf.gif)

```R
#-1から0へ
library("animation")
Time_Code=c(exp(-1.0),exp(-0.9),exp(-0.8),exp(-0.7),exp(-0.6),exp(-0.5),exp(-0.4),exp(-0.3),exp(-0.2),exp(-0.1),exp(0.0))
saveGIF({
for (i in Time_Code){
　　root_move_02(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```
**根**を<font color="green">0</font>(<font color="blue">root/root</font>)から<font color="green">1</font>(<font color="blue">root</font>)にかけて変化させる->**下から上に円弧出現**
![20190628111345.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/4ab69ef7-2428-bc5a-655c-34b3cdfa82d2.gif)

```R
#0から+1へ
library("animation")
Time_Code=c(exp(0),exp(0.1),exp(0.2),exp(0.3),exp(0.4),exp(0.5),exp(0.6),exp(0.7),exp(0.8),exp(0.9),exp(1.0))
saveGIF({
for (i in Time_Code){
　　root_move_02(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

③**自然対数関数**<font color="green">log(Xi)</font>あるいは<font color="green">log(Xi,base=1/exp(1))</font>

```R
#統計言語Rによる実演例「log(Xi)とlog(Xi,base=1/exp(1)の狭間」

root_move_03<-function(rp){

#タイトル定義
Main_title<-c("Alternative to root")
x_title<-c("Real Expanse")
y_title<-c("Imaginaly Expanse")
#関数定義
f1<-function(x){rp^(x*(0+1i))} 
theta <- c(seq(0, pi, length=180),seq(-pi, 0, length=180))
Circle_y=Im(f1(theta))
Circle_x=Re(f1(theta))

f2<-function(x){-rp^(x*(0+1i))} 
#f3<-function(x){log(x*(0+1i))}
cnv_y <- c(seq(-3, 3, length=300))
Log_plus <- f1(cnv_y)
#f4<-function(x){-log(x*(0+1i))} 
Log_minus <-f2(cnv_y) 
#f5<-function(x){2*x^2} 
#f6<-function(x){x^2} 
#f7<-function(x){4*x+5} 
#凡例用関数名定義
f1_name<-c("log(xi)(x=Real,y=Imaginaly),r=1") 
f2_name<-c("Exponential root^xi,-root^xi")  
f3_name<-c("Logarithmic log(xi, base=root),-log(xi, base=root)")  
#f4_name<-c("2*(x-3)^2") 
#f5_name<-c("2*x^2")  
#f6_name<-c("x^2") 

#グラフのスケール決定
gs_x<-c(-1.7,1.7)
gs_y<-c(-1.7,1.7)
#グラフの色の決定
Black<-rgb(0,0,0)
Red<-rgb(1,0,0)
Magenta<-rgb(1,0,1)
Blue<-rgb(0,0,1)
Green<-rgb(0,1,0)
Cyan<-rgb(0,1,1)
Yellow<-rgb(1,1,0)
Gray<-"#777777"
#グラフ描画
plot(Circle_x,Circle_y,xlim=gs_x,ylim=gs_y,type="l",col=Black, main=Main_title,xlab=x_title,ylab=y_title)
par(new=T)#上書き指定
plot(f1,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(f2,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_plus, cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_minus,cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
#基準線
abline(h=0,,col=Gray)
abline(v=0,,col=Gray)
#塗りつぶし
polygon(c(Circle_x), #x
c(Circle_y), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　
#凡例描画
legend("bottomleft", legend=c(f1_name,f2_name,f3_name),lty=c(1,1,1),col=c(Black,Blue,Green))
}
```

**根**を<font color="green">-1</font>(<font color="blue">1/root</font>)から<font color="green">0</font>(<font color="blue">root/root</font>)にかけて変化させる->**左から右に円弧消失**
![20190628110120.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c5c12c1a-3006-bedc-f083-85e77bee289c.gif)

```R
#-1から0へ

library("animation")
Time_Code=c(exp(-1.0),exp(-0.9),exp(-0.8),exp(-0.7),exp(-0.6),exp(-0.5),exp(-0.4),exp(-0.3),exp(-0.2),exp(-0.1),exp(0.0))
saveGIF({
for (i in Time_Code){
　　root_move_03(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 

```

**根**を<font color="green">0</font>(<font color="blue">root/root</font>)から<font color="green">1</font>(<font color="blue">root</font>)にかけて変化させる->**右から左に円弧出現**
![20190628110257.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/aff8270e-f0c0-b1b5-4984-932a1e9b4a54.gif)

```R
#0から+1へ
library("animation")
Time_Code=c(exp(0),exp(0.1),exp(0.2),exp(0.3),exp(0.4),exp(0.5),exp(0.6),exp(0.7),exp(0.8),exp(0.9),exp(1.0))
saveGIF({
for (i in Time_Code){
　　root_move_03(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

④③の符号を逆転させた**自然対数関数**<font color="green">-log(Xi)</font>あるいは<font color="green">-log(Xi,base=1/exp(1))</font>

```R
#統計言語Rによる実演例「-log(Xi)と-log(Xi,base=1/exp(1)の狭間」

root_move_04<-function(rp){

#タイトル定義
Main_title<-c("Alternative to root")
x_title<-c("Real Expanse")
y_title<-c("Imaginaly Expanse")
#関数定義
f1<-function(x){rp^(x*(0+1i))} 
theta <- c(seq(0, pi, length=180),seq(-pi, 0, length=180))
f2<-function(x){-rp^(x*(0+1i))} 
Circle_y=Im(f2(theta))
Circle_x=Re(f2(theta))
#f3<-function(x){log(x*(0+1i))}
cnv_y <- c(seq(-3, 3, length=300))
Log_plus <- f1(cnv_y)
#f4<-function(x){-log(x*(0+1i))} 
Log_minus <-f2(cnv_y) 
#f5<-function(x){2*x^2} 
#f6<-function(x){x^2} 
#f7<-function(x){4*x+5} 
#凡例用関数名定義
f1_name<-c("log(xi)(x=Real,y=Imaginaly),r=1") 
f2_name<-c("Exponential root^xi,-root^xi")  
f3_name<-c("Logarithmic log(xi, base=root),-log(xi, base=root)")  
#f4_name<-c("2*(x-3)^2") 
#f5_name<-c("2*x^2")  
#f6_name<-c("x^2") 

#グラフのスケール決定
gs_x<-c(-1.7,1.7)
gs_y<-c(-1.7,1.7)
#グラフの色の決定
Black<-rgb(0,0,0)
Red<-rgb(1,0,0)
Magenta<-rgb(1,0,1)
Blue<-rgb(0,0,1)
Green<-rgb(0,1,0)
Cyan<-rgb(0,1,1)
Yellow<-rgb(1,1,0)
Gray<-"#777777"
#グラフ描画
plot(Circle_x,Circle_y,xlim=gs_x,ylim=gs_y,type="l",col=Black, main=Main_title,xlab=x_title,ylab=y_title)
par(new=T)#上書き指定
plot(f1,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(f2,xlim=gs_x,ylim=gs_y,type="l",col=Blue, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_plus, cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
plot(Log_minus,cnv_y,xlim=gs_x,ylim=gs_y,type="l",col=Green, main="",xlab="",ylab="")
par(new=T)#上書き指定
#基準線
abline(h=0,,col=Gray)
abline(v=0,,col=Gray)
#塗りつぶし
polygon(c(Circle_x), #x
c(Circle_y), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=rgb(1,0,0)) 　
#凡例描画
legend("bottomleft", legend=c(f1_name,f2_name,f3_name),lty=c(1,1,1),col=c(Black,Blue,Green))
}
```

**根**を<font color="green">-1</font>(<font color="blue">1/root</font>)から<font color="green">0</font>(<font color="blue">root/root</font>)にかけて変化させる->**右から左に円弧消失**
![20190628110800.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/16c102d8-2e2f-afbe-f994-3fe58f3cb7d5.gif)

```R

#-1から0へ
library("animation")
Time_Code=c(exp(-1.0),exp(-0.9),exp(-0.8),exp(-0.7),exp(-0.6),exp(-0.5),exp(-0.4),exp(-0.3),exp(-0.2),exp(-0.1),exp(0.0))
saveGIF({
for (i in Time_Code){
　　root_move_04(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

**根**を<font color="green">0</font>(<font color="blue">root/root</font>)から<font color="green">1</font>(<font color="blue">root</font>)にかけて変化させる->**左から右に円弧出現**
![20190628110918.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7c861496-c1c1-55df-17a0-f8cc56d26fb9.gif)

```R
#0から+1へ
library("animation")
Time_Code=c(exp(0),exp(0.1),exp(0.2),exp(0.3),exp(0.4),exp(0.5),exp(0.6),exp(0.7),exp(0.8),exp(0.9),exp(1.0))
saveGIF({
for (i in Time_Code){
　　root_move_04(i)
}
}, interval = 0.1, movie.name = "TEST.gif") 
```

詳しい数理的背景の説明は以下にお任せしましょう。私自身はこんなに上手く説明出来ません。
[何なんだろうな。あいじょうって。「10のi乗」みたいな数を考える](https://www.ajimatics.com/entry/2019/03/14/235141)
[iのi乗はそこに至る経路で決まる](https://tsujimotter.hatenablog.com/entry/i-to-the-power-of-i)
実際に自分でプログラミングして実感したのが「<font color="red">平方眼</font>(Square Grid)<font color="red">が歪んでいく異様な感じ</font>」。さて、この**概念**(<font color="blue">Concept</font>)は何処へと繋がっていくのでしょう？