[TIL]Day 6-人工知能数学(1)


Jupyter Notebook


コマンド>jupyter notebook

  • 「Markdown」形式で作成
  • Oredered List (1. ~, 2. ~ ...) 作成時、
    一番前のindexで決定された数字は
  • です.

    Numpy array


    既存のLISTデータ構造の演算処理速度が遅く、Numpyを使うのが速い!
    import numpy as np
    
    arr1 = np.array([1,2,3])  # 1차원 배열 or 1차원 (열)벡터
    arr2
    arr_2d = np.array([[1,2],[3,4]]) # 2x2 행렬
    print(arr1.shape) # np.shape(arr1) -> (3,)
    # 파이썬 문법상 그냥 3과 다르게 인지 하기 위해 3뒤에 콤마가 옴
    %timeit~->時間経過ポテンショメータコマンドの確認

    せんけいシステム


    連立一次方程式「Ax=b」の形状

    1.リニアシステム


  • 線形代数の目標は?
    いかなる連立の1次方程式,すなわち線形系も,定型的な方法で表され,解いた.( Ax = b )

  • リニアシステムコンポーネント
    *各方程式を*線形方程式(線形方程式)と呼ぶ
    *理解する未知数をUnknown(または変数)と呼びます.
    *m個の線形方程式とn個の未知数からなる連立一次方程式をm×n線形方程式群と呼ぶ
  • ※未知数が1勝しかない場合=>線形方程式 そうでなければ、非線形方程式(曲線)非線形方程式と呼ぶ。 ex) sinx+y = 2 / 3x+y^2 = 2 / xy+z = 3

    線形代数参照ブログ:https://twlab.tistory.com/3?category=668741

    mxn線形系のAx=bは定理を表す

  • 式は行、挙動式(線形方程式<>行)
  • mは線形方程式(線形方程式)の個数
  • である
  • nは未知数
  • である.
  • Aはm×n行列
  • である
  • xはnベクトル
  • である
  • bはmベクトル
  • である.

    プログラミングの実践

    # 행렬 표현
    A = np.array( [[3,1,-1],[1,-2,-1],[1,1,1]] )
    A.shape # np.shape(A) -> (3,3)
    
    # 벡터 표현
    b = np.array( [4,1,2] )
    b.shape # (3,)
    
    # 역행렬 구하기
     A_inv = np.linalg.inv(A)  # A^(-1)
     print(A_inv)
     '''
     [[ 5.00000000e-01 -7.40148683e-17 -5.00000000e-01]
     [ 1.00000000e+00 -1.00000000e+00 -2.00000000e+00]
     [-1.50000000e+00  1.00000000e+00  3.50000000e+00]]
     '''
     
     #역행렬을 이용한 선형시스템 Ax = b 해 구하기
     x = A_inv @ b # @가 행렬의 곱셈 => np.matmul(A_inv,b)
     print(x)  # [ 1. -1.  2.]
     x.shape  # (3,)
     
     # 결과 검증
     bb = np.matmul(A,x) # bb = A @ x
     if np.linalg.norm( b-bb ) < 1e-3 :
     	print("ok")
     else :
     	print("something wrong")
     
     #np.linalg.norm(X)는 vector의 크기를 float 또는 행렬로 반환
     # 1e-3 = 10^(-3)

    2.ガウス消去法


    用語と表現

  • A=0、特別です
    「Aの逆行列(逆行列)が存在しない場合、Aは奇異行列と呼ぶ.
  • 解を有する線形系->整合性
  • 解のない線形系->不一致
  • フォワードクリア


    与えられた線形系を下へ行くほど簡単な形式の線形方程式を持つ方法。 0を上から下へ、左から右へ入力し、Aの値をクリアします。

    こうたいちかんほう


    順方向消去法で得られた行列は上下に逐次展開式である.

    消去のための3つの基本行操作(Elementary Row Operations,EROS)


  • 置換(置換):r[j]=r[j]-m x r[i]
    :更新、j 1行目に対するi 1行目のm倍を減算

  • スケーリング(スケーリング):r[j]=s x r[j]
    :s倍j行目更新

  • Interchange(交換):r[j],r[i]=r[i],r[j]
    :j 1行目とi 1行目の交換位置.
  • 前方クリアランス法の価値

  • によって与えられた線形系を最も解きやすい形状に変形した.
  • は、所与の線形系のrank(意味のある式の個数)を表す.
    ex)0 x=0->無意味式
  • 線形系が一致しているか不一致しているかを教えてください.
  • 3.LU分解


    マトリックスぶんかい


    :行列の因数分解は,計算を容易にするために分解されると考えられる.

  • (P)LU分解(LU分解)
    ガウス消去法 L=Lower三角行列(下三角行列) U=Upper三角行列(上三角行列) A = LU Ax=b ▶ (LU)x=b ▶ L(Ux)=b ▶ (1) Ly=b ▶ (2) Ux=y
    (1) Forward-substituation
    Ly=b로 나온 y값을 가지고
    
    (2) Back-substituation
    Ux=y
  • (P)LU分解の意味

  • "L":Aの順方向クリアのための置換およびスケーリングのためのEROSを記録するマトリクス
  • .
  • 'U':前方消去A、残りのUpper三角行列
  • "P":Aの順方向クリアのための交換のためのEROSを記録するオプション行列
  • .
    => A = (P) x U x L

    LU分解の利用


  • すうちあんていせい
    :Ax=bの解直接求逆行列A**(-1)は不安定である.

  • b常時更新
    :Ax=bのbが常に変化する場合は、AをPLUに分解してリアルタイムでxを求めることができる.