QR Decomposition หรืออาจเรียกว่า QR Factorization คือการแยกเมตริกซ์ M ออกสองส่วนตามสมการ
เมื่อ
M เป็นเมตริกซ์ขนาด เมื่อ
Q เป็น orthogonal matrix
R เป็น upper triangular matrix
มีหลาย algorithm ที่ใช้หา QR แต่ในข้อเขียนนี้จะใช้ algorithm เรียกว่า Gram-Shmidt process
Algorithm
การทำงานของ Gram-Shmidt จะต้องทั้งหมด n ขั้นตอน เมื่อ n คือจำนวน column vectors ของเมตริกซ์ M
เมื่อ คือ column vector ของ M ขั้นตอนการทำงานคือ
1. ให้ และคำนวณ
2. ให้ และคำนวณ
3. ให้ และคำนวณ
n. ให้ และคำนวณ
สุดท้ายแล้วจะได้
ตัวอย่าง
จะได้
คำนวณหา QR
ดังนั้น
Python implementation
การหา QR ด้วยภาษา Python มีหลายทางได้แก่ numpy.linalg.qr, scipy.linalg.qr หรือ sympy.Matrix
Numpy /Scipy :
import numpy as np
M = np.array([[1,1,0],[1,0,1],[0,1,1]])
Q,R = np.linalg.qr(M)
เอกสารอ้างอิง
[1] https://en.wikipedia.org/wiki/QR_decomposition
[2] https://smarter-machine.blogspot.com/2021/03/basic-linear-algebra-orthogonal-matrix.html
[3] https://smarter-machine.blogspot.com/2021/03/basic-linear-algebra-lu-matrix.html
[4] https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process#Numerical_stability
ความคิดเห็น
แสดงความคิดเห็น