【数学溢れ話】【Token】反比例関数と指数対数関数の回転

# 線形関数(<font color=blue>Liner Function</font>)と反比例関数(<font color=blue>Inverse Proportional Function</font>)の連続性
冪乗関数$y=a^x(a,x \in \mathbb{R})$を用いれば、**線形関数**(Liner Function)y=x(y=x^1)と、その逆関数たる**反比例関数**(Inverse Proportional Function)$y=\frac{1}{x}(y=x^{-1})$を**連続する関数表現**(Continuous Function Expression)に収める事が出来ます。ただしaが**特異点**(Singular Point)0に収束する時、1対１対応が崩れた**多価関数**(Multivalued Function)となってしまうのです。

```math
y=\lim_{a \to 0}a^x = \left\{
\begin{array}{ll}
y=-1 & (x>0)  \\
-1 < y < 1 & (x=0)  \\
y=1 & (x<0)
\end{array}
\right.
```
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030322f32303231313030323034343830362e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/63e97209-a3ca-a582-b984-383a531f8b84.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 等差数列を生成
X = np.linspace(0,10,101,endpoint =True)
plt.style.use('default')
fig = plt.figure()
tcode=np.linspace(-1,1,41,endpoint =True)
Tcode=tcode[::-1]

def exponential(n):
    plt.cla()
    # 可視化
    plt.plot(X,X,color="green", label="y=x")
    plt.plot(-X,-X,color="green")
    plt.plot(X,1/X,color="purple", label="y=1/x")
    plt.plot(-X,-1/X,color="purple")
    Y1=X**Tcode[n]
    es="{:0<+5}".format(round(Tcode[n],3))
    ex01="y=X^("+es+")"
    plt.plot(X,Y1,color="blue", label=ex01)
    plt.plot(-X,-Y1,color="blue")
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, -1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(0, -1,color="black", marker="o")
    plt.plot(1,0,color="black", marker="o")
    plt.plot(-1,0,color="black", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    plt.hlines(1,-10,10,color="black",lw=0.5)
    plt.hlines(-1,-10,10,color="black",lw=0.5)
    plt.vlines(0,-10,10,color="black")
    plt.vlines(1,-10,10,color="black",lw=0.5)
    plt.vlines(-1,-10,10,color="black",lw=0.5)
    plt.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("Lineer Function → Inverse Proportional Function")
    ax = fig.add_subplot(111)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, -1," (-1,-1)",color="black", size=9)
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(0, -1," (0,-1)",color="black", size=9)
    ax.text(1, 0," (0,1)",color="black", size=9)
    ax.text(-1,0," (0,-1)",color="black", size=9)
    ax.set_aspect('equal')
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("LtIP004.gif", writer="pillow")
```

* わーい、**ステップ関数**。まさかの時に**ステップ関数**…<br>[【数理考古学】ディラックのデルタ関数とヘヴィサイドのステップ関数](https://qiita.com/ochimusha01/items/6070c4991a3a8481dad9)

ちなみにa>1の場合は以下の形に収束します。

```math
y=\lim_{a=1 \to ∞}a^x = \left\{
\begin{array}{ll}
y=0 & (0<x<1)  \\
0 < y <∞ & (x=1)
\end{array}
\right.
```
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030322f32303231313030323036343235322e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/5dc196da-7931-3400-5a42-9875c1a8c60e.gif)


```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 等差数列を生成
X = np.linspace(0,10,101,endpoint =True)
plt.style.use('default')
fig = plt.figure()
Tcode=np.linspace(1,12,41,endpoint =True)

def exponential(n):
    plt.cla()
    # 可視化
    plt.plot(X,X,color="green", label="y=x")
    plt.plot(-X,-X,color="green")
    plt.plot(X,1/X,color="purple", label="y=1/x")
    plt.plot(-X,-1/X,color="purple")
    Y1=X**Tcode[n]
    es="{:0<+7}".format(round(Tcode[n],3))
    ex01="y=X^("+es+")"
    plt.plot(X,Y1,color="blue", label=ex01)
    plt.plot(-X,-Y1,color="blue")
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, -1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(0, -1,color="black", marker="o")
    plt.plot(1,0,color="black", marker="o")
    plt.plot(-1,0,color="black", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    plt.hlines(1,-10,10,color="black",lw=0.5)
    plt.hlines(-1,-10,10,color="black",lw=0.5)
    plt.vlines(0,-10,10,color="black")
    plt.vlines(1,-10,10,color="black",lw=0.5)
    plt.vlines(-1,-10,10,color="black",lw=0.5)
    plt.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("Lineer Function → Inverse Proportional Function")
    ax = fig.add_subplot(111)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, -1," (-1,-1)",color="black", size=9)
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(0, -1," (0,-1)",color="black", size=9)
    ax.text(1, 0," (0,1)",color="black", size=9)
    ax.text(-1,0," (0,-1)",color="black", size=9)
    ax.set_aspect('equal')
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("LtIP006.gif", writer="pillow")
```
またa>-1の場合は以下の形に収束します。

```math
y=\lim_{a=-1 \to -∞}a^x = \left\{
\begin{array}{ll}
0 < y< ∞ & (x=1)  \\
y = 0 & (x>1)
\end{array}
\right.
```
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030322f32303231313030323036323932382e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a8a29ee9-bb52-4a6d-e3d5-486b5743194d.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 等差数列を生成
X = np.linspace(0,10,101,endpoint =True)
plt.style.use('default')
fig = plt.figure()
tcode=np.linspace(-12,-1,41,endpoint =True)
Tcode=tcode[::-1]
def exponential(n):
    plt.cla()
    # 可視化
    plt.plot(X,X,color="green", label="y=x")
    plt.plot(-X,-X,color="green")
    plt.plot(X,1/X,color="purple", label="y=1/x")
    plt.plot(-X,-1/X,color="purple")
    Y1=X**Tcode[n]
    es="{:0<+7}".format(round(Tcode[n],3))
    ex01="y=X^("+es+")"
    plt.plot(X,Y1,color="blue", label=ex01)
    plt.plot(-X,-Y1,color="blue")
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, -1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(0, -1,color="black", marker="o")
    plt.plot(1,0,color="black", marker="o")
    plt.plot(-1,0,color="black", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    plt.hlines(1,-10,10,color="black",lw=0.5)
    plt.hlines(-1,-10,10,color="black",lw=0.5)
    plt.vlines(0,-10,10,color="black")
    plt.vlines(1,-10,10,color="black",lw=0.5)
    plt.vlines(-1,-10,10,color="black",lw=0.5)
    plt.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("Lineer Function → Inverse Proportional Function")
    ax = fig.add_subplot(111)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, -1," (-1,-1)",color="black", size=9)
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(0, -1," (0,-1)",color="black", size=9)
    ax.text(1, 0," (0,1)",color="black", size=9)
    ax.text(-1,0," (0,-1)",color="black", size=9)
    ax.set_aspect('equal')
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("LtIP010.gif", writer="pillow")
```
関数$y=a^x(a=-∞ \to　0 \to　+∞)$の全体像を俯瞰すると以下。$1 \to -1$区間の通過なんて瞬く間に終わってしまいますね。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030342f32303231313030343034323032352e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/223a5520-39bb-53fc-c88b-1ae9ac09bfb6.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 等差数列を生成
X = np.linspace(0,10,101,endpoint =True)
plt.style.use('default')
fig = plt.figure()
tcode=np.linspace(-12,12,41,endpoint =True)
Tcode=tcode[::-1]

def exponential(n):
    plt.cla()
    # 可視化
    plt.plot(X,X,color="green", label="y=x")
    plt.plot(-X,-X,color="green")
    plt.plot(X,1/X,color="purple", label="y=1/x")
    plt.plot(-X,-1/X,color="purple")
    Y1=X**Tcode[n]
    es="{:0<+5}".format(round(Tcode[n],3))
    ex01="y=X^("+es+")"
    plt.plot(X,Y1,color="blue", label=ex01)
    plt.plot(-X,-Y1,color="blue")
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, -1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(0, -1,color="black", marker="o")
    plt.plot(1,0,color="black", marker="o")
    plt.plot(-1,0,color="black", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    plt.hlines(1,-10,10,color="black",lw=0.5)
    plt.hlines(-1,-10,10,color="black",lw=0.5)
    plt.vlines(0,-10,10,color="black")
    plt.vlines(1,-10,10,color="black",lw=0.5)
    plt.vlines(-1,-10,10,color="black",lw=0.5)
    plt.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("Lineer Function → Inverse Proportional Function")
    ax = fig.add_subplot(111)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, -1," (-1,-1)",color="black", size=9)
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(0, -1," (0,-1)",color="black", size=9)
    ax.text(1, 0," (0,1)",color="black", size=9)
    ax.text(-1,0," (0,-1)",color="black", size=9)
    ax.set_aspect('equal')
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("RS001.gif", writer="pillow")
```
ちなみにlog、すなわちx座標とy座標を入れ替えた場合の計算は以下。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030392f32303231313030393033333632312e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/cb95be8f-88b1-e07d-d66b-ce5d964d190d.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 等差数列を生成
X = np.linspace(0,10,101,endpoint =True)
plt.style.use('default')
fig = plt.figure()
tcode=np.linspace(-12,12,41,endpoint =True)
Tcode=tcode[::-1]

def exponential(n):
    plt.cla()
    # 可視化
    plt.plot(X,X,color="green", label="y=x")
    plt.plot(-X,-X,color="green")
    plt.plot(X,1/X,color="purple", label="y=1/x")
    plt.plot(-X,-1/X,color="purple")
    Y1=X**Tcode[n]
    es="{:0<+5}".format(round(Tcode[n],3))
    ex01="y=log("+es+",X)"
    plt.plot(Y1,X,color="blue", label=ex01)
    plt.plot(-Y1,-X,color="blue")
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, -1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(0, -1,color="black", marker="o")
    plt.plot(1,0,color="black", marker="o")
    plt.plot(-1,0,color="black", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    plt.hlines(1,-10,10,color="black",lw=0.5)
    plt.hlines(-1,-10,10,color="black",lw=0.5)
    plt.vlines(0,-10,10,color="black")
    plt.vlines(1,-10,10,color="black",lw=0.5)
    plt.vlines(-1,-10,10,color="black",lw=0.5)
    plt.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("log Function")
    ax = fig.add_subplot(111)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, -1," (-1,-1)",color="black", size=9)
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(0, -1," (0,-1)",color="black", size=9)
    ax.text(1, 0," (0,1)",color="black", size=9)
    ax.text(-1,0," (0,-1)",color="black", size=9)
    ax.set_aspect('equal')
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("RS101.gif", writer="pillow")
```
それとなく感じられる**特異点**(Singular Point)としての**観測原点**0($a^{-∞}$)と**観測限界**∞($a^{+∞}$)の連続性…

# 交換法則(<font color=blue>Commutative Law</font>)の成立条件。

今度は別方向からのアプローチを試みましょう。交換法則は、例えば関数$Y=a^x$において対称式X=Y(a=1)か対称式XY=1(a=-1)になる場合に成立します。

**X=Yの場合**…y=x,-y=-xのなす平面がy=-x,-y=xのなす平面と直交します。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373230303030302e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2c91f3b3-dc28-d289-da67-908aad51fd9b.gif)

```python
#Inverse_Proportional_Function

%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#反比例データ作成
X=np.linspace(-5,5,41,endpoint = True)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Inverse_Proportional_Function(n):
    plt.cla()
    #比例曲線描画(0度)
    ax.plot(X,X,X,color="blue",lw=1)
    for num in range(len(X)):
        ax.plot([0,X[num]],[0,X[num]],[X[num],X[num]],color="gray",lw=0.5)
    #比例曲線描画(180度)
    ax.plot(-X,-X,X,color="red",lw=1)
    for num in range(len(X)):
        ax.plot([0,-X[num]],[0,-X[num]],[X[num],X[num]],color="gray",lw=0.5)
    #比例曲線描画(90度)
    ax.plot(X,-X,X,color="green",lw=1)
    for num in range(len(X)):
        ax.plot([0,X[num]],[0,-X[num]],[X[num],X[num]],color="gray",lw=0.5)
    #比例曲線描画(-90度)
    ax.plot(-X,X,X,color="green",lw=1)
    for num in range(len(X)):
        ax.plot([0,-X[num]],[0,X[num]],[X[num],X[num]],color="gray",lw=0.5)

    #軸線追加
    ax.plot([-10,10],[0,0],[0,0],color="black",lw=1)
    ax.plot([0,0],[-10,10],[0,0],color="black",lw=1)
    ax.plot([0,0],[0,0],[-10,10],color="black",lw=1)
    #諸元追加
    ax.set_ylim([-5,5])
    ax.set_xlim([-5,5])
    ax.set_zlim([-5,5])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("X")
    ax.set_ylabel("X")
    ax.set_zlabel("X")
    # グラフを回転
    ax.view_init(elev=45, azim=Time_code[n])

Time_code0=np.arange(0,360,6) 
Time_code=Time_code0[::-1]
#Inverse_Proportional_Function(59)
#plt.show()
#xy=1=14
#-xy=1=44
#exp(X)=29
#-exp(X)=59

ani = animation.FuncAnimation(fig, Inverse_Proportional_Function, interval=50,frames=len(Time_code))
ani.save("PF003.gif", writer="pillow")
```
垂直軸に沿って眺めるとこう見えます。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373139353932352e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/41234eda-2775-294b-4e88-2ce3257720f9.gif)
水平軸に沿って眺めるとこう見えます。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373139353832312e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/40511765-9859-5aa7-713f-c85a0676382d.gif)
全体として円錐を構成してますね。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373230343335392e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f6856ec1-c18d-ebe2-b7f1-29c2b0053275.gif)
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373230343434392e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b9e6006a-3230-88c3-74ac-fab73df06ebd.gif)
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373230343533342e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0b8be6cb-7ad4-688e-860a-318678768b2a.gif)

