Bài viết sau cung cấp các hàm và cú pháp thao tác cơ bản với ma trận trong Python. Hai thư viện được sử dụng là sympy
và numpy
. Một số hàm của numpy
vẫn nhận parameter của sympy
. Thư viện sympy
chủ yếu được dùng để render kết quả dạng $\LaTeX$
import sympy as sp
import numpy as np
from IPython.display import display
sp.init_printing()
A = np.matrix([[-1, 6, -12], [0, 18, -30], [0, 9, -15]]) # Use matrix, same
B = np.array([[1, 2, -1], [3, 5, 1], [4, 7, -5]]) # Use array, same
print(A)
print(B)
V = np.array([1, 2, 3])
print(V)
np.trace(A)
sp.Matrix(A.T)
sp.Matrix(np.identity(3, int))
sp.Matrix(A + B)
A = np.matrix([[-1, 6, -12], [0, 18, -30], [0, 9, -15]])
B = np.matrix([[1, 2, -1], [3, 5, 1], [4, 7, -5]])
sp.Matrix(np.multiply(A, B))
A = sp.Matrix([[-1, 6, -12], [0, 18, -30], [0, 9, -15]])
B = sp.Matrix([[1, 2, -1], [3, 5, 1], [4, 7, -5]])
sp.Matrix(A*B)
sp.Matrix(A@B)
sp.Matrix(3*A)
np.dot(np.array([1,2,3]), np.array([3,4,5]))
A = np.matrix([[1, 2, -1], [3, 5, 1], [4, 7, -5]])
np.linalg.det(A) # Only numpy
A = np.matrix([[1, 3, -1], [3, 5, 1], [4, 7, -5]]) # Use numpy
sp.Matrix(A**-1) # Ugly result
A = sp.Matrix([[1, 3, -1], [3, 5, 1], [4, 7, -5]]) # Use sympy
sp.Matrix(A**-1) # mmmmmm
A = np.matrix([[-1, 6, -12], [0, 18, -30], [0, 9, -15]])
np.linalg.eig(A)[0] # Only numpy
np.linalg.eig(A)[1] # Only numpy
Đối với sympy:
A = sp.Matrix([[-1, 6, -12], [0, 18, -30], [0, 9, -15]])
Hàm eigenvals()
trả về dạng (eigenvalue : algebraic multiplicity)
A.eigenvals() # Only with sympy
Kết quả trả về gồm (eigenvalue, algebraic multiplicity, eigenvector)
A.eigenvects() # Only with sympy
Trả về (modal matrix, Jordan canonical form).
Jordan canonical form có thể là spectral form nếu tất cả các eigenvectors đều linearly independent
A.jordan_form() # Only with sympy