Mik az LU felbontás lépései?
Az LU-felbontás lényege, hogy egy m*n-es A mátrixot előállítunk A=L*U alakban, ahol L egy m*m-es alsó háromszögmátrix (azaz a főátló feletti elemei mind nullák), U pedig felső háromszögmátrix.
Ha csak egy működő programot szeretnél írni, akkor ajánlom a következő linken található Maple-kódot:
Az algoritmus elég egyszerű ahhoz, hogy ezt bármilyen más környezetben/nyelven meg tudd írni. A megoldást úgy kell értelmezni, hogy inputként megkapja az A mátrixot, majd ennek az elemeit módosítja és kapsz outputként egy B mátrixot. Ez egyszerre fogja tartalmazni L és U elemeit is.
A linken található példa értelmezése /ezen lehet pl. ellenőrizni, hogy jól írtad-e meg a programodat/:
A:=Matrix( [[2,-1,-3,3],[4,0,-3,1],[6,1,-1,6],[-2,-5,4,1]] );
Erre az output a
B:=Matrix( [[2,-1,-3,3],[2,2,3,-5],[3,2,2,7],[-1,-3,5,-46]] );
Ennek a B mátrixnak a bal alsó sarka tartalmazza az L mátrix elemeit:
L := Matrix([[1, 0, 0, 0], [2, 1, 0, 0], [3, 2, 1, 0], [-1, -3, 5, 1]])
A B mátrix felső sarka tartalmazza az U mátrix elemeit:
U:=Matrix([[2, -1, -3, 3], [0, 2, 3, -5], [0, 0, 2, 7], [0, 0, 0, -46]])
Arra kellett csak figyelni, hogy az L főátlójában mindenhova 1-eseket írtunk.
Ezekre a mátrixokra valóban teljesülni fog, hogy A=L*U.
Ha nem négyzetes mátrixot kapsz inputnak, akkor is jó az eljárás, az output bal alsó (m-1)*(m-1)-es része adja az L elemeit /L főátlója csupa 1-es/, míg a felső elemek adják meg U elemeit.
Ha csak egy gyorsan megírható program kell, akkor ennyi elég hozzá. Ha érteni is szeretnéd, miért is jó ez az eljárás, az kicsit több időt igényel...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!