```python
%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#円柱データ作成
c0=np.linspace(0,m.pi*120,1201,endpoint = True)
s0=[]
for nm in range(len(c0)):
    s0.append(complex(m.cos(c0[nm]),m.sin(c0[nm])))
s1=np.array(s0)
z0=np.linspace(-1,1,1201,endpoint = True)

#「曲率」を計算
cv1=np.linspace(-1,1,1201,endpoint = True)
#cv1=num.sqrt(1-cv0**2)

#断面線(z)
cutz0=np.linspace(-1,1,61,endpoint = True)
cutz=cutz0[::-1]
cutx=np.abs(cutz)
cuty=np.repeat(0,61)

#単位円データ作成
u0=np.linspace(0,m.pi*2,61,endpoint = True)
u1=[]
for nm in range(len(u0)):
    u1.append(complex(m.cos(u0[nm]),m.sin(u0[nm])))
uc=np.array(u1)
uz0=np.repeat(-1,61)
uz1=np.repeat(-0,61)
uz2=np.repeat(1,61)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def unit_cylinder(n):
    plt.cla()
    #円柱描画
    ax.plot(s1.real*cv1,s1.imag*cv1,z0,color="gray",lw=0.5)
    #スポーク描画
    for num in range(len(uc)):
        ax.plot([0,uc[num].real],[0,uc[num].imag],[0,0],color="purple",lw=0.5)
    #単位円描画
    ax.plot(uc.real,uc.imag,uz0,color="red",lw=1)
    ax.plot(uc.real,uc.imag,uz1,color="purple",lw=1)
    ax.plot(uc.real,uc.imag,uz2,color="blue",lw=1)
    #実数線追加
    ax.plot([0,0],[0,0],[-1,1],color="black",lw=1)
    ax.plot([0,0],[-1,1],[0,0],color="black",lw=1)
    ax.plot([-1,1],[0,0],[0,0],color="black",lw=1)
    ax.plot([-1,1],[0,0],[-1,1],color="blue",lw=1)
    ax.plot([1,-1],[0,0],[-1,1],color="red",lw=1)
    ax.plot([0,0],[-1,1],[-1,1],color="green",lw=1)
    ax.plot([0,0],[1,-1],[-1,1],color="green",lw=1)
    #諸元追加
    ax.set_ylim([-1.1,1.1])
    ax.set_xlim([-1.1,1.1])
    ax.set_zlim([-1.1,1.1])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("X")
    ax.set_ylabel("X")
    ax.set_zlabel("X")
    # グラフを回転(elev=0にすると水平表示に)
    ax.view_init(elev=25, azim=Time_code[n])

Time_code0=np.arange(0,360,6)  
Time_code=Time_code0[::-1] 
#unit_cylinder(len(s1))
#plt.show()

ani = animation.FuncAnimation(fig, unit_cylinder, interval=50,frames=len(Time_code))
ani.save("PF101.gif", writer="pillow")
```

