人工知能数学6週目
9139 ワード
課題目標
Python numpyパッケージを用いてコードを記述し,所与のマトリクスの2次元分解を求める.
参考資料:リンク
行列AAAの定義
numpyコードを記述して、以下の3 x 3マトリクスAAAを定義してください.
A=[3111−2−1111]A =\left[\begin{array}{rrr} 3 & 1 & 1\\1 & -2 & -1\\1 & 1 & 1\end{array}\right]A=⎣⎢⎡3111−211−11⎦⎥⎤
先に定義した行列AAAについて、LU分解、A=QRA=QRA=2次元を実行するnumpyコードを記述します.
numpyコードを記述して、以下の3ベクトルbmathbf{b}bを定義してください.
b=[412]\mathbf{b} =\left[\begin{array}{rrr} 4\\1\\2\end{array}\right]b=⎣⎢⎡412⎦⎥⎤
行列AAAの2次元分解を用いて,Ax=bAMathbf{x}=Mathbf{b}Ax=bを計算するnumpyコードを記述する.
Ax=bAmathbf{x}=mathbf{b}Ax=bをQRx=bQRmathbf{x}=mathbf{b}QRx=bと見なし、以下の問題を解決する. Rx=yRmathbf{x}=mathbf{y}はRx=y,Qy=bqmathbf{y}=mathbf{y}=mathbf{y=b解答ymathbf{y}yに設定されている. Rx=yRmathbf{x}=mathbf{y}Rx=y問題、xmathbf{x}xを得る. 解放線形系Qy=bqmathbf{y}=mathbf{b}Qy=b
Qは直交行列(直交行列)であるため,Qの逆行列は前置行列QTQ^{T}QTと同じである.
これらの性質を利用して,ymathbf{y}yを解くnumpyコードを記述する.
RRRは、逆行列が存在する上三角行列(上三角行列)である.
これらの性質を利用して,xmathbf{x}xを求めるnumpyコードを記述する.
コード検証を記述する前に2次元分解を用いて求めたxmathbf{x}xが線形系Ax=bAmathbf{x}=mathbf{b}Ax=bの解であるか否かを検証する.
Python numpyパッケージを用いてコードを記述し,所与のマトリクスの2次元分解を求める.
参考資料:リンク
行列AAAの定義
numpyコードを記述して、以下の3 x 3マトリクスAAAを定義してください.
A=[3111−2−1111]A =\left[\begin{array}{rrr} 3 & 1 & 1\\1 & -2 & -1\\1 & 1 & 1\end{array}\right]A=⎣⎢⎡3111−211−11⎦⎥⎤
import numpy as np
import numpy.linalg
# 행렬 코딩
A = np.array(([3,1,1,1], [1,-2,1,1], [1,-1,1,1], [1,-1,1,1]))
print(A)
print(np.shape(A))
マトリックスAAAの二次元分解計算先に定義した行列AAAについて、LU分解、A=QRA=QRA=2次元を実行するnumpyコードを記述します.
# QR 분해
Q, R = np.linalg.qr(A)
print("Q:", Q)
print("R:", R)
## QR 분해 결과 체크: 연산결과가 A와 동일한지 체크
AA = np.dot(Q, R)
print("AA:", AA)
ベクトルの定義numpyコードを記述して、以下の3ベクトルbmathbf{b}bを定義してください.
b=[412]\mathbf{b} =\left[\begin{array}{rrr} 4\\1\\2\end{array}\right]b=⎣⎢⎡412⎦⎥⎤
# 벡터 코딩
b = np.array((4,1,2))
print(b)
print(np.shape(b))
2 D分解を使用して線形系Ax=bAmathbf{x}=mathbf{b}Ax=bを解放行列AAAの2次元分解を用いて,Ax=bAMathbf{x}=Mathbf{b}Ax=bを計算するnumpyコードを記述する.
Ax=bAmathbf{x}=mathbf{b}Ax=bをQRx=bQRmathbf{x}=mathbf{b}QRx=bと見なし、以下の問題を解決する.
Qは直交行列(直交行列)であるため,Qの逆行列は前置行列QTQ^{T}QTと同じである.
これらの性質を利用して,ymathbf{y}yを解くnumpyコードを記述する.
# Qy = b 풀기
y = np.linalg.lstsq(Q, b, rcond=None)[0]
print("y:", y)
print(np.shape(y))
解線形系Rx=yRmathbf{x}=mathbf{y}Rx=yRRRは、逆行列が存在する上三角行列(上三角行列)である.
これらの性質を利用して,xmathbf{x}xを求めるnumpyコードを記述する.
# Rx = y 풀기
x = np.linalg.lstsq(R, y, rcond=None)[0]
print("x:", x)
print(np.shape(x))
線形システムを決定する年コード検証を記述する前に2次元分解を用いて求めたxmathbf{x}xが線形系Ax=bAmathbf{x}=mathbf{b}Ax=bの解であるか否かを検証する.
## 결과 검증
bb = np.dot(A, x)
print(bb)
if np.allclose(b, bb):
print("Ok")
else:
print("something wrong")
Reference
この問題について(人工知能数学6週目), 我々は、より多くの情報をここで見つけました https://velog.io/@wijihoon123/인공지능수학-6주차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol