Làm thế nào để bạn tìm thấy nghịch đảo của một giá trị trong python?

Đôi khi, có thể cần tính toán nghịch đảo của ma trận và sử dụng kết quả của phép toán cho các mục đích khác. Dưới đây là các bước để tìm nghịch đảo của ma trận theo cách thủ công

Tính giá trị của ‘vị thành niên’

Trong tính toán này, các giá trị của hàng và cột hiện tại được bỏ qua và tìm thấy định thức của các giá trị còn lại. Các vị thành niên được tính toán được lưu trữ trong một ma trận

Bước tiếp theo là tìm các đồng sáng lập, trong đó dấu thay thế của các giá trị trong ma trận 'vị thành niên' được thay đổi từ '+' thành '-' và ngược lại

Tiếp theo, ma trận được hoán vị, i. e hàng được chuyển thành cột và cột được chuyển thành hàng

Định thức của ma trận ban đầu được tìm thấy và tất cả các phần tử trong ma trận được tính toán trước đó được chia cho định thức. Ma trận kết quả sẽ là nghịch đảo của ma trận ban đầu

Tìm nghịch đảo của ma trận theo cách thủ công bằng cách sử dụng các phép tính là một quá trình dài. Đây là nơi chức năng 'inv' có trong thư viện 'SciPy' phát huy tác dụng

Bạn đã bao giờ thử tạo nghịch đảo của ma trận kiến ​​hoặc ndArray chưa. Có vẻ như khó thực hiện thủ công nhưng trong python thì rất dễ

Mã nguồn python này thực hiện như sau.
1. Tạo ma trận numpy tùy chỉnh
2. Sử dụng "linalg" và hàm nghịch đảo để tính nghịch đảo của ma trận

Vì vậy, đây là công thức về cách chúng ta có thể Đảo ngược Ma trận hoặc ndArray

Bước 1 - Nhập thư viện

import numpy as np

Chúng tôi chỉ nhập numpy cần thiết

Bước 2 - Thiết lập dữ liệu

Chúng tôi đã tạo một ma trận bằng cách sử dụng mảng và chúng tôi sẽ tìm nghịch đảo của ma trận này. ________số 8

Bước 3 - Tính nghịch đảo của ma trận

Chúng ta có thể tìm nghịch đảo của martix bằng cách sử dụng np. linalg. inv và chuyển ma trận. Inv = np.linalg.inv(matrix) print() print(Inv) Vì vậy, đầu ra là

Trong bài viết này, chúng ta sẽ thảo luận về các bước và trực giác để tính toán nghịch đảo của ma trận và hiển thị các ví dụ bằng Python

Mục lục


Giới thiệu

Nghịch đảo của ma trận là một khái niệm quan trọng trong đại số tuyến tính. Nó thường được thấy trong nhiều phương trình và trường hợp sử dụng đơn giản nhất của nó là giúp tìm nghiệm của một hệ phương trình tuyến tính thông qua nghịch đảo ma trận

Chúng ta đã biết , vì vậy bây giờ chúng ta có thể xem nghịch đảo của nó là gì và cách tính toán nó

Để tiếp tục làm theo hướng dẫn này, chúng ta sẽ cần thư viện Python sau. cục mịch

Nếu bạn chưa cài đặt chúng, vui lòng mở “Command Prompt” (trên Windows) và cài đặt chúng bằng mã sau


pip install numpy

Sách tôi giới thiệu

  • Khóa học về sự cố Python
  • Tự động hóa những thứ nhàm chán với Python
  • Ngoài những thứ cơ bản với Python
  • Trăn nghiêm trọng


giải thích ma trận nghịch đảo

Chúng ta đã biết và hiểu các trường hợp sử dụng nó trong đại số tuyến tính. Vậy ma trận nghịch đảo là gì?


Nghịch đảo của một ma trận xác định

Hãy lùi lại một bước và nghĩ về những con số. Bạn có thể chọn bất kỳ số nào, ví dụ \(5\). Chúng ta có thể tìm thấy một nghịch đảo của 5? . Nó chỉ đơn giản là đối ứng của nó, đó là \(\frac{1}{5}\), mà chúng tôi cũng viết là. \(5^{-1}\)

Điều gì là rất độc đáo về nó?

$$5 \times 5^{-1} = 1$$

Ma trận hoạt động theo cách tương tự. Hãy xem xét chúng ta có một số ma trận 2×2 \(A\)

$$A = \begin{bmatrix} 3 & 7 \\ 2 & 5 \end{bmatrix}$$

và ma trận đồng nhất 2×2 \(I\)

$$I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$$

Chúng ta sẽ nghĩ rằng tồn tại một ma trận nghịch đảo \(A^{-1}\), sao cho

$$A \times A^{-1} = I$$

hoặc trong trường hợp của chúng tôi

$$\begin{bmatrix} 3 & 7 \\ 2 & 5 \end{bmatrix} \times A^{-1} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$$


Khi nào tồn tại một ma trận nghịch đảo?

Nhưng hóa ra không phải lúc nào ma trận nghịch đảo cũng tồn tại. Ma trận nghịch đảo của ma trận \(A\) tồn tại khi và chỉ khi thỏa mãn hai trong các điều kiện sau

  1. Ma trận \(A\) là ma trận vuông (2×2, 3×3, v.v.) trong đó số hàng bằng số cột
  2. Định thức của ma trận \(A\) không bằng 0. \(det(A)\neq 0\)

Nghịch đảo của ma trận 2×2

Trong ví dụ của chúng tôi, chúng tôi đang làm việc với ma trận 2 × 2, có định thức bằng

