相変わらず「高校までの数学と専門数学の挟間」の徘徊を続けています。この話題に戻るのも一体何度目やら…
「等差数列(Arithmetic Progression)と一次関数(Linear Function)の関係」についての再確認
等差数列(Arithmetic Progression)$[a_{-∞},…,a_{-3},a_{-2},a_{-1},a_0,a_1,a_2,a_3,…,a_∞]$とは、初項(First Term)$a_0$と公差(Common Difference)d、および各項の添字(Index)n($a_0$から数えた順番)を用いて表すと$a_n=a_0+dn$となる数列をいう。
import sympy as sp
import numpy as np
A,a,d,n,i,N = sp.symbols('A,a,d,n,i,N')
AP=a+d*n
def Arithmetic_Progression(o,p,q):
ua=AP.subs([(a, o), (d, p)])
u0=[]
for ind in range(q):
u0.append(ua.subs(n,ind))
u1=sp.Matrix([u0])
return u1
sp.init_printing()
#元式
display(AP)
#初項0,交差1,項数10
a0=Arithmetic_Progression(0,1,10)
display(a0)
print(sp.latex(a0)+"(a=0,d=1,n=10)")
#初項3,交差3,項数10
a1=Arithmetic_Progression(3,3,10)
display(a1)
print(sp.latex(a1)+"(a=3,d=3,n=10)")
a_n=a_0+dn\\
\left[\begin{matrix}0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9\end{matrix}\right](a=0,d=1,n=10)\\
\left[\begin{matrix}3 & 6 & 9 & 12 & 15 & 18 & 21 & 24 & 27 & 30\end{matrix}\right](a=0,d=1,n=10)
- 小学校の授業では添字nを1から始め$a_n=a_1+d(n-1)$と習った。表現に揺らぎ幅があるだけで基本的に同じ事を言っている。
等差数列-Wikipedia
説明変数(Explanatory Variable)xと目的変数(Response Variable)yの関係を傾き(Slope)aと切片(Intercept)bを用いて表して表した一次関数(Linear Function)y=ax+bと重ねると「初項=切片、公差=傾き」と対応する。
- デカルト座標系(Cartesian coordinate system)で考えると、一時関数y=ax+bがy軸と交差する(x=0となる)のはy=bの時、x軸と交差する(y=0となる)のは$y=-\frac{b}{a}$の時で両者はb=0の時重なる。つまりb=1の時にはy軸とy=1で、x軸と$y=-\frac{1}{a}$で交差。さらにa=b=1の時にはx軸との交点が-1となり間隔1の二次元格子(2D Grid)が「正方形を敷き詰めた(Square-blocked)」形で現出。これが「立方体を敷き詰めた(Cube-blocked)」三次元デカルト空間概念の出発点であり、全体として均等尺(Even Scale)による方眼座標系を構築する。
一次関数-Wikipedia
- ところでa=0の時、一次関数y=ax+bは定数関数y=bに退歩(Degenerate)する(定数関数y=bは退歩した一次関数、すなわち傾きaが0の一次関数とみなせる)。①正円は退歩した楕円、すなわち離心率が0の楕円と見做せる。②線分は接平面の上に存在する退化した放物線とも長さ0の辺を持つ退化した長方形とみなすこともできる。③双曲線は、漸近線を共通する族を通じて、1点で交わる2つの直線に退歩。④点は半径0の退歩した円周とも、長さ0の線分とも、1点で交わる長さ0の直線集合とも見做せる。
退化(数学)-Wikipedia
また①1点からなる集合は連続体の退化したものとみなせる(順序尺度は間隔尺度や比例尺度が退歩した結果でありつつ、名義尺度と異なり各項目の順番は維持している)。
変数の尺度
②(ヘヴィサイドの階段関数の様に測定時間などごとに)単一の値しか取らない確率変数は退化分布(Degenerate Distribution)に従う。
退化分布-Wikipedia
③行列の階数が列の数よりも少ない時も退歩と表現する(「階数・退化次数の定理(Rank–Nullity Theorem)=最も簡単なケースでは、ある行列の階数(Rank)と退化次数(Nullity)の和がその行列の列数に等しい)。
階数・退化次数の定理
一方、真逆のプロセスたる進歩(Progress)の結果は一意ではなく、まさにその全貌を明らかにせんとする姿勢の延長線上に多様体(Manifold)概念が現れてくるのである。
多様体の基礎のキソ(PDF)
#初項1,交差0,項数10
a2=Arithmetic_Progression(1,0,10)
display(a2)
print(sp.latex(a2)+"(a=1,d=0,n=10)")
a_n=a_0+dn\\
\left[\begin{matrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\end{matrix}\right](a=1,d=0,n=10)
「等差数列(Arithmetic Progression)の総和」についての再確認
#等差関数の総和
a3=Arithmetic_Progression(1,1,10)
display(a3)
print(sp.latex(a3)+"(a=1,d=1,n=10)")
S1=np.sum(a3)
display(S1)
print(sp.latex(S1) )
S0=sp.Sum(A, (i, 1, N))
display(S0)
print(sp.latex(S0))
a4=S0.subs([(A, a3), (N, len(a3))])
display(a4)
print(sp.latex(a4)+"="+sp.latex(S1))
\sum_{i=1}^{10} \left[\begin{matrix}1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\end{matrix}\right]=55
Sympyではこうも計算出来ます。一般にこの形式で紹介されていますが、これでは「公差1の場合」しか計算出来ません。他に追加パラメーターが存在するのか、そもそも「公差1以外の場合」についての需要が存在しないのか…
Sum()とsummation()の違いってなんだろう
import sympy as sp
k=sp.symbols('k', integer = True)
a,d=sp.symbols('a,d')
a0=sp.Sum(k, (k,1,10) )
a1=sp.summation(k, (k,1,10) )
sp.init_printing()
#表示
display(a0)
display(a1)
print(sp.latex(a0)+"="+sp.latex(a1))
\sum_{k=1}^{10} k=55
- 一方、こうした考え方は古典的物理学における「等加速度直線運動における速度変位」の計算方法とも対応してくる。
等加速度直線運動における速度変位
ちなみにガウスは幼少時、等比数列の総和は①インデックスを反転させた数列を元数列を足し合わせるとデータ個数分の掛け算になる。②ただしその総計は二倍となるので二で割る、という計算方法を発見したと言われています。そういえば総面積を計算すると2倍になるのは偶関数の特徴…
# ガウスの解き方
a3r=sp.Matrix([a3[::-1]])
a4s=sp.Matrix(np.array(a3)+np.array(a3r))
display(a3r)
display(a4s)
print("\frac{"+sp.latex(a3)+"+"+sp.latex(a3r)+"}{2}=\frac{"+sp.latex(a4s)+"}{2}=\frac{11*10}{2}=55")
\sum_{k=n}^{m}\frac{A_k+A_{-k}}{2}=\\
\frac{\left[\begin{matrix}1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\end{matrix}\right]+\left[\begin{matrix}10 & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1\end{matrix}\right]}{2}=\frac{\left[\begin{matrix}11 & 11 & 11 & 11 & 11 & 11 & 11 & 11 & 11 & 11\end{matrix}\right]}{2}\\=\frac{11*10}{2}=55
さらに項数で割れば「公差=傾きの平均」5.5が求まります。一方、足し合わせる代わりに引いた場合の総計は0。そして総面積を計算すると0になるのは奇関数の特徴…
# ガウスの解き方に沿った「奇関数性」の確認
a3r=sp.Matrix([a3[::-1]])
a4s=sp.Matrix(np.array(a3)-np.array(a3r))
display(a3r)
display(a4s)
print("\frac{"+sp.latex(a3)+"-"+sp.latex(a3r)+"}{2}=\frac{"+sp.latex(a4s)+"}{2}=0")
\sum_{k=n}^{m}\frac{A_k-A_{-k}}{2}\\
=\frac{\left[\begin{matrix}1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\end{matrix}\right]-\left[\begin{matrix}10 & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1\end{matrix}\right]}{2}\\=\frac{\left[\begin{matrix}-9 & -7 & -5 & -3 & -1 & 1 & 3 & 5 & 7 & 9\end{matrix}\right]}{2}\\=0
- 統計学の世界においてはここで「平均とセットで分布状態を表すパラメーター」として分散(Variance)の概念が登場する。
【Python演算処理】行列演算の基本④大源流における記述統計学との密接な関連性?
ところでこうした計算式、何処かで見覚えが…
双曲線関数-Wikipedia
\cosh(x)=\frac{e^{+x}+e^{-x}}{2}\\
\sinh(x)=\frac{e^{+x}-e^{-x}}{2}\\
\tanh(x)=\frac{\sinh(x)}{\cosh(x)}
\cos(θ)=\frac{e^{+θi}+e^{-θi}}{2}\\
\sin(θ)=\frac{e^{+θi}-e^{-θi}}{2}\\
\tan(θ)=\frac{\sin(θ)}{\cos(θ)}
Tan(θ)の値は上掲の「等比数列における公差=一次元関数における傾き」そのもので、これをTanh(x)のxに与えた結果が以下。
\tanh(\tan(\frac{π}{2})=+∞)=+∞\\
\tanh(\tan(\frac{π}{4})=1)=0.7615942\\
\tanh(\tan(0)=0)=0\\
\tanh(-\tan(\frac{π}{4})=-1)=-0.7615942\\
\tanh(\tan(\frac{π}{2})=-∞)=-∞
- 上掲の図を見ても分かる様にtanh(x)関数はその関数としての特性がシグモイド関数に重なる為、機械学習分野において活性化関数(Activation Function)候補と目される。
第2回 ニューラルネットワーク最速入門 ― 仕組み理解×初実装(中編)
- 放物線関数の指数射影$e^{-x^2}$に由来するガウスの誤差関数(ERF=Error Function)や相補誤差関数 (ERFC=Complementary Error Function) もまた同様の数学的特性を備えている為、活性化関数候補として意識され得る。
【数理考古学】誤差関数(ERF)と相補誤差関数 (ERFC)
- 機械学習の活性化関数としては、これまで(電気工学からの援用たる)ヘヴィサイドのステップ関数、(確率論からの援用たる)ロジスティックシグモイド、(機能的に同等ながらより実践的な)双曲線正接関数などが採用されてきたが、2011年以降は正規化線形ユニット(ReLU=Rectified Linear Unit)およびそれを平滑化近似したソフトプラス(softplus)関数(SmoothReLU関数)が主流になりつつある。
正規化線形関数-Wikipedia
中には(金融業界で有名なブラック–ショールズ方程式同様に)ガウス雑音を含む拡張の系統も。
ブラック–ショールズ方程式-Wikipedia
ところで、今回ここに名前だけ登場した「円(楕円)関数」「放物線関数」「双曲線関数」は離心率(Eccentricity)εを用いた単一の式で表し得る。座標系としては水平面が極座標系、垂直面が円錐座標系を採用。以降の投稿ではこの系列の考え方との統合も試みていく。
【連続極座標系】離心率(Eccentricity)εの極限に現れる虚数(Imaginal)について。
そんな感じで以下続報…