Eigenvalues (ค่าเฉพาะ) และ Eigenvectors (เวกเตอร์เฉพาะ) สำคัญใน Linear Algebra ใช้ใน PCA, Spectral Clustering, Vibration Analysis, Quantum Mechanics ฯลฯ
สำหรับ Square Matrix A: A·v = λ·v โดย λ = Eigenvalue, v = Eigenvector
SciPy มีฟังก์ชัน scipy.linalg.eig() คำนวณทั้งคู่พร้อมกัน
ไวยากรณ์
scipy.linalg.eig(matrix)
ตัวอย่างโค้ด
from scipy import linalg
import numpy as np
my_arr = np.array([[5, 7], [11, 3]])
eg_val, eg_vect = linalg.eig(my_arr)
print("The Eigenvalues are :")
print(eg_val)
print("The Eigenvectors are :")
print(eg_vect)
ผลลัพธ์
The Eigenvalues are : [12.83176087+0.j -4.83176087+0.j]
The Eigenvectors are : [[ 0.66640536 -0.57999285]
[ 0.74558963 0.81462157]]
คำอธิบาย
นำเข้า scipy.linalg และ numpy
สร้างเมทริกซ์ 2x2 ด้วย NumPy
เรียก
linalg.eig()คืนค่า (eigenvalues, eigenvectors)eigenvalues เป็น Complex Numbers (ส่วนจินตภาพเป็น 0 สำหรับเมทริกซ์สมมาตร)
eigenvectors แต่ละคอลัมน์ตรงกับ eigenvalue ตัวเดียวกัน
ฟังก์ชันเกี่ยวข้องใน scipy.linalg
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| eig() | General Eigenvalues/Eigenvectors |
| eigh() | สำหรับ Hermitian/Symmetric Matrix (เร็วกว่า, ผลลัพธ์ Real) |
| eigvals() | คืนค่าเฉพาะ Eigenvalues อย่างเดียว |
| eigvalsh() | Eigenvalues สำหรับ Symmetric Matrix |
การตรวจสอบผลลัพธ์
# ตรวจสอบ: A * v ≈ λ * v
A = my_arr
for i in range(len(eg_val)):
lambda_i = eg_val[i]
v_i = eg_vect[:, i]
print(f"λ={lambda_i:.4f}: A@v = {A @ v_i}, λ*v = {lambda_i * v_i}")
ประยุกต์ใช้: PCA (Principal Component Analysis) ใช้ Eigenvectors ของ Covariance Matrix เป็น Principal Components