$$det(A) = 3 \times 5 – 7 \times 2 = 1 \neq 0$$


Sau đó, làm cách nào để chúng ta thực sự có được ma trận nghịch đảo \(A^{-1}\)?

Trong trường hợp ma trận 2×2 thì khá đơn giản

$$\begin{bmatrix} a & b \\ c & d \end{bmatrix}^{-1} = \frac{1}{ad-bc} \times \begin{bmatrix} d & -b \\ -

trong ví dụ của chúng tôi

$$A^{-1} = \begin{bmatrix} 3 & 7 \\ 2 & 5 \end{bmatrix}^{-1} = \frac{1}{(3 \times 5) – (7 \times

Bây giờ chúng ta đã tìm được ma trận nghịch đảo \(A\)

Làm thế nào chúng ta có thể kiểm tra xem nó có hoạt động không?

Nhớ lại

$$A \times A^{-1} = I$$

Chúng ta có thể sử dụng phép nhân ma trận để kiểm tra kết quả của mình

$$\begin{bmatrix} 3 & 7 \\ 2 & 5 \end{bmatrix} \times \begin{bmatrix} 5 & -7 \\ -2 & 3 \end{bmatrix} = \begin{bmatrix} (3

Ta đã tính đúng ma trận nghịch đảo 2×2 \(A\)

Chúng ta cũng có thể nghĩ về nó bằng đồ họa

Hãy biểu diễn ma trận \(A\) trong không gian cartesian, trong đó các cột của ma trận trở thành các vectơ

$$\vec{a}_1 = (3, 2)$$

$$\vec{a}_2 = (7, 5)$$

Làm thế nào để bạn tìm thấy nghịch đảo của một giá trị trong python?

Và cũng đại diện cho ma trận đơn vị trong không gian cartesian, đơn giản là các vectơ cơ sở

$$\vec{i}_1 = (1, 0)$$

$$\vec{i}_2 = (0, 1)$$

Làm thế nào để bạn tìm thấy nghịch đảo của một giá trị trong python?

Theo logic này, ma trận nghịch đảo cũng sẽ được biểu diễn bằng một số vectơ và chúng sao cho nếu chúng ta \(A[/latex ([latex]\vec{a}_1, \vec{a}_2 \)) bởi các vectơ . \(\vec{inv}_1, \vec{inv}_2 \)), kết quả phải là các vectơ cơ sở (\(\vec{i}_1, \vec{i}_2 \)) đại diện cho ma trận đồng nhất

Vì chúng ta đã tính toán ma trận nghịch đảo \(A^{-1}\), nên các vectơ kết quả là

$$\vec{inv}_1 = (5, -2)$$

$$\vec{inv}_2 = (-3, 7)$$

Làm thế nào để bạn tìm thấy nghịch đảo của một giá trị trong python?


Nghịch đảo của ma trận lớn hơn

Bây giờ, thật đơn giản để tính nghịch đảo cho một ma trận lớn như 3×3 hay 5×5? . Khi kích thước của ma trận tăng lên, độ phức tạp theo nghĩa số bước cũng tăng lên

Có một vài ví dụ về phép tính nghịch đảo của ma trận lớn hơn như 3×3 và 5×5 bằng cách sử dụng khử Gaussian mà bạn có thể tìm thấy trực tuyến

Nói chung, đối với các ma trận có kích thước lớn hơn, chúng tôi muốn có quyền truy cập vào công nghệ như Python để cho phép chúng tôi nhận được kết quả một cách nhanh chóng và hiệu quả


Nghịch đảo của ma trận trong Python

Để tính ma trận nghịch đảo trong Python chúng ta sẽ sử dụng thư viện numpy. Và bước đầu tiên sẽ là nhập nó


import numpy as np

Numpy có rất nhiều chức năng hữu ích và đối với thao tác này, chúng tôi sẽ sử dụng linalg. hàm inv() tính toán nghịch đảo của ma trận trong Python

Nhớ lại rằng trong ma trận Python được xây dựng dưới dạng mảng. Và bước tiếp theo sẽ là xác định các ma trận đầu vào. Chúng ta sẽ sử dụng cùng một ma trận 2×2 như trong phần trước


A = np.array([[3, 7],
              [2, 5]])

Bây giờ chúng ta có ma trận cần thiết, chúng ta có thể dễ dàng tính nghịch đảo của nó


A = np.array([[3, 7],
              [2, 5]])

A_inv = np.linalg.inv(A)

print(A_inv) 

Và bạn sẽ nhận được

[[ 5. -7.]
 [-2.  3.]]

đó chính xác là đầu ra giống như ở nơi chúng tôi tính toán thủ công

Chúng ta cũng có thể kiểm tra xem nó có đúng không bằng cách sử dụng phép nhân ma trận trong Python


I = np.matmul(A, A_inv)

print(I)

Và bạn sẽ nhận được

[[ 1.00000000e+00 -1.77635684e-15]
 [ 0.00000000e+00  1.00000000e+00]]

giá trị trên cùng bên phải gần như bằng 0 (vấn đề khó hiểu), nhưng nó là một ma trận nhận dạng giống như \(I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\)


Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về trực giác đằng sau phép nghịch đảo ma trận bằng cách sử dụng phương pháp đại số tuyến tính, cũng như hiển thị một ví dụ hoàn chỉnh bằng Python

Vui lòng để lại nhận xét bên dưới nếu bạn có bất kỳ câu hỏi nào hoặc có đề xuất cho một số chỉnh sửa và xem thêm các bài viết về Đại số tuyến tính của tôi