Gauss-elimináció – Lineáris algebra Pythonban

Számtalan esetben kell mátrix műveletekhez alkalmaznunk, hogy megoldjuk feladatokat: különösen amikor elhagyjuk a 1 ismeretlenes kérdéseket, és több változóval dolgozunk. A lineáris algebra elméleti alapjai elérhetőek szerencsére magyarul is a neten1, viszont sajnos hiány van gyakorlati megvalósítás ismertetéséből. Ezért úgy gondoltam indítok egy kis sorozatot, ahol végigveszem a fontosabb feladatokat, és szemléltetem, hogyan oldjuk meg Pythonban.


Ha többismeretlenes lineáris egyenletrendszereket akarunk megoldani több módszer áll rendelkezésünkre, ezek egyike a Gauss-elimináció.

In medias res nézzük egyből egy egyenletrendszert:

(1)  2x +  y - z = 8

(2)  -3x-y+2z =-11

(3)  -2x +1y+2z = -3

Ezt ugye a következő mátrix formában lehet felírni:

(4)  A = \left[\begin{array}{rrr} 2 & 1 & -1 \\ -3 &-1 &2 \\ -2 & 1 & 2 \end{array}\right]

(4)  b = \left[\begin{array}{r} 8 \\ -11 \\ -3 \end{array}\right]

Ahol az A mátrix (4) az egyenlet bal oldalából épül fel, míg a b vektor (5) az egyenletrendszer jobb oldalából.

Most nem fogom levezetni a megoldás lépéseit, mivel az angol wikipedián jól szemléltetett. Helyette nézzük meg, hogyan oldjuk meg Pythonban. Ehhez a numpy linarg.solve függvényt használhatjuk. A függvény első paramétere az A mátrix, míg a másodig a b vektor.

import numpy as np
# A mátrix
a = np.array([[2,1,-1], [-3,-1,2], [-2,1,2]])
# b vektor
b = np.array([8,-11,-3])
# a megoldás  [2, 3, -1]
megoldas = np.linalg.solve(a, b)
# ellenőrizzük a megoldás valid. Az eredménynek True-nak kellene lennie
ellenorzes = np.allclose(np.dot(a, megoldas), b)

Ez elég egyszerű volt. Több hasonló következik.


Lábjegyzet

  1. Pl. a mateking.hu van egy alap elméleti lineáris algebra rész.
Hírdetés

Gauss-elimináció – Lineáris algebra Pythonban” bejegyzéshez egy hozzászólás

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s