Crout-algoritmus
A módszert Prescott Durand Crout alkotta meg. Lineáris egyenletrendszerek megoldásában játszik szerepet.
Az algoritmus alapja
[szerkesztés]A Crout-algoritmus az LU felbontás egyik lehetséges kivitelezése, mivel az A mátrixot egy alsó háromszögmátrixra (L) és egy felső háromszögmátrixra (U) bontja fel.
Tehát abból indulunk ki, hogy:
Példa: Három egyenletes egyenletrendszer esetén a következőképp fog kinézni:
Az algoritmus során a következő lépéseket követjük:
1) Végrehajtjuk az , i ϵ [1..n] értékadásokat
2) Minden egyes j ϵ [1..n] indexre a következő két lépést hajtjuk végre:
a) ; ahol i ϵ [1..j] b) ; ahol i ϵ [j+1..n]
Az algoritmus biztosítja, hogy az egyenletek jobb oldalán szereplő, éppen felhasználásra kerülő l és u változók előzőleg már kiszámításra kerültek.
A módszer műveletigénye (), ami gyakorlatilag egy kiküszöbölést és két visszahelyettesítést jelent.
A Crout-algoritmus Python programozási nyelvben
[szerkesztés]def Crout(a,l,u):
for i in range(n):
l[i][i]=1
for j in range(n):
for i in range(j+1):
u[i][j]=a[i][j]
for k in range(i):
u[i][j]=u[i][j]-l[i][k]*u[k][j]
for i in range(j+1,n):
l[i][j]=a[i][j]
for k in range(j):
l[i][j]=l[i][j]-l[i][k]*u[k][j]
l[i][j]=l[i][j]/u[j][j]
return l, u
Források
[szerkesztés]Lázár Zsolt, Lázár József, Járai-Szabó Ferenc: Numerikus módszerek