0
0

More than 1 year has passed since last update.

【Python演算処理】高校までの数学と専門数学の挟間①「等差数列と一次関数」の学び直し。

Last updated at Posted at 2022-08-21

相変わらず「高校までの数学と専門数学の挟間」の徘徊を続けています。この話題に戻るのも一体何度目やら…

「等差数列(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
    image.png
  • ところで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

ところでこうした計算式、何処かで見覚えが…
双曲線関数-Wikipedia
image.png
image.png

\cosh(x)=\frac{e^{+x}+e^{-x}}{2}\\
\sinh(x)=\frac{e^{+x}-e^{-x}}{2}\\
\tanh(x)=\frac{\sinh(x)}{\cosh(x)}

三角関数-Wikipedia
image.png
600px-Circle_cos_sin.gif

\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回 ニューラルネットワーク最速入門 ― 仕組み理解×初実装(中編)
    image.png
  • 放物線関数の指数射影$e^{-x^2}$に由来するガウスの誤差関数(ERF=Error Function)や相補誤差関数 (ERFC=Complementary Error Function) もまた同様の数学的特性を備えている為、活性化関数候補として意識され得る。
    【数理考古学】誤差関数(ERF)と相補誤差関数 (ERFC)
    image.png

    image.png
  • 機械学習の活性化関数としては、これまで(電気工学からの援用たる)ヘヴィサイドのステップ関数、(確率論からの援用たる)ロジスティックシグモイド、(機能的に同等ながらより実践的な)双曲線正接関数などが採用されてきたが、2011年以降は正規化線形ユニット(ReLU=Rectified Linear Unit)およびそれを平滑化近似したソフトプラス(softplus)関数(SmoothReLU関数)が主流になりつつある。
    正規化線形関数-Wikipedia
    中には(金融業界で有名なブラック–ショールズ方程式同様に)ガウス雑音を含む拡張の系統も。
    ブラック–ショールズ方程式-Wikipedia

ところで、今回ここに名前だけ登場した「円(楕円)関数」「放物線関数」「双曲線関数」は離心率(Eccentricity)εを用いた単一の式で表し得る。座標系としては水平面が極座標系、垂直面が円錐座標系を採用。以降の投稿ではこの系列の考え方との統合も試みていく。
【連続極座標系】離心率(Eccentricity)εの極限に現れる虚数(Imaginal)について。
Ecc102.gif
そんな感じで以下続報…

0
0
1

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