Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Giải phương trình ma trận tuyến tính hoặc hệ phương trình scalar trong Python

Để giải hệ phương trình tuyến tính ax = b (ma trận vuông full rank), dùng numpy.linalg.solve(). Trả về nghiệm "chính xác" x với shape giống b. Yêu cầu a vuông và khả nghịch.

Tham số

  • a (array_like): Ma trận hệ số (vuông).
  • b (array_like): Vectơ vế phải (ordinates).

Các bước thực hiện

Nhập NumPy, thiết lập hệ: x₀ + 2x₁ = 1, 3x₀ + 5x₁ = 2:

import numpy as np

arr1 = np.array([[1, 2], [3, 5]])  # Ma trận hệ số
arr2 = np.array([1, 2])            # Vế phải

print("Ma trận hệ số...\n", arr1)
print("\nVế phải...\n", arr2)
print("\nSố chiều ma trận hệ số...\n", arr1.ndim)
print("\nSố chiều vế phải...\n", arr2.ndim)
print("\nHình dạng ma trận hệ số...\n", arr1.shape)
print("\nHình dạng vế phải...\n", arr2.shape)

# Giải hệ
print("\nKết quả...\n", np.linalg.solve(arr1, arr2))

Ví dụ hoàn chỉnh

import numpy as np

arr1 = np.array([[1, 2], [3, 5]])
arr2 = np.array([1, 2])
print("Ma trận hệ số...\n", arr1)
print("\nVế phải...\n", arr2)
print("\nSố chiều ma trận hệ số...\n", arr1.ndim)
print("\nSố chiều vế phải...\n", arr2.ndim)
print("\nHình dạng ma trận hệ số...\n", arr1.shape)
print("\nHình dạng vế phải...\n", arr2.shape)
print("\nKết quả...\n", np.linalg.solve(arr1, arr2))

Kết quả đầu ra

Ma trận hệ số...
 [[1 2]
 [3 5]]
Vế phải...
 [1 2]
Số chiều ma trận hệ số...
 2
Số chiều vế phải...
 1
Hình dạng ma trận hệ số...
 (2, 2)
Hình dạng vế phải...
 (2,)
Kết quả...
 [-1.  1.]

Kiểm tra: 1*(-1) + 2*1 = 1 ✓; 3*(-1) + 5*1 = 2 ✓.