**自然指数関数y=exp(x)と反比例関数xy=1の関係**…こちらも完全に対称式の枠内で展開。

```math
xy=1=e^0=e^{p-p}(0<p<∞)=e^p e^{-p}(0<p<∞)
```
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373135353134382e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/67ff1c9b-d7c6-cb20-85d8-ebba51f3e8d9.gif)

```python
#Inverse_Proportional_Function

%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#反比例データ作成
Z=np.linspace(-2,2,41,endpoint = True)
X1=np.exp(Z)
X2=np.exp(-Z)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Inverse_Proportional_Function(n):
    plt.cla()
    #反比例曲線描画
    ax.plot(X1,X2,Z,color="blue",lw=1)
#    ax.plot(X2,X1,Z,color="red",lw=1)
    for num in range(len(Z)):
        ax.plot([0,X1[num]],[0,X2[num]],[Z[num],Z[num]],color="gray",lw=0.5)

    #軸線追加
    ax.plot([-10,10],[0,0],[0,0],color="black",lw=1)
    ax.plot([0,0],[-10,10],[0,0],color="black",lw=1)
    ax.plot([0,0],[0,0],[-10,10],color="black",lw=1)
    #諸元追加
    ax.set_ylim([-5,5])
    ax.set_xlim([-5,5])
    ax.set_zlim([-5,5])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("exp(X)")
    ax.set_ylabel("exp(-X)")
    ax.set_zlabel("X")
    # グラフを回転
    ax.view_init(elev=45, azim=Time_code[n])

Time_code0=np.arange(0,360,6) 
Time_code=Time_code0[::-1]
#Inverse_Proportional_Function(44)
#plt.show()
#exp(X)=14
#-exp(X)=44
#exp(-X)=29
#-exp(-X)=59

ani = animation.FuncAnimation(fig, Inverse_Proportional_Function, interval=50,frames=len(Time_code))
ani.save("IPF003.gif", writer="pillow")
```
垂直軸に沿って眺めると反比例関数xy=1のグラフが回転しています。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373135343233392e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2adc85b7-8532-dd84-6bb9-b00ebc40515c.gif)
水平軸に沿って眺めるとこう見えます。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373135333434362e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/310d89ba-5326-8da1-5a1d-def4f1bdb82b.gif)

