Tridiagonális mátrix

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

A matematika lineáris algebra nevű ágában tridiagonális mátrix (esetleg kontinuánsmátrix) a neve az olyan négyzetes mátrixnak, amelyben csak a főátlón és a mellette található két átló mentén vannak nullától különböző elemek.

Például a következő mátrix tridiagonális:

(1400341002340013).

Matematikai nyelven úgy mondjuk, hogy aij = 0 minden olyan (i, j) esetén, melyekre teljesül az |ij| > 1 feltétel.

A tridiagonális mátrix voltaképpen egy felső és alsó Hessenberg-mátrix.[1]

Ilyen mátrixok lépnek fel például a parciális differenciálegyenletek végeselem diszkretizációjánál.

Tulajdonságok

Determináns

Egy n-dimenziós tridiagonális T mátrix determinánsát

fn=|a1b1c1a2b2c2bn1cn1an|

a következő rekurzív képlet segítségével lehet kiszámítani:

fn=anfn1cn1bn1fn2

ahol f0 = 1 és f-1 = 0.

Inverz

Egy adott T nem szinguláris tridiagonális mátrix

T=(a1b1c1a2b2c2bn1cn1an)

inverzét a következőképpen lehet kiszámolni:

(T1)ij={(1)i+jbibj1θi1ϕj+1/θn ha ij(1)i+jcjci1θj1ϕi+1/θn ha i>j

ahol θi teljesíti az alábbi rekurzív feltételt:

θi=aiθi1bi1ci1θi2 , i=2,3,,n

θ0 = 1, θ1 = a1 kezdőállapottal. ϕi pedig teljesíti a

ϕi=aiϕi+1biciϕi+2 , i=n1,,1

feltételt ϕn+1 = 1 és ϕn = an kezdőállapottal.[2][3]

Numerikus megoldás

Szemléletesen, legyen adott az alábbi egyenlet.

(d1c100...000e1d2c20...0000e2d3c3...000................................................0000...en2dn1cn10000...0en1dn)(x1x2x3...xn1xn)=(b1b2b3...bn1bn)

Az ilyen típusú egyenletrendszereket legkönnyebb a Thomas-algoritmussal megoldani, ami tulajdonképpen a Gauss-kiküszöbölés tridiagonális mátrixra egyszerűsített változata. Először sorrendben eltüntetjük az átló alatti elemeket, és az átlón levő elemeket egységnyire normalizáljuk. Első lépésben: c1=c1c1d1;b1=b1d1. Ezután, a többi i=2,n elemre végrehajtjuk aci=cidieici1;bi=bieibi1dieici1 transzformációkat. Ezek eredményeképpen a

(1c100...0001c20...00001c3...00..........................................0000...1cn10000...01)(x1x2x3...xn1xn)=(b1b2b3...bn1bn)

rendszert kapjuk, melyet hátulról előre haladva könnyen megoldhatunk: xn=bn;xi=bixi+1ci(i=n1,1) .

Ha figyelembe vesszük, hogy a mátrixban elfoglalt helyek alapján di=aii;ei=aii1 és ci=aii+1, akkor a fenti módszert a következő algoritmussal valósíthatjuk meg:

 1: function Thomas( in: (aij ),(bi) out: (xi) i, j = 1, n )
 2:   a12 ← a12/a11
 3:   b1 ← b1/a11
 4:   for i ← 2 to n − 1 do
 5:      aii+1 ← aii+1 / (aii − aii−1 ai-1i)
 6:      bi ← (bi − aii−1 bi−1)/(aii − aii−1 ai−1i)
 7:      aii−1 ← 0
 8:   end for
 9:   bn ← (bn − ann−1 bn−1)/(ann − ann−1 an−1n)
10:   xn ← bn
11:   for i ← n − 1 to 1 do
12:       xi = bi − xi+1 aii+1
13:   end for
14:   return (xi)
15: end function

Memóriakihasználás szempontjából természetesen célszerűbb, ha nem az egész mátrixot, hanem csak a nemnulla c, d és e elemeket tároljuk. Ebben az esetben az algoritmus a következőképpen alakul:

 1: function THOMAS2( in: (ci),(di),(ei),(bi) out: (xi) i, j = 1, n )
 2:   c1 ← c1/d1
 3:   b1 ← b1/d1
 4:   for i ← 2 to n do
 5:     ci ← ci/(di − ei ci−1)
 6:     bi ← (bi − ei bi−1)/(di − ei ci−1)
 7:   end for
 8:   xn ← bn
 9:   for i ← n − 1 to 1 do
10:     xi = bi − xi+1 ci
11:   end for
12:   return (xi)
13: end function

Megjegyezzük, hogy a Thomas-algoritmus könnyen általánosítható szélesebb sávos mátrixokra is.

Példa

Példaképpen tekintsük a

(12300036400045200012800045)(x1x2x3x4x5)=(11232)

tridiagonális rendszert. A Thomas-algoritmus alkalmazásával átalakíthatjuk ezt egy

(10.25000010.7619000011.0244000018.200001)(x1x2x3x4x5)=(0.08330.14290.73172.3250.2625)

egyszerűen megoldható rendszerré. A visszahelyettesítések alapján megoldásnak az

x=(0.15350.28060.55580.17180.2626)

értékeket kapjuk.

Jegyzetek

Sablon:Jegyzetek

Források

Sablon:Portál