Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

linalg.solve (a, b) [nguồn]#solve(a, b)[source]#

Giải một phương trình ma trận tuyến tính hoặc hệ thống phương trình vô hướng tuyến tính.

Tính toán giải pháp chính xác của người Viking, x, của các phương trình ma trận tuyến tính được xác định rõ ràng, tức là Ax = b.

Tham số (Mạnh, m, m) mảnga(…, M, M) array_like

Ma trận hệ số.

B {(Mạnh, M,), (Mạnh, M, K)}, Array_Like{(…, M,), (…, M, K)}, array_like

Các giá trị biến phụ thuộc hoặc của các giá trị phụ thuộc.

ReturnSx {(Mạnh, m,), (Mạnh, m, k)} ndarrayx{(…, M,), (…, M, K)} ndarray

Giải pháp cho hệ thống a x = b. Hình dạng trả lại giống hệt với b.

Risislinalgerror

Nếu A là số ít hoặc không vuông.

Ghi chú

Mới trong phiên bản 1.8.0.

Quy tắc phát sóng áp dụng, xem tài liệu numpy.linalg để biết chi tiết.

Các giải pháp được tính toán bằng cách sử dụng thói quen Lapack _gesv.

Phải là hình vuông và có thứ hạng đầy đủ, tức là, tất cả các hàng (hoặc, tương đương, các cột) phải độc lập tuyến tính; Nếu một trong hai không đúng, hãy sử dụng lstsq cho các giải pháp tốt nhất tốt nhất của hệ thống/phương trình.

Người giới thiệu

1

G. Strang, Đại số tuyến tính và các ứng dụng của nó, tái bản lần 2, Orlando, FL, Academy Press, Inc., 1980, pg. 22.

Ví dụ

Giải quyết hệ phương trình x0 + 2 * x1 = 13 * x0 + 5 * x1 = 2:

>>> a = np.array([[1, 2], [3, 5]])
>>> b = np.array([1, 2])
>>> x = np.linalg.solve(a, b)
>>> x
array([-1.,  1.])

Kiểm tra xem giải pháp có chính xác không:

>>> np.allclose(np.dot(a, x), b)
True

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Trong một bài viết trước, chúng tôi đã xem xét giải quyết vấn đề LP, tức là một hệ phương trình tuyến tính với các ràng buộc bất bình đẳng. Nếu tập hợp các phương trình tuyến tính của chúng tôi có các ràng buộc có tính xác định, chúng tôi có thể biểu diễn vấn đề dưới dạng ma trận và áp dụng đại số ma trận. Các phương thức ma trận biểu thị nhiều phương trình tuyến tính theo cách nhỏ gọn trong khi sử dụng các hàm thư viện ma trận hiện có.

Chúng tôi sẽ sử dụng Numpy (một hướng dẫn tốt ở đây) và Scipy (hướng dẫn tham khảo ở đây). Để cài đặt các gói tuyệt vời này, có hàng tấn tài nguyên trên web, chúng tôi chỉ chỉ ra việc cài đặt ngăn xếp Scipy.

Một ví dụ

Khi thực hành của chúng tôi, chúng tôi sẽ tiến hành một ví dụ, đầu tiên viết mô hình ma trận và sau đó sử dụng Numpy cho một giải pháp.Numpy for a solution.

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Bây giờ, chúng ta có thể chính thức hóa vấn đề với ma trận:

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Sau đó, các phương trình tuyến tính có thể được viết theo cách này:

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Để giải cho vectơ X, chúng ta phải lấy nghịch đảo của ma trận A và phương trình được viết như sau:

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Sử dụng Numpy để giải quyết hệ thống

import numpy as np
# define matrix A using Numpy arrays
A = np.array([[2, 1, 1],
 [1, 3, 2],
 [1, 0, 0]]) 

#define matrix B
B = np.array([4, 5, 6]) 

# linalg.solve is the function of NumPy to solve a system of linear scalar equations
print "Solutions:\n",np.linalg.solve(A, B ) 

Solutions:
[  6.  15. -23.]

Vì vậy, các giải pháp là:

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Khi ma trận lớn lên

