[TIL]Day 6-人工知能数学(1)
Jupyter Notebook
コマンド>jupyter notebook
一番前の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は定理を表す
プログラミングの実践
# 행렬 표현
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の逆行列(逆行列)が存在しない場合、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行目の交換位置.
前方クリアランス法の価値
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分解の意味
=> A = (P) x U x L
LU分解の利用
すうちあんていせい
:Ax=bの解直接求逆行列A**(-1)は不安定である.
b常時更新
:Ax=bのbが常に変化する場合は、AをPLUに分解してリアルタイムでxを求めることができる.
Reference
この問題について([TIL]Day 6-人工知能数学(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@hook0318/TIL-Day-6-인공지능-수학1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol