【Pyrhon演算処理】自然指数関数(Natural Exponential Function)とは何か？

# 自然指数関数(<font color=blue>Natural Exponential Function</font>)の場合

実数を定義域(Domain)とする自然指数関数(Natural Exponential Function)

```math
\exp(x)'=\exp(x)\\
\int \exp(x)\ dx= \exp(x) 
```

[指数関数の学び方](https://www.sit.ac.jp/lsc/webtext/Satoh's_Math/Guide_ExponentialLogarithm.html)

>指数関数においては、一点で微分可能性さえわかれば、全ての指数関数の全ての点が微分可能となります。実際に試してみましょう。**指数関数**(Exponential Function) $y=a^x(a=0.1 \leqq a \leqq 4)$ と接点(0,1)で接する**接線**(Tangent) $y=\log(a)\ x+1$ をグラフ化してみます。

![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20211001/20211001213633.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(-10,10,101,endpoint =True)
Y0=np.exp(X)

plt.style.use('default')
fig = plt.figure()
Tcode=np.linspace(0.1,4,40,endpoint =True)

def exponential(n):
    plt.cla()
    #値域の決定
    Y1=Tcode[n]**X
    def tangent(x):return(np.log(Tcode[n])*x+1)
    Y2=tangent(X)
    # 可視化
    ex01="y="+str(round(Tcode[n],3))+"^x"
    ex02="y=log("+str(round(Tcode[n],3))+")x+1"
    plt.plot(X, X+1,color="green", label="y=x+1")
    plt.plot(-X, X+1,color="green", label="y=-x+1")
    plt.plot(X, Y0,color="purple", label="y=exp(x)")
    plt.plot(-X, Y0,color="purple", label="y=exp(-x)")
    plt.plot(X, Y1,color="red", label=ex01)
    plt.plot(X, Y2,color="blue", label=ex02)
    slopeX1=[0,1,1,0]
    slopeY1=[1,1,tangent(1),1]
    plt.fill(slopeX1,slopeY1,color="y",alpha=0.5)
    slopeX2=[0,-1,-1,0]
    slopeY2=[1,1,tangent(-1),1]
    plt.fill(slopeX2,slopeY2,color="y",alpha=0.5)
    #頂点
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(-1, 1,color="black", marker="o")
    plt.plot(1, tangent(1),color="blue", marker="o")
    plt.plot(-1, tangent(-1),color="blue", 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.ylim([-4,4])
    plt.xlim([-4,4])
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.title("Variation of Exponentiation Root")
    ax = fig.add_subplot(111)
    ax.set_aspect('equal')
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, 1," (-1,1)",color="black", size=9)
    tan1="(1,"+str(round(tangent(1),3))+")"
    ax.text(1, tangent(1),tan1,color="blue", size=9)
    tan2="(-1,"+str(round(tangent(-1),3))+")"
    ax.text(-1, tangent(-1),tan1,color="blue", size=9)
    ax.legend(loc='lower center')
    #plt.show()

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

>見ての通り接線の傾きが1となるのは根がexp(1)=2.718282(ネイピア数=Napierian Constant)の場合、傾きが逆に-1となるのは根が$\exp(-1)=0.3678794\left (\frac{1}{\text{Napierian Constant}}\right )$ の場合となります。**自然指数関数** $y=\exp(x)$ や**自然対数関数** $y=\log(x)$ の底は、この様に接線の傾きが1となる座標から逆算して定められた訳で、そう考えると**自然指数関数** $y=\exp(x)$ と**接点**$(x,\exp(x))$ で接する**接線** $y=\exp(x)\ x+\exp(x)$ の傾き $\exp(x)$ と導関数 $\exp(x)$ の値が重なるのは、ある意味自明の理といえましょう。
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20211002/20211002015032.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(-10,10,101,endpoint =True)
Y0=np.exp(X)

plt.style.use('default')
fig = plt.figure()
Tcode=np.linspace(-3,3,41,endpoint =True)

def exponential(n):
    plt.cla()
    # 可視化
    X1=X+Tcode[n]
    def tangent(x):return(np.exp(Tcode[n])*x+np.exp(Tcode[n]))
    Y1=tangent(X)
    es="{:0<+5}".format(round(Tcode[n],3))
    ex01="y=exp("+es+")("+es+"+x)+exp("+es+")"
    plt.plot(X,Y0,color="red", label="y=exp(x)")
    plt.plot(X,X+1,color="green", label="y=x+1")
    plt.plot(X1,Y1,color="blue", label=ex01)
    slopeX1=[Tcode[n],Tcode[n]+1,Tcode[n]+1,Tcode[n]]
    slopeY1=[np.exp(Tcode[n]),np.exp(Tcode[n]),np.exp(Tcode[n])*2,np.exp(Tcode[n])]
    plt.fill(slopeX1,slopeY1,color="y",alpha=0.5)
    #頂点
    plt.plot(1, 1,color="black", marker="o")
    plt.plot(0, 1,color="black", marker="o")
    plt.plot(-1, 1,color="black", marker="o")
    plt.plot(1, 2,color="green", marker="o")
    plt.plot(-1, 0,color="green", marker="o")
    plt.plot(1, np.exp(1),color="red", marker="o")
    plt.plot(-1, np.exp(-1),color="red", marker="o")
    plt.plot(Tcode[n],np.exp(Tcode[n]),color="blue", marker="o")
    plt.plot(Tcode[n]+1, np.exp(Tcode[n]),color="blue", marker="o")
    plt.plot(Tcode[n]+1, np.exp(Tcode[n])*2,color="blue", marker="o")
    #座標
    plt.hlines(0,-10,10,color="black")
    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("Slope = Derivative Function Value")
    ax = fig.add_subplot(111)
    ax.set_aspect('equal')
    ax.text(0, 1," (0,1)",color="black", size=9)
    ax.text(1, 1," (1,1)",color="black", size=9)
    ax.text(-1, 1," (-1,1)",color="black", size=9)
    ax.text(1, 2," (1,2)",color="green", size=9)
    ax.text(-1, 0," (-1,0)",color="green", size=9)
    ax.text(1, np.exp(1)," (1,exp(1))",color="red", size=9)
    ax.text(-1, np.exp(-1)," (-1,exp(-1))",color="red", size=9)
    sp1="("+str(round(Tcode[n],3))+","+str(round(np.exp(Tcode[n]),3))+")"
    ax.text(Tcode[n], np.exp(Tcode[n]),sp1,color="blue", size=9)
    sp2="("+str(round(Tcode[n]+1,3))+","+str(round(np.exp(Tcode[n]),3))+")"
    ax.text(Tcode[n]+1,np.exp(Tcode[n]), sp2,color="blue", size=9)
    sp3="("+str(round(Tcode[n]+1,3))+","+str(round(np.exp(Tcode[n])*2,3))+")"
    ax.text(Tcode[n]+1,np.exp(Tcode[n])*2,sp3,color="blue", size=9)
    ax.legend(loc='lower center')
    #plt.show()

ani = animation.FuncAnimation(fig, exponential, interval=50,frames=len(Tcode))
ani.save("nae017.gif", writer="pillow")
```
以前の説明では…
[【数理考古学】冪乗算の微積分](https://qiita.com/ochimusha01/items/0bd18370cfa96e83347a)

* 反比例式xy=1を$y=\frac{1}{x}$の形に変形してさらに積分すると $y=\log(x)$ となる。

```math
xy=1\\
変形して\ y=\left[ \frac{1}{x}\right]\\
さらに積分して \int \frac{1}{x}dx=\log(x)
```

* ところで自然指数関数 $y=\exp(x)$ の$x$と$y$を入れ替えると$y=\log(x)$となり、かつ$\displaystyle \frac{1}{x}$を積分すると$y=\log(x)$となるので、**微分積分学の基本定理**より$\displaystyle \frac{dy}{dx}=\frac{1}{x}$が成立する。

```math
e^{x} = y　\\
変形して x=\left[ \log{\left(y \right)}\right]\\
微分積分学の基本定理より\\
\frac{dy}{dx}=\frac{1}{x}\\
分子分母を置き換えて \frac{dx}{dy}=x\\
x=\exp(y)を代入して \frac{d}{dy}\exp(y)=\exp(y)\\
yをxに書き直して微分をダッシュで表すと \exp(x)'=\exp(x)\\
導関数が\exp(x)である以上、積分結果も \int e^x dx=e^{x}
```
ちなみに**微分積分学の基本定理**とは?
[d/dx,d/dy,dy/dxについて](https://www.try-it.jp/chapters-7403/sections-7421/lessons-7460/)

> 「d」はほとんど0に近い微小変化を意味し、微分はその時の傾き(変化の割合)を求める演算です。微分はそもそも分数式の極限に由来し計算上、分数と同じ様に扱える側面もあるのです。

* $\displaystyle \frac{d}{dx}$は$x$で微分する操作の記号。
* $\displaystyle \frac{d}{dy}$は$y$で微分する操作の記号。

```math
【例題】　\frac{d}{dx}ax=a(例えばa \in \mathbb{Z})
```
* $\displaystyle \frac{dy}{dx}$ は $x$ で $y$ を微分する操作の記号。

```math
【例題】　\frac{d}{dx}y^n=\frac{d}{dx}y^n \frac{dx}{dy}=ny^{n-1} \frac{dx}{dy}
```






検算過程

```python
import sympy as sp
sp.var('x, y') 

Ao = sp.Eq(x*y,1)
Ar = sp.solve(Ao,y)
Ae=1/x
Ai = sp.integrate(Ae,x)

Bo = sp.Eq(sp.exp(x), y)
Br = sp.solve(Bo, x)

Cd=sp.diff(sp.exp(x),x)
Ci= sp.integrate(sp.exp(x),x)

sp.init_printing()
display(Ao)
print(sp.latex(Ao))
display(Ar)
print( "y="+sp.latex(Ar))
display(Ai)
print( "\int" +sp.latex(Ae)+ "dx="+sp.latex(Ai))
display(Bo)
print(sp.latex(Bo))
display(Br)
print( "x="+sp.latex(Br))

display(Cd)
print( "exp(x)'="+sp.latex(Cd))
display(Ci)
print( "\int e^x dx="+sp.latex(Ci))
```



[【初心者向け】三角関数と指数・対数関数の「巡回性」について。](https://qiita.com/ochimusha01/items/61d8cfa89dc078cbe472)

>**三角関数**の微分（<font color=blue>それぞれが-90度の変遷に対応</font>）

```math
\cos(θ)\frac{d^n}{dθ^n}=(-\sin(θ),-\cos(θ),\sin(θ),\cos(θ),…)\\
\sin(θ)\frac{d^n}{dθ^n}=(\cos(θ),-\sin(θ),-\cos(θ),\sin(θ),…)
```

>**三角関数**の積分（<font color=blue>それぞれが+90度の変遷に対応</font>）

```math
\int \int \int … \int \cos(θ)(dθ)=(\sin(θ),-\cos(θ),-\sin(θ),\cos(θ),…)\\
\int \int \int … \int \sin(θ)(dθ)=(-\cos(θ),-\sin(θ),\cos(θ),\sin(θ),…)
```
>**円描画関数**$e^{θi}=\cos(θ)+\sin(θ)$の微分（<font color=blue>それぞれが-90度の変遷に対応</font>）

```math
(\cos(θ)+\sin(θ)i)\frac{d^n}{dθ^n}=(-\sin(θ)+\cos(θ)i,-(\cos(θ)+\sin(θ)i),-(-\sin(θ)+\cos(θ)i),\cos(θ)+\sin(θ)i,…)\\
e^{ix}\frac{d^n}{dθ^n}=(i e^{i x}(-\log θi),-e^{ix},-i e^{i x}(\log θi),e^{ix},…)
```

>**円描画関数**$e^{θi}=\cos(θ)+\sin(θ)$の積分（<font color=blue>それぞれが+90度の変遷に対応</font>）

```math
\int \int \int … \int (\cos(θ)+\sin(θ)i)(dθ)=(-(-\sin(θ)+\cos(θ)i),-(\cos(θ)+\sin(θ)i),-\sin(θ)+\cos(θ)i,\cos(θ)+\sin(θ)i,…)\\
\int \int \int … \int e^{ix}(dθ)=(- i e^{i x}(\log θi),- e^{i x},i e^{i x}(-\log θi),e^{ix},…)
```
そしてその**数理的構造**(Mathematical Structure)は**確率ベクトル**(Probability Vector)のそれと確実に似通っているのです。
[数学的構造（すうがくてきこうぞう） - コトバンク](https://kotobank.jp/word/%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0-83260)