Khi số lượng biến tăng, kích thước của ma trận A cũng tăng lên và nó trở nên tốn kém về mặt tính toán để có được sự đảo ngược ma trận của A. Trong số các phương pháp khác nhau, chúng tôi sẽ xem xét 3 quy trình để đưa ma trận trở thành ma trận đơn giản hơn: Phân hủy Lu, phân rã QR và phương pháp lặp Jacobi.
computationally expensive to get the matrix inversion of A. Among the various methods, we will consider 3 procedures in order to get matrix A factorized into simpler matrices: the LU decomposition, the QR decomposition and the Jacobi iterative method.

Lu phân hủy

Sự phân hủy LU, còn được gọi là hệ số thấp hơn, là một trong những phương pháp giải các hệ phương trình tuyến tính. Đúng như tên gọi, nhân tố LU phân hủy ma trận A thành một sản phẩm của hai ma trận: một ma trận hình tam giác thấp hơn L và ma trận hình tam giác trên U. Sự phân hủy có thể được biểu diễn như sau:

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Lu phân hủy với Scipy

#import linalg package of the SciPy module for the LU decomp
import scipy.linalg as linalg 
#import NumPy
import numpy as np
#define A same as before
A = np.array([[2., 1., 1.],
 [1., 3., 2.],
 [1., 0., 0.]]) 

#define B
B = np.array([4., 5., 6.]) 

#call the lu_factor function
LU = linalg.lu_factor(A) 

#solve given LU and B
x = linalg.lu_solve(LU, B) 
print "Solutions:\n",x

#we get the same solution as before
Solutions:
[  6.  15. -23.] 

#now we want to see how A has been factorized, P is the so called Permutation matrix
P, L, U = scipy.linalg.lu(A) 

print P
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
print L
[[ 1.   0.   0. ]
 [ 0.5  1.   0. ]
 [ 0.5 -0.2  1. ]]
print U
[[ 2.   1.   1. ]
 [ 0.   2.5  1.5]
 [ 0.   0.  -0.2]]

Từ các biến L và U như được in trong mã, chúng ta có thể biểu diễn một yếu tố thành yếu tố:

& nbsp; & nbsp;  

Hướng dẫn how to solve matrix in python - cách giải ma trận trong python

Làm thế nào để bạn giải quyết vấn đề ma trận trong Python?

Làm thế nào để giải quyết vấn đề ma trận số lớn trong Python..
Hiểu vấn đề. Chúng ta cần tìm phần tử tối đa trong mỗi hàng và xem đó có phải là tối đa trong cột của nó không. ....
Tìm phần tử tối đa trong hàng. ....
Xác minh phần tử tối đa trong cột tương ứng của nó. ....
Đếm các yếu tố thỏa mãn điều kiện ..

Làm thế nào để bạn tính toán ma trận trong Python?

Trong ma trận Python có thể được triển khai dưới dạng danh sách 2D hoặc mảng 2D ...
Thêm ():- Hàm này được sử dụng để thực hiện bổ sung ma trận khôn ngoan ..
Trừ ():- Hàm này được sử dụng để thực hiện phép trừ Ma trận khôn ngoan ..
chia ():- Hàm này được sử dụng để thực hiện phân chia ma trận yếu tố ..

Bạn có thể sử dụng ma trận trong Python không?

Ma trận là một trong những cấu trúc dữ liệu quan trọng có thể được sử dụng trong các tính toán toán học và khoa học.Python không có cách đơn giản để thực hiện kiểu dữ liệu ma trận.Ma trận Python có thể được tạo bằng cách sử dụng kiểu dữ liệu danh sách lồng nhau và bằng cách sử dụng thư viện Numpy.Python matrix can be created using a nested list data type and by using the numpy library.

Python có thể giải các phương trình tuyến tính?

Giải pháp tượng trưng với Sympy Sympy là một gói cho các giải pháp tượng trưng trong Python có thể được sử dụng để giải các hệ phương trình.Cách tiếp cận tương tự áp dụng cho các phương trình tuyến tính hoặc phi tuyến.Sympy is a package for symbolic solutions in Python that can be used to solve systems of equations. The same approach applies to linear or nonlinear equations.