Was ich tun möchte: Implementieren Sie in Python, wie Sie die inverse Matrix finden
Wenn die Größe der Matrix groß wird, müssen wir über die Optimierung der Verarbeitung nachdenken, aber
In diesem Artikel wollen wir den "konzeptuellen Teil des Findens der inversen Matrix" mit der Implementierung in Python verbinden.
(Benutze Numpy
)
A=\left(
\begin{matrix}
1 & 2 \\
3 & 4
\end{matrix}
\right)
Wird besorgt. In der Implementierung sieht es so aus:
> import numpy as np
> A = np.array([[1,2],[3,4]])
> A
array([[1, 2],
[3, 4]])
Wenn der Matrixausdruck = 0 ist, überprüfen Sie, ob keine inverse Matrix oder kein Zögern vorliegt:
{\rm det}(A)={\rm det}\left(
\begin{matrix}
1 & 2 \\
3 & 4
\end{matrix}
\right)
=1\times 4-2\times3=-2
In Bezug auf die Umsetzung
> np.linalg.det(A)
-2.0000000000000004
Mathematisch
A = \left(
\begin{matrix}
a & b \\
c & d
\end{matrix}\right)
Gegen
A^{-1} = \frac{1}{{\rm det}A}\left(
\begin{matrix}
d & -b \\
-c & a
\end{matrix}\right)
Ersatz wie bekannt.
A^{-1} = \frac{1}{-2}\left(
\begin{matrix}
4 & -2 \\
-3 & 1
\end{matrix}\right)
=\left(
\begin{matrix}
-2 & 1 \\
1.5 & -0.5
\end{matrix}
\right)
In Bezug auf die Umsetzung
> inv_A = np.linalg.inv(A)
> inv_A
array([[-2. , 1. ],
[ 1.5, -0.5]])
Wobei linalg
ein Modul von numpy
ist. Für mehr Details
http://docs.scipy.org/doc/numpy/reference/routines.linalg.html
Sehen
Das Multiplizieren der inversen Matrix und der ursprünglichen Matrix ergibt eine Einheitsmatrix, nicht wahr?
AA^{-1}=A^{-1}A=
\left(
\begin{matrix}
1 & 0 \\
0 & 1
\end{matrix}
\right)
> np.dot(A,inv_A)
array([[ 1.00000000e+00, 1.11022302e-16],
[ 0.00000000e+00, 1.00000000e+00]])
> np.dot(inv_A,A)
array([[ 1.00000000e+00, 4.44089210e-16],
[ 0.00000000e+00, 1.00000000e+00]])
Es ist eine numerische Sache, die nicht schön zu einer Einheitsmatrix wird, ich bin mir nicht sicher, aber ...
Wenn Sie verschiedene Dinge ausprobieren möchten, ändern Sie die Matrix $ A $.