Inversmatriser#
TMA4400 Matematikk 1: Kalkulus og lineær algebra
Dato: 01. september 2025
Standard Gauss-eliminasjon med redusert trappeform#
La \(A\) være ei \(n\times n\)-matrise, og \(I_n\) være \(n\times n\)-identitetsmatrisa. For å finne inversmatrisa \(A^{-1}\), kan vi rett og slett radredusere den utvidede matrisa
\[(A|I_n)\]
slik at vi får den reduserte trappeformen
\[(I_n|A^{-1}).\]
Vi går ut i fra at pivot-elementene er forskjellig fra null.
import numpy as np
# Gauss-eliminasjon (antar at pivotelementene er forskjellig fra null i alle rader!) med redusert trappeform
def RREF(B):
A = np.copy(B).astype(float) # vi lager en kopi av den gitte matrisa B, for å unngå å endre denne
m,n = np.shape(B) # m=rader, n=kolonner; for å kunne oppgi den utvidede matrisa, eller tom matrise
for k in range(0,m):
pivot = A[k,k]
for i in range(k,n):
A[k,i] = A[k,i]/pivot # normaliserer pivot-elementene til 1 og endrer resten av raden fra og med kolonne k
for j in range(0,m):
if j != k: # vi må gjøre radredusering både under og over rader med pivot-elementer
l = A[j,k]
for p in range(k,n):
A[j,p] = A[j,p]-l*A[k,p]
return A
Eksempel#
Vi kan bruke standard Gauss-eliminasjon med redusert trappeform på følgende utvidede matrise
\[\begin{split}(A|I_2) = \left[\begin{array}{cc|cc} 1 & 2 & 1 & 0 \\ 3 & 4 & 0 & 1 \end{array}\right].\end{split}\]
A0 = np.array([[1.,2.,1.,0.],[3.,4.,0.,1.]])
A1 = RREF(A0)
print('\nVi begynner med \n{0}\nog bruker Gauss-eliminasjon som gitt over: \n{1}'.format(np.matrix(A0),np.matrix(A1)))
Vi begynner med
[[1. 2. 1. 0.]
[3. 4. 0. 1.]]
og bruker Gauss-eliminasjon som gitt over:
[[ 1. 0. -2. 1. ]
[ 0. 1. 1.5 -0.5]]
Vi konkluderer derfor med at
\[\begin{split}A^{-1}=\left[\begin{array}{cc} -2 & 1 \\ 1.5 & -0.5 \end{array}\right].\end{split}\]
Vi sjekker så dette ved å multiplisere \(A\) med \(A^{-1}\):
A2 = np.array([[1.,2.],[3.,4.]])
A3 = np.array([[-2.,1.],[1.5,-0.5]])
A4 = np.dot(A2,A3) # notasjonen for matrisemultiplikasjon i python
print(A4)
[[1. 0.]
[0. 1.]]