**X軸**
**exp(X)**…exp(-X)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2d733765-d72e-980c-5f18-587a773e8c73.png)
**exp(X)(逆位相)**…exp(-X)(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c3ad0f9e-1a6a-22d4-b573-fb8c915d010c.png)
**Y軸**
**exp(-X)**…exp(X)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/cba7ef27-e94e-29a0-69eb-43ece0a0f2f5.png)
**exp(-X)(逆位相)**…exp(X)(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/188bdaba-fbd2-24ef-b7f6-51ed59d11af6.png)

**自然対数関数y=log(x)と反比例関数xy=1の関係**…自然対数関数y=log(x)の中身は自然指数関数y=exp(x)のxy逆転、すなわちx=exp(y)に他なりませんが、xy=1はexp(x)とexp(-x)の直積の結果なので以下の2通りの展開が存在するのです。いずれにせよどちらの展開も対称式の条件は満たしません。

**x軸exp(x)、y軸x、z軸exp(-x)の置換**
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373137323634382e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/29d14f87-0971-8723-4dc6-058973e62ad1.gif)

```python
#Inverse_Proportional_Function

%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#反比例データ作成
Z=np.linspace(-2,2,41,endpoint = True)
X1=np.exp(Z)
X2=np.exp(-Z)


#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Inverse_Proportional_Function(n):
    plt.cla()
    #反比例曲線描画
    ax.plot(X1,Z,X2,color="blue",lw=1)
    for num in range(len(Z)):
        ax.plot([0,X1[num]],[0,Z[num]],[X2[num],X2[num]],color="gray",lw=0.5)

    #軸線追加
    ax.plot([-10,10],[0,0],[0,0],color="black",lw=1)
    ax.plot([0,0],[-10,10],[0,0],color="black",lw=1)
    ax.plot([0,0],[0,0],[-10,10],color="black",lw=1)
    #諸元追加
    ax.set_ylim([-5,5])
    ax.set_xlim([-5,5])
    ax.set_zlim([-5,5])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("exp(X)")
    ax.set_ylabel("X")
    ax.set_zlabel("exp(-X)")
    # グラフを回転
    ax.view_init(elev=0, azim=Time_code[n])

Time_code0=np.arange(0,360,6) 
Time_code=Time_code0[::-1]
#Inverse_Proportional_Function(59)
#plt.show()
#xy=1=14
#-xy=1=44
#exp(X)=29
#-exp(X)=59

ani = animation.FuncAnimation(fig, Inverse_Proportional_Function, interval=50,frames=len(Time_code))
ani.save("IPF203.gif", writer="pillow")
```
垂直軸に沿って眺めるとx=exp(y)すなわちy=log(x)が回転しています。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373137323435382e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c6ffe6b7-8ddb-2a06-8ccc-66fd8f461023.gif)
水平軸に沿って眺めるとこう見えます。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373137323034362e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0408550a-d7bf-007e-ba2c-dcacd8218299.gif)
**X軸**
**xy=1**…x=exp(-y)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/95145e99-6b87-96c4-a038-c0d501a5a807.png)
**xy=1(逆位相)**…x=exp(-y)(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/d9dc1410-f2f5-74ec-23ad-dd33f02b5ffa.png)
**Y軸**
**x=exp(-y)(逆位相)**…1/X(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ad5499f3-c5da-e1b6-9f9f-5ba665f0929d.png)
**x=exp(-y)**…xy=1と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2775a650-0b25-3345-4bfc-a92a4298bc3a.png)

**x軸x、y軸exp(-x)、z軸exp(x)の置換**
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373138303031362e676966 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8156b5b1-a223-e5f1-eaa6-223b3a426e28.gif)

```python
#Inverse_Proportional_Function

%matplotlib nbagg
import math as m
import cmath as c
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

#反比例データ作成
Z=np.linspace(-2,2,41,endpoint = True)
X1=np.exp(Z)
X2=np.exp(-Z)

#グラフ表示
plt.style.use('default')
fig = plt.figure()
ax = Axes3D(fig)

#関数定義
def Inverse_Proportional_Function(n):
    plt.cla()
    #反比例曲線描画
    ax.plot(Z,X2,X1,color="blue",lw=1)
    for num in range(len(Z)):
        ax.plot([0,Z[num]],[0,X2[num]],[X1[num],X1[num]],color="gray",lw=0.5)

    #軸線追加
    ax.plot([-10,10],[0,0],[0,0],color="black",lw=1)
    ax.plot([0,0],[-10,10],[0,0],color="black",lw=1)
    ax.plot([0,0],[0,0],[-10,10],color="black",lw=1)
    #諸元追加
    ax.set_ylim([-5,5])
    ax.set_xlim([-5,5])
    ax.set_zlim([-5,5])
    ax.set_title("Unit Cylinder")
    ax.set_xlabel("X")
    ax.set_ylabel("exp(-X)")
    ax.set_zlabel("exp(X)")
    # グラフを回転
    ax.view_init(elev=0, azim=Time_code[n])

Time_code0=np.arange(0,360,6) 
Time_code=Time_code0[::-1]
#Inverse_Proportional_Function(59)
#plt.show()
#xy=1=14
#-xy=1=44
#exp(X)=29
#-exp(X)=59

ani = animation.FuncAnimation(fig, Inverse_Proportional_Function, interval=50,frames=len(Time_code))
ani.save("IPF303.gif", writer="pillow")
```

垂直軸に沿って眺めるとx=exp(-y)が回転しています。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373137353933392e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/009a0c54-2222-55f8-28ed-ef8f33bfd017.gif)
水平軸に沿って眺めるとこう見えます。
![68747470733a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f6f2f6f6368696d7573686130312f32303231313030372f32303231313030373137353930312e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/d6893b4a-5fae-b711-6639-21e76c3a4520.gif)
**X軸**
**log(x)**…1/xと直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/5bc6c6fe-13c6-4634-522b-929b2547c3dc.png)
**log(x)(逆位相)**…1/X(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fab9cb94-531f-cf8a-5c68-b816794240ce.png)
Y軸
**1/X(逆位相)**…log(x)(逆位相)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/33dc07fa-5561-4c0b-eccb-afa0c5125708.png)

**1/X**…log(x)と直交
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/187458ad-de67-1610-4b3d-98dc4c59f605.png)

* 以前からどうして**対数尺**(Logarithmic Scale)はあるのに**指数尺**(Exponential scale)**がないのか疑問だったのですが、「**指数写像**(Exponential Map)**の定義域はあくまで均等尺**(Even Scale)」「**これを均等尺に戻す為に対数写像**(Logarithmic Map)**の定義域は対数尺である必要がある**」が正解で、その由来はかかる座標置換にあった訳です。中高生でも理解出来てる人はちゃんと理解出来てる数理?<br>[【Python演算】オイラーの公式と等比数列④「中学生には難しいが高校生なら気付くレベル」？](https://qiita.com/ochimusha01/items/10f0276f9850bea6c993)
* で、指数尺といえば思い出すのが「**ヴェーバー‐フェヒナーの法則**」。この概念自体は「識閾=1を超えてからの認識展開」が対象ですが、ある意味「**識閾=1を超えるまでの認識展開**」を扱う**ニューロンコンピューティング**(機械学習の始祖)と補完関係にある?<br>[【数理考古学】ヴェーバー‐フェヒナーの法則](https://qiita.com/ochimusha01/items/4eaf1972ff487b9bc713)

もはや対称式の条件は満たしていませんが、全てがZ軸に対して正方向のみの展開となる点に有用性が見受けられます。

そんな感じで以下続報…