Numerikus matematika mérnököknek és programozóknak : Egyetemi jegyzet
 9789639664418, 9639664413 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

© Typotex Kiadó

Numerikus Matematika

Mérnököknek és programozóknak Stoyan Gisbert Magyarország, 2007 január

© Stoyan Gisbert

© Typotex Kiadó

Tartalomjegyzék 1. A lebeg®pontos számítás 1.1. 1.2. 1.3. 1.4. 1.5. 1.6.

Az egész számok . . . A lebeg®pontos számok Lebeg®pontos számítás, A hibák terjedése . . . Tanulságok . . . . . . Feladatok . . . . . . .

. . . . . . . . . . . . kerekítés . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

2. Normák, kondíciószámok

2.1. Normák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Az indukált mátrixnorma . . . . . . . . . . . . . . . . . . . . 2.2.1. Az indukált mátrixnorma deníciója és tulajdonságai 2.2.2. Az indukált mátrixnorma kiszámítása (p = 1, ∞) . . 2.2.3. Az indukált mátrixnorma kiszámítása (p = 2) . . . . 2.3. Hibabecslések . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. A lineáris rendszer jobboldala hibás . . . . . . . . . . 2.3.2. A kondíciószám . . . . . . . . . . . . . . . . . . . . . 2.3.3. A lineáris rendszer mátrixa hibás . . . . . . . . . . . 2.4. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Lineáris egyenletrendszerek 3.1. 3.2. 3.3. 3.4. 3.5.

A Gauss-elimináció . . . . . . . . . . . . . . . . . . . . A Gauss-elimináció végrehajthatósága . . . . . . . . . . Az LU-felbontás . . . . . . . . . . . . . . . . . . . . . . Algoritmusok, m¶veletigény . . . . . . . . . . . . . . . Általános mátrixok . . . . . . . . . . . . . . . . . . . . 3.5.1. Az LDU-felbontás algoritmusa, tesztfeladatok . 3.6. A Cholesky-felbontás . . . . . . . . . . . . . . . . . . . 3.6.1. Az LDLT -felbontás algoritmusa, tesztfeladatok 3.7. Sávos mátrixok . . . . . . . . . . . . . . . . . . . . . . 3.7.1. Tridiagonális egyenletrendszerek . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

7

7 8 10 15 19 19

21

22 25 25 26 29 32 32 33 37 39

41

41 44 46 49 53 56 58 62 63 63

3

© Stoyan Gisbert

© Typotex Kiadó

4

TARTALOMJEGYZÉK 3.7.2. A tridiagonális algoritmus, tesztfeladatok . . . . . . . . 65 3.8. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4. Legkisebb négyzetek

4.1. Lineáris regresszió . . . . . . . . . . . 4.1.1. Algebrai megfogalmazás . . . 4.1.2. A legkisebb négyzetek elve . . 4.2. A Gauss-féle normál-egyenlet . . . . 4.3. Megoldási algoritmus, tesztfeladatok 4.4. Feladatok . . . . . . . . . . . . . . .

5. Sajátérték feladatok

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5.1. Alapvet® tulajdonságok . . . . . . . . . . . . . . . . . . 5.1.1. Normális mátrixok . . . . . . . . . . . . . . . . 5.1.2. A karakterisztikus polinomról . . . . . . . . . . 5.1.3. A sajátértékek lokalizációja . . . . . . . . . . . 5.2. A hatvány-módszer . . . . . . . . . . . . . . . . . . . . 5.2.1. Konvergenciafeltételek . . . . . . . . . . . . . . 5.2.2. A Rayleigh-hányados . . . . . . . . . . . . . . . 5.2.3. A hatvány-módszer algoritmusa, tesztfeladatok . 5.2.4. Az eltolás . . . . . . . . . . . . . . . . . . . . . 5.3. Az inverz iteráció . . . . . . . . . . . . . . . . . . . . . 5.3.1. Konvergenciafeltételek . . . . . . . . . . . . . . 5.3.2. Az inverz iteráció algoritmusa, tesztfeladatok . . 5.4. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

6.1. Interpolációs feladatokról . . . . . . . . . . . . . . . . . . . 6.2. A Lagrange-interpoláció . . . . . . . . . . . . . . . . . . . 6.2.1. A Lagrange-féle interpolációs feladat . . . . . . . . 6.2.2. A Newton-féle rekurzió . . . . . . . . . . . . . . . . 6.2.3. A dierenciaséma . . . . . . . . . . . . . . . . . . . 6.2.4. A Lagrange-interpoláció algoritmusa, tesztfeladatok 6.2.5. Hibabecslések . . . . . . . . . . . . . . . . . . . . . 6.3. Az Hermite-féle interpoláció . . . . . . . . . . . . . . . . . 6.4. A szakaszonkénti polinomiális interpoláció . . . . . . . . . 6.5. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

6. Interpoláció

7. Nemlineáris egyenletek

. . . . . . . . . . . . .

. . . . . .

69

69 71 72 75 79 82

85

86 87 89 90 92 93 96 98 100 102 102 103 106

109

110 110 110 113 115 120 120 123 126 130

133

7.1. Felezési módszer, egyszer¶ iterációk . . . . . . . . . . . . . . . 134 7.2. A Newton-módszer . . . . . . . . . . . . . . . . . . . . . . . . 136

© Stoyan Gisbert

© Typotex Kiadó

TARTALOMJEGYZÉK 7.2.1. A csillapított Newton-módszer . . . . . . . . . . . . . 7.2.2. A szel®módszer . . . . . . . . . . . . . . . . . . . . . 7.3. Egyenletrendszerek megoldása . . . . . . . . . . . . . . . . . 7.3.1. A Newton-módszer . . . . . . . . . . . . . . . . . . . 7.3.2. A csillapított Newton-módszer algoritmusa, tesztfeladatok . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.3. A Jacobi-mátrix közelítésér®l . . . . . . . . . . . . . 7.3.4. A Broyden-módszer . . . . . . . . . . . . . . . . . . . 7.4. A Gauss-Newton-módszer . . . . . . . . . . . . . . . . . . . 7.4.1. Leírása . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2. A Gauss-Newton-módszer algoritmusa, tesztfeladatok 7.5. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8. Közelít® integrálás

8.1. Elemi kvadratúraképletek . . . . . . . . . . . . . . . . . . . 8.2. Interpolációs kvadratúraképletek . . . . . . . . . . . . . . . . 8.3. Összetett kvadratúraképletek . . . . . . . . . . . . . . . . . 8.3.1. Összetett képletek konstrukciója . . . . . . . . . . . . 8.3.2. Összetett képletek konvergenciája . . . . . . . . . . . 8.4. Gyakorlati szempontok . . . . . . . . . . . . . . . . . . . . . 8.5. Többdimenziós integrálok kiszámítása . . . . . . . . . . . . . 8.5.1. Visszavezetés egyváltozós függvények integrálására . . 8.5.2. Az integrálási tartomány approximációja . . . . . . . 8.5.3. A kétdimenziós Simpson-integráció algoritmusa, tesztfeladatok . . . . . . . . . . . . . . . . . . . . . . . . . 8.6. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9. Közönséges dierenciálegyenletek

9.1. Motiváció . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2. Kezdetiérték feladatok . . . . . . . . . . . . . . . . . . . . . 9.3. Az Euler-módszer . . . . . . . . . . . . . . . . . . . . . . . . 9.3.1. Az Euler-módszer algoritmusa, tesztfeladatok . . . . 9.4. Az Euler-módszer hibaelemzése . . . . . . . . . . . . . . . . 9.5. A javított Euler-módszer . . . . . . . . . . . . . . . . . . . . 9.6. Az implicit Euler-módszer . . . . . . . . . . . . . . . . . . . 9.6.1. Az implicit Euler-módszer lineáris rendszerekre . . . 9.6.2. Nemlineáris rendszerek . . . . . . . . . . . . . . . . . 9.6.3. Az implicit Euler-módszer algoritmusa, tesztfeladatok 9.7. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¤´»

5 . . . .

142 143 146 146

. . . . . . .

148 151 151 153 153 154 157

. . . . . . . . .

159

160 163 165 165 168 171 174 174 176

. 179 . 180 . . . . . . . . . . .

181 181 184 186 188 189 192 196 197 200 201 204

© Stoyan Gisbert

© Typotex Kiadó

1. fejezet A lebeg®pontos számítás A gimnáziumban tanultuk: Ha egy hatvány alapja a > 0, akkor érvényesek a következ® relációk: ab ac = ab+c ,

ab = ab−c , c a

és ha q 6= 1, akkor 2

n

1 + q + q + ... + q =

n X i=0

illetve ha q = 1, akkor

Pn i=0

1 − q n+1 , q = 1−q i

q i = n + 1.

1.1. Az egész számok Az egész számok a számítógépben el®jeles bináris számok formájában vannak jelen. Gyakran 2- és 4-bájtos egész számok állnak rendelkezésre, ahol a bájt nyolc bináris jeggyel rendelkezik. Sok gépnél a bájt a legkisebb elérhet®  megcímezhet®  tárolási egység. Ezenfelül lehet, hogy egy- és nyolc-bájtos egész számokkal is dolgozhatunk. Az egész számokkal való aritmetikai m¶veletek nagyságrenddel gyorsabbak a (következ® pontban tárgyalásra kerül®) lebeg®pontos számokénál és hibamenteseknek tekinthet®k, ezért használatuk dönt® mértékben felgyorsíthatja egy adott algoritmus futását a számítógépen. Az egész számokkal való számítás minden lépését viszont gyelmesen át kell gondolni, mert ilyenkor valójában maradékosztályban dolgozunk. Példaként az egybájtos egész számok összeadását nézzük: 7

© Stoyan Gisbert

© Typotex Kiadó

8

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

+ =1

11010101 10101010 01111111

+ =

213 170 383 ≡ 127 mod(256)

A keretben már elhelyezhetetlen (túlcsordult) 1-est levágja a számolóegység, és ezzel az összeget a 28 szerinti maradékával helyettesíti. Tehát a 28 maradékosztályára tértünk át, kétbájtos számok esetén a fentieknek megfelel®en a 216 maradékosztályához stb.

1.2. A lebeg®pontos számok Ez a számtípus alapvet® a számítógépek numerikus használatánál. A nemnulla lebeg®pontos számok alakja: ³ m2 mt ´ k m1 + 2 + ··· + t , (1.1) ±a a a a ahol a > 1 a számábrázolás alapja, + vagy  − az el®jel, t > 1 a számjegyek száma, k a kitev®. Az m1 számjegy normalizált, azaz eleget tesz az

1 ≤ m1 ≤ a − 1 egyenl®tlenségnek. Ez biztosítja a számábrázolás egyértelm¶ségét és a rendelkezésre álló számjegyek kihasználását. A többi számjegyre igaz

0 ≤ mi ≤ a − 1,

2 ≤ i ≤ t.

A nulla nem normalizált: esetében k = 0, m1 = m2 = · · · = mt = 0, az el®jele általában +. A lebeg®pontos számítás számábrázolásának a alapja gyakran nem 2. Ehelyett pl. 10 vagy 16 is lehet. Egyes gépeknek van decimális számolóegysége. Legtöbbször viszont a programozási nyelv valósítja meg a megfelel® aritmetikát, ha pl. f®ként adatfeldolgozásra szánják, akkor gazdaságosabb lehet a tízes számrendszer. A decimális számrendszer esetén egyszer¶ pontosság mellett kb. t = 8-ra, dupla pontosság mellett kb. t = 16-ra számíthatunk. A lebeg®pontos számok tárolását a következ® formában képzelhetjük el (a valóság ett®l eltérhet, de az ilyen, a m¶szaki megvalósításhoz közelebb álló és a numerikus számítást kevésbé érint® kérdéseket itt nem részletezzük):

[±, k, m1 , . . . , mt ], ahol (m1 , . . . , mt ) =: m a mantissza . A k kitev®t a szám karakterisztiká jának is hívjuk. A gépt®l és a pontosságtól (egyszer¶, dupla, négyszeres pontosság) függ®en m tárolására négy, nyolc vagy 16 bájt áll rendelkezésre. Ezzel

© Stoyan Gisbert

© Typotex Kiadó

1.2. A LEBEGŽPONTOS SZÁMOK

0

9

eps_0

1

2

1.1. ábra. A lebeg®pontos számok a valós tengelyen párhuzamosan n® a k értékkészlete. Adott pontosság mellett

k(−) ≤ k ≤ k(+) , ahol k(−) < 0, k(+) > 0 és |k(−) | ≈ |k(+) | (ld. az 1. és a 2. feladatot). Ekkor a legnagyobb ábrázolható szám k(+)

M∞ := a

t X a−1 i=1

ai

µ k(+)

=a

a−1 a−1 a−1 + 2 + ... + a a at



= ak(+) (1 − a−t ), a legkisebb szám −M∞ . A lebeg®pontos számok a [−M∞ , M∞ ]-beli racionális számok diszkrét részhalmazát alkotják, ez a részhalmaz a nullára nézve szimmetrikus. A nullához legközelebbi pozitív lebeg®pontos számot ε0 -val jelöljük, µ ¶ 1 k(−) + 0 + . . . + 0 = ak(−) −1 . ε0 := a a Így a nullán kívül a (−ε0 , ε0 ) intervallumban nincs más lebeg®pontos szám. (Itt eltekintünk attól, hogy a nullától különböz® nemnormalizált számok is el®fordulhatnak egy számítógépben, de a számábrázolás egyértelm¶sége miatt csak akkor, amikor k = k(−) . Ekkor gyakorlatilag arról van szó, hogy ε0 képlete ak(−) −t -re változik.) A (−ε0 , ε0 ) intervallum hatalmas hézagként hat, ha a lebeg®pontos számokat a számegyenesen ábrázoljuk (ld. a 3. feladatot); az ε0 -hoz legközelebbi pozitív lebeg®pontos szám ugyanis: ¶ µ 1 1 k(−) + 0 + . . . + 0 + t = ε0 + ak(−) −t = ε0 (1 + a1−t ), a a a és

ε0 · a1−t ¿ ε0 .

© Stoyan Gisbert

© Typotex Kiadó

10

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

Az 1 mindig hozzátartozik a lebeg®pontos számokhoz:

1 = [+, 1, 1, 0, . . . , 0]. Az 1 után a

[+, 1, 1, 0, . . . , 0, 1] = 1 + ε1 lebeg®pontos szám következik, ahol

ε1 := a1−t . Ezt a számot gyakran a gép relatív pontosságaként, ill. mint gépi epszilon emlegetik (ld. a 4. feladatot). Az ε0 és ε1 számok jelent®sége abban áll, hogy abszolút, ill. relatív hibakorlátot képeznek az inputnál és a négy alapm¶veletnél (ld. a következ® pontot). Adott ³m m2 mt ´ 1 + 2 + · · · + t < M∞ 0 < x = [+, k, m] = ak a a a pozitív lebeg®pontos számhoz a legközelebbi nagyobb szám x+ak−t . Ugyanis ekkor x-nek az x jobboldali szomszédja ¶ µ 1 k x = x + a 0 + 0 + . . . + 0 + t = x + ak−t , a tehát δx := x − x = ak−t a távolság a kett® szám között. Mivel a jelenlegi k karakterisztikához a legkisebb lehetséges x-érték ak a1 = ak−1 , ezért

x − x = δx = ak−t = ak−1+1−t = ak−1 a1−t = ak−1 ε1 ≤ xε1 .

(1.2)

Ha x < 0 és x a baloldali szomszédja, akkor hasonlóan érvényes

|x − x| ≤ |x|ε1 .

(1.3)

1.3. Lebeg®pontos számítás, kerekítés El®ször foglalkozzunk az inputtal. Legyen x valós szám, |x| ≤ M∞ és x ˜ a gép által hozzárendelt lebeg®pontos szám. Leggyakrabban ( 0, ha |x| < ε0 , x˜ := az x-hez legközelebbi lebeg®pontos szám, ha ε0 ≤ |x| ≤ M∞ .

© Stoyan Gisbert

© Typotex Kiadó

1.3. LEBEGŽPONTOS SZÁMÍTÁS, KEREKÍTÉS

11

Tehát ilyenkor az els® esetben nulla felé kerekítjük a számot, a második esetben szabályszer¶en kerekítünk. Ekkor (ld. az (1.2) és (1.3) relációkat)

( |˜ x − x| ≤

ε0 , 1 ε |x|, 2 1

ha |x| < ε0 , ha |x| ≥ ε0 .

(1.4)

Amennyiben a gép mindig a nulla felé lekerekíti a számokat (mivel a felesleges számjegyek levágása egyszer¶bb, mint a szabályszer¶ kerekítés), akkor (1.4)ben 21 ε1 helyett ε1 áll, és  pontosabban  igaz, hogy |˜ x−x| < ε1 |x|. Ha a nulla körüli hézagtól eltekintünk, akkor (1.4) egyszer¶sített változatát kapjuk,

1 |˜ x − x| ≤ ε1 |x| 2

(1.5)

|˜ x − x| ≤ ε1 |x|

(1.6)

kerekítés esetén és levágás esetén. Az itt szerepl® 21 ε1 , ill. ε1 számokat a következ®képpen is lehet jellemezni: megegyeznek azzal a legkisebb pozitív lebeg®pontos ε számmal, amellyel az 1 + ε összeadás eredménye nagyobb 1-nél  kerekítés, ill. levágás után is. Ld. a 4. feladatot. Következ®nek foglalkozzunk a lebeg®pontos m¶veletekkel. El®ször példaként nézzük az összeadást. Legyen pl. a = 10, t = 3, k(−) = −3, k(+) = 3 (ekkor ε1 = 10−2 ), a két összeadandó szám pedig x = 3.45 és y = 0.567. Az összeadás els® lépéseként a két szám karakterisztikáját (k1 és k2 ) egyenl®vé kell tenni és k1 − k2 számjeggyel jobbra csúsztatni a mantisszát:

+ = +

+ + + +

1 0 1 1

345 567 345 0567

+ = +

10*0.345 ( = x) 1*0.567 ( = y ) 10*0.345 10*0.0567=4.017=x+y=:z

Itt azonnal felmerül a kérdés, vajon a számolóegységben is t számjegy áll a mantisszák rendelkezésére? Az összeadásnál legalább egy számjeggyel több szükséges ahhoz, hogy a hiba elfogadható legyen. (A szorzásnál a legkényelmesebb az, ha 2t számjegy áll a mantisszák szorzatának rendelkezésére, mert akkor a szorzat veszteség nélkül helyezhet® el.) Ha ez a kiegészít® számjegy megvan, akkor a fenti példában az összeadás így folytatható:

© Stoyan Gisbert

© Typotex Kiadó

12

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

+ = + =

+ + + + +

1 0 1 1 1

345 567 345 0567 4017

Eddig hibamentesen kaptuk az eredményt, de azt általában vissza kell vinni a tárba, ahol példánkban csak 3 számjegy van a mantissza elhelyezésére. Ekkor szükséges az utolsó számjegyet vagy levágni, vagy szabályosan kerekíteni. Ha az utóbbi mellett döntöttek a gépi számolóegység (ill. az aritmetikát megvalósító programozási nyelv) tervezésekor akkor a z˜ = x] + y számítási végeredmény +

1

402

Így a végeredmény hibás, és hibájára érvényes

1 1 |z − z˜| = 0.003 = ε1 ∗ 0.3 = ε1 ∗ 0.6 < ε1 ∗ |z| (= 0.020085). 2 2

(1.7)

Vizsgáljunk még egy példát az összeadásra (legyen továbbra is a = 10, t = 3, k(−) = −3, k(+) = 3, és a számolóegység rendelkezzen egy kiegészít® számjeggyel): x = 0.987 és y = 0.567. Az összeadás el®tti csúsztatásra most nincs szükség: + = ∼ =

+ + + +

0 0 0 1

987 567 1554 155

+ = ∼ =

0.987 ( = x) 0.567 ( = y ) 1.554 10*0.155=:z˜

Itt az utolsó lépésben normalizálni és kerekíteni kellett a számolóegységbeli eredményt, amiután a szám kivihet® a tárba. Most vizsgáljuk általában az alapm¶veletek során fellép® hibákat! Ehhez, a fenti példával összhangban, feltesszük, hogy a gép a (+, −, ∗, /) négy alapm¶velet bármelyikét (amit a ¦ jellel fogunk jelölni) el®ször pontosan végrehajtja, majd kerekítéssel vagy levágással rendel hozzá egy lebeg®pontos számot. Ekkor (1.4)-nek megfelel®en és speciálisan a kerekítés esetén ( ε0 , ha |x ¦ y| < ε0 |] x ¦ y − x ¦ y| ≤ 1 (1.8) ε |x ¦ y|, ha |x ¦ y| ≥ ε0 , 2 1 illetve, egyszer¶sített változatban, az ε0 -val kapcsolatos esetet elhagyva, ( 1, levágás esetén |] x ¦ y − x ¦ y| ≤ ε1 |x ¦ y| ∗ 1 (1.9) , kerekítés esetén. 2

© Stoyan Gisbert

© Typotex Kiadó

1.3. LEBEGŽPONTOS SZÁMÍTÁS, KEREKÍTÉS

13

Ez utóbbi relációt így is átírhatjuk:

x] ¦ y = (x ¦ y) · (1 + ε¦ ),

( 1, |ε¦ | ≤ ε1 ∗ 1 , 2

levágás esetén kerekítés esetén.

(1.10)

Az átmenet (1.9)-r®l (1.10)-re a következ®képpen jön létre (vegyük a levágás esetét). (1.9) azt jelenti, hogy :

−ε1 |x ¦ y| ≤ x] ¦ y − x ¦ y ≤ ε1 |x ¦ y|. Tehát x ] ¦ y − x ¦ y olyan mennyiség, amely −ε1 |x ¦ y| és ε1 |x ¦ y| között minden értéket fel tud venni. Ezt úgy írhatjuk, hogy

x] ¦ y − x ¦ y =: ε1 |x ¦ y|s, ahol − 1 ≤ s ≤ 1. Akkor viszont

x] ¦ y = x ¦ y + ε1 |x ¦ y|s = (x ¦ y)(1 + sign(x ¦ y)ε1 s), és itt | sign(x ¦ y)ε1 s| ≤ ε1 . Most már csak sign(x ¦ y)ε1 s helyett kell ε¦ -t írnunk. Az összeadásra vonatkozó példánk az (1.10) becslés szemléltetését szolgáltatja, és ekkor ¦ = +,

ε¦ = ε+ =

0.003 1 x] + y − (x + y) = ≈ 0.000747 < ∗ ε1 = 0.005. x+y 4.017 2

Az (1.10) összefüggés a nulla körüli hézagban nem érvényes, továbbá akkor sem, ha a m¶velet eredménye abszolút értékben nagyobb M∞ -nél. Ez túlcsordulás t jelentene, ami a lebeg®pontos számításnál súlyos hiba, és  a programozási nyelvt®l és a rendszert®l függ®en  egy vagy néhány ilyen hiba után megáll a gép (ill. a következ® programmal foglalkozik). Ha a m¶velet eredménye ugyan nem nulla, de (−ε0 , ε0 )-ból való, akkor a fentiek szerint alulcsordulás történik, nullának veszi a gép az eredményt, általában hibajelzés nélkül. Ezzel lehet, hogy dönt® információ semmisül meg, valamilyen jelenség utolsó életjele. A lebeg®pontos kivonásnál gyakran t¶nnek el értékes számjegyek. Ezalatt a következ®t értjük: legyen újra a = 10, t = 3 és pl. x = 1.234, y = 1.233. Ekkor csúsztatás nem szükséges és x−y = 0.001 a kivonás második lépésében, 1 +0+ hiba nélkül. Ezután kell a számot normalizálni, a végeredmény 10−2 ( 10 . . . + 0) hiba nélkül. A probléma viszont az, hogy az x, y számoknak volt 4 számjegye, pl. mint egy el®z® számítás eredménye, és a kivonás után ebb®l

© Stoyan Gisbert

© Typotex Kiadó

14

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

csak 1 maradt: a vezet® 1 számjegy utáni nullák helyességér®l a lebeg®pontos számítás szempontjából semmi felel®séget nem tudunk vállalni. A lebeg®pontos számítás másik veszélyes jelensége a lehetséges értékes számjegyek végzetes elt¶nése a kivonásnál. Ez a következ®t jelenti. A gép nem felel meg a fenti egyszer¶ m¶veleti modellünknek, amely szerint a számolóegységben el®ször a pontos eredmény áll el®, hanem ott nincs kiegészít® számjegy és két különböz® (k1 6= k2 ) hatványkitev®s x, y lebeg®pontos szám kivonása el®tt nemcsak k1 − k2 -nek megfelel®en csúsztatja egymáshoz képest a számjegyeket (vö. a fenti példánkkal az összeadásra), hanem a keretb®l jobbra kicsúszott számjegyeket rögtön le is vágja. Pl.:

x = [+, k, 1, 0, . . . , 0] = ak−1 ,

µ

y = [+, k − 1, a − 1, . . . , a − 1] = a

k

1 1 − t+1 a a

¶ .

Csúsztatás és az utolsó, ak aa−1 t+1 érték¶ számjegy levágása után y helyett ¢ ¡ 1 1 k az y˜ = a a − at számmal dolgozik tovább a gép, és x − y˜ = ak−t =: z˜ keletkezik mint a gépi kivonás eredménye. A helyes eredmény viszont z := ak−t−1 . (Ehhez ld. Numo11 , 0. fejezetben a mintafeladatot és a 6. feladatot is.) Legyen z˜ egy lebeg®pontos számítás eredménye és z a pontos számítás eredménye, példánkban tehát z = ak−t−1 és z˜ = ak−t . A |˜ z − z| értéket a számítás abszolút hibá jának hívjuk. Ha z 6= 0, akkor relatív hibá nak hívjuk a |(˜ z − z)/z| értéket. A fenti körülmények között végrehajtott kivonás eredményének az abszolút hibája tehát |˜ z − z| = ak−t − k−t−1 k−t−1 a =a (a − 1), relatív hibája

ak−t−1 (a − 1)/ak−t−1 = a − 1 =

a−1 ε1 ≈ at ε1 À ε1 , a1−t

ami lényegesen nagyobb ε1 = a1−t -nél, közel at -szer nagyobb. Ez a relatív hiba a = 2 esetén a legkisebb, de még ekkor is elfogadhatatlan, hiszen ha a relatív hiba 1 lehet, akkor összetéveszthetjük az eredményt a saját hibájával. Ez tehát a (rosszul tervezett) számítógépen lehetséges értékes számjegyek végzetes elt¶nése. Ezen jelenség kivédésére a kivonás alatt szükséges legalább egy tartalék számjegy a számolóegységben, a (t + 1)-edik helyen, ld. Numo1, 0. fejezet, mintafeladat. Ez viszont nincs meg sok gépnél. Ha van tartalék számjegy, és a két szám hatványkitev®je megegyezik, akkor is t¶nhetnek el értékes 1 Stoyan

Gisbert, Takó Galina, Numerikus módszerek I., Typotex, 2002

© Stoyan Gisbert

© Typotex Kiadó

1.4. A HIBÁK TERJEDÉSE

15

számjegyek a kivonásnál, ilyenkor viszont nem végzetes, hanem (1.8)-nak megfelel® módon. A gyakorlatban egyébként nemcsak abszolút és relatív hibával dolgoznak, amikor eltérések értékelésér®l van szó. Gyakran célszer¶bb olyan (vegyes abszolút-relatív) tesztet alkalmazni, mint ¸ · 1 z |) , |z − z˜| ≤ ε 1 + (|z| + |˜ 2 ahol ε az adott pontosság. Amennyiben nem igaz az egyenl®tlenség, a z˜ eredményt elvetjük mint túl pontatlant; ha igaz, akkor elfogadjuk. Ilyenkor kicsi |z| + |˜ z | esetén abszolút pontosságot mérünk ε-nal, nagy |z| + |˜ z | esetén pedig relatív pontosságot. Az analógia (1.4)-gyel és (1.8)-cal szembet¶n®. Az ilyen tesztet majd a programokban fogjuk alkalmazni. Tartalék számjegy esetén is a kerekítés ártatlanul kinéz® m¶velete a számítás folytán nagy hibákhoz vezethet, ahogyan a következ® pont példái bizonyítják. Mivel a kerekítés viszont elkerülhetetlen szinte minden lebeg®pontos aritmetikai m¶velet után (de ld. a 6. feladatot), olyan kiút lehetséges, hogy az egyszer¶, (1.4)-gyel és (1.10)-zel jellemzett kerekítést egyoldalú kerekítésekkel váltjuk fel. Minden aritmetikai m¶velet után, ha az eredmény nem lebeg®pontos szám, két eredményt hozunk létre, fel-, ill. lekerekítéssel. Ennek az egész számítást megváltoztató következményei vannak: számok helyett így mindig intervallumokkal van dolgunk; vagy a gépeket kell átkonstruálni a mindig konkrét aritmetikai m¶velettel együtt elvégzett kerekítések megvalósításának céljából (minden alapm¶velet helyett kett® lesz), vagy a programozási nyelvekbe kell beépíteni az így létrejöv® intervallum-aritmetiká t. Ez utóbbit megtette pl. a Pascal-SC.

1.4. A hibák terjedése Hogyan terjednek a hibák sok m¶velet során? Vizsgáljuk ezt a kérdést azon a példán, hogy össze kell adni n + 1 lebeg®pontos számot,

Sn := x0 + x1 + . . . + xn =

n X

xi

i=0

tehát abban az esetben, amikor nem egy, hanem n összeadást kell végezni. Minden egyes összeadáskor a számolóegység el®ször hiba nélkül adja össze a korábbi Sk−1 részösszeget a következ® xk számmal:, Sk := Sk−1 + xk , k = 1, 2, . . ., majd ezután mondjuk levágást alkalmaz. Attól most eltekintünk,

© Stoyan Gisbert

© Typotex Kiadó

16

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

hogy valamelyik közbüls® vagy a végs® eredmény a (−ε0 , ε0 ) intervallumba eshet, illetve túlcsorduláshoz vezet. Ekkor (1.10) alapján a számítógépen kapott els® részösszeg

Se1 := x^ 0 + x1 = (x0 + x1 )(1 + ε0,1 ) = S1 + ε0,1 S1 , ahol |ε0,1 | ≤ ε1 . Hasonlóan:

Se2 := = = = = =

^ Se1 + x2 (Se1 + x2 )(1 + ε1,2 ) (S1 + ε01 S1 + x2 )(1 + ε1,2 ) (S1 + x2 + ε0,1 S1 )(1 + ε1,2 ) (S2 + ε0,1 S1 )(1 + ε1,2 ) S2 + ε0,1 S1 + ε1,2 S2 + ε1,2 ε0,1 S1 ,

ahol ε1,2 a megfelel® hibamennyiség, |ε1,2 | ≤ ε1 . Annak érdekében, hogy a lényeget jobban lássuk, és mivel ε1,2 ε0,1 S1 már ε1 -ben másodrend¶:

|ε1,2 ε0,1 S1 | ≤ ε21 |S1 |, ezt a tagot elhanyagoljuk (a másodrend¶ tagok elhanyagolásával teljesül® egyenl®séget ezután ∼ = segítségével jelölve):

S2 ∼ = S2 + ε0,1 S1 + ε1,2 S2 . Folytatva a fenti gondolatmenetet azt találjuk, hogy

fn ∼ S = Sn +

n X

(1.11)

εk−1,k Sk .

k=1

Fejezzük ki itt az Sk részösszegeket az xi -k segítségével: n X

εk−1,k Sk = x0

k=1

n X k=1

εk−1,k +

n X i=1

xi

n X

εk−1,k .

k=i

Az x0 -t és x1 -et megszorzó összeg becslése ¯ ¯ n ¯ ¯X ¯ ¯ εk−1,k ¯ ≤ nε1 , ¯ ¯ ¯ k=1

© Stoyan Gisbert

© Typotex Kiadó

1.4. A HIBÁK TERJEDÉSE

17

mert minden k -ra |εk−1,k | ≤ ε1 és van bel®le n tag. Az x2 -t megszorzó összeg becslése ¯ ¯ n ¯X ¯ ¯ ¯ ε ¯ k−1,k ¯ ≤ (n − 1)ε1 , ¯ ¯ k=2

és általában az xi -t (i ≥ 1) megszorzó összeg becslése ¯ ¯ n ¯ ¯X ¯ ¯ εk−1,k ¯ ≤ (n − i + 1)ε1 . ¯ ¯ ¯ k=i

Visszatérve (1.11)-hez, azt írhatjuk, hogy (másodrend¶ tagok elhanyagolásával) érvényes à ! n X fn − Sn | ≤ ε1 n|x0 | + |S (n − i + 1)|xi | . i=1

Innen látszik, hogy érdemes lenne az összegzést az abszolútértékben legkisebb xi -knél kezdeni: a hibatagban x0 és x1 szorzója nε1 , de xn szorzója már csak ε1 . Valamivel durvább ennél a következ® becslés, amely viszont jobban mutatja, hogy a hiba lineárisan n® a m¶veletek n számával:

fn − Sn | ≤ nε1 |S

n X

|xi |.

(1.12)

i=0

Ha speciálisan az összes xi pozitív, akkor (másodrend¶ tagoktól eltekintve) a relatív hiba becslését kapjuk: ¯ ¯ ¯ S˜ − S ¯ ¯ n n¯ ¯ ≤ nε1 . ¯ ¯ Sn ¯ Ez a reláció mutatja azt, hogy nε1 ≥ 1 esetén megbízható eredmény nem várható. Hasonló következtetés adódik, ha n + 1 olyan lebeg®pontos számot szorzunk össze, amely nemcsak pozitív, hanem az 1 környékén fekszik, úgyhogy az n szorzás során sem túlcsordulás, sem alulcsordulás nem fenyeget. Ha

P1 := x0 ∗ x1 , Pn = Pn−1 ∗ xn , n = 2, 3, . . . , tehát

Pn =

n Y

xn ,

k=0

© Stoyan Gisbert

© Typotex Kiadó

18

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS

akkor a számítógépen (alkalmas, (1.11)-t®l különböz® εk−1,k hibamennyiségekkel)

P˜1 = P1 ∗ (1 + ε0,1 ), P˜2 = = = ∼ =

P˜^ 1 ∗ x2 = (P1 ∗ (1 + ε0,1 ) ∗ x2 ) ∗ (1 + ε1,2 ) P2 ∗ (1 + ε0,1 ) ∗ (1 + ε1,2 ) P2 ∗ (1 + ε0,1 + ε1,2 + ε0,1 ε1,2 ) P2 ∗ (1 + ε0,1 + ε1,2 ),

és általában

P˜n ∼ = Pn (1 +

n X

εk−1,k ).

k=1

Ez azt jelenti, hogy

¯ ¯ ¯ ¯ n ¯ ¯ P˜ − P ¯ ¯X ¯ ¯ n n¯ ∼ ¯ εk−1,k ¯ ≤ nε1 , ¯=¯ ¯ ¯ ¯ Pn ¯ ¯

(1.13)

k=1

mert az összeg fels® becslése nε1 . Ha tehát ez utóbbi mennyiség ≤ a1 , akkor legalább egy helyes számjegyre számítunk. Meddig fogadható el ez a gondolatmenet, amikor közben a másodrend¶ mennyiségeket elhanyagoltuk? A legrosszabb eset az, amikor minden egyes szorzásnál a hiba a maximális ε1 . Ekkor ¯ ¯ ¯ P˜ − P ¯ ¯ n n¯ Pn ≤ P˜n ≤ Pn (1 + ε1 )n és ¯ ¯ ≤ (1 + ε1 )n − 1. ¯ Pn ¯ Az analízisb®l ismert, hogy 1 + x ≤ ex (minden x-re), emiatt egyrészt (1 + ε1 )n − 1 ≤ enε1 − 1, másrészt, innen továbbmenve meg lehet mutatni, hogy ex − 1 ≤ 1−x x , amikor 0 ≤ x < 2. Tehát, x = nε1 < 2 esetén: 2

¯ ¯ ¯ P˜ − P ¯ nε1 ¯ n n¯ . ¯≤ ¯ ¯ Pn ¯ 1 − nε21

Ha most azt szeretnénk, hogy P˜n relatív hibája kisebb legyen a1 -nál (amikor legalább egy helyes számjegye lesz P˜n -nek), akkor az 1−x x ≤ a1 relációt x 2 szerint megoldva, azt kapjuk, hogy:

ax ≤ 1 −

1 x 1 . =⇒ (a + )x ≤ 1 =⇒ x ≤ 2 2 a + 21

© Stoyan Gisbert

© Typotex Kiadó

1.5. TANULSÁGOK

19

Ez a következ®t jelenti: a másodrend¶ mennyiségek elhanyagolásával kapott (1.13) relációból leolvasható, hogy P˜n relatív hibája kisebb a1 -nál, amennyiben nε1 ≤ a1 . A másodrend¶ mennyiségek elhanyagolása nélkül ez ugyan nem igaz, de elég azt követelni, hogy nε1 ≤ a+1 1 . 2

1.5. Tanulságok A számítógépen két alapvet® számtípussal dolgozhatunk: egész számmal és lebeg®pontos számmal. Míg az egész számokkal való m¶veletek hibamentesek (valójában maradékosztályos rendszerben dolgozunk), a lebeg®pontos számoknál elkerülhetetlen a kerekítés. Ennek következtében (de más forrásokból is) hibák lépnek fel, amelyek továbbterjedve er®sen torzíthatják a végeredményt. Ezért fontos a végs® hibákra becslést adni. Míg 1 m¶velet után a relatív hiba ε1 nagyságrend¶ lesz, n m¶velet után már nε1 . Várhatóan továbbra is növekszik a számítógépek sebessége. Ha ezzel párhuzamosan nem növeljük a programokban használt lebeg®pontos számok t mantissza hosszát és a karakterisztika [k(−) , k(+) ] tartományát, akkor növekszik a megbízhatatlan aritmetikai eredmények veszélye is: ha az n m¶velet utáni nε1 relatív hiba nem kisebb egynél, akkor az eredmény bizony elfogadhatatlan.

1.6. Feladatok 1. Feltéve, hogy a = 10, zsebszámológépén, illetve személyi számítógépén határozza meg a t, k(+) , k(−) adatokat! Hogyan reagál a gép alulcsordulásra, túlcsordulásra? Számológépe rendelkezik-e tartalék számjeggyel? 2. Miért igaz gyakran |k(+) | 6= |k(−) |? Induljon ki abból, hogy n bináris számjeggyel hány karakterisztikát lehet ábrázolni általában, mennyit akkor, ha az els® számjegyet el®jelnek használjuk és mennyit abban az esetben, ha k + 2n−1 formában tároljuk a k hatványkitev®t, el®jel nélkül. 3. Ábrázolja a számegyenesen az a = 2, t = 4, k(−) = −3, k(+) = 2 jellemz®khöz tartozó nemnegatív lebeg®pontos számokat! (A következ® feladatokban mindig feltesszük, hogy a lebeg®pontos számábrázolás jellemz®i (a, t, k(+) , k(−) ) adottak és érvényes k(−) ≥ k(+) > t ≥ 2.)

© Stoyan Gisbert

© Typotex Kiadó

20

FEJEZET 1. A LEBEGŽPONTOS SZÁMÍTÁS 4. Határozza meg kísérletileg az ε0 és ε1 számokat! 5. Melyik az a legkisebb természetes szám, amely nem lebeg®pontos szám? 6. Milyen, lebeg®pontos számokkal hibamentesen elvégezhet® aritmetikai m¶veleteket tud megnevezni? 7. Nevezzen meg két nullától és egyt®l különböz® lebeg®pontos x, y számot úgy, hogy x + y , illetve x ∗ y a) lebeg®pontos, b) nem az. 8. Tanultuk, hogy 1 + ε1 az 1 szám lebeg®pontos jobboldali szomszédja. De mi az 1 lebeg®pontos baloldali szomszédja? 9. Hány olyan pozitív lebeg®pontos szám van, amelynek k a (rögzített) karakterisztikája?

10. Indokolja meg, hogy lebeg®pontos számítás esetén miért áll be konstans értékre az analízisb®l ismert {sn }∞ n=1 sorozat, s1 = 1, sn = sn−1 + 1/n, n = 2, 3, . . ., ahelyett, hogy divergálna. Becsülje meg, körülbelül mekkora lesz s˜n elég nagy n-re! Ennek során használja fel, hogy az sn pontos értékre teljesül

log(n + 1) < sn < 1 + log n. Számítógép segítségével ellen®rizze eredményét (a legrövidebb real típust alkalmazva)! 11. Van egy programunk, amely a közismert képlet szerint számítja ki a másodrend¶ mátrix determinánsát. A gép számolóegységében van kiegészít® számjegy, az aritmetikai m¶veletek után a t + 1-jegy¶ számot normalizálja és szükség esetén kerekíti. Ha a mátrix konkrétan µ ¶ 1 1−ε A = A(ε) = , ε > 0, 1 1 akkor a program 1-r®l csökken® ε esetén melyik legkisebb pozitív ε-ig fog pozitív determinánst adni?

© Stoyan Gisbert

© Typotex Kiadó

2. fejezet Normák, kondíciószámok Algebrából tanultuk:

Ha A ∈ IRn×n egy mátrix és elemei aij , továbbá x = (x1 , x2 , . . . , xn )T oszlopvektor, akkor Ax vektor, és i-edik komponense

(Ax)i =

n X

aij xj . i = 1, . . . , n.

j=1

Továbbá, ha valamelyik v vektorra és λ számra igaz

Av = λv, v 6= 0, akkor λ a mátrix sajátértéke és v a hozzátartozó sajátvektor.

Lássuk be, hogy |x + y| ≤ |x| + |y| általánosításaként igaz ¯ n ¯ n ¯X ¯ X ¯ ¯ xi ¯ ≤ |xi |. ¯ ¯ ¯ i=1

i=1

Ugyanis

¯ ¯ ¯ ¯ ¯ ¯ n n n ¯ ¯X ¯ ¯X ¯ ¯X ¯ ¯ ¯ ¯ ¯ ¯ xi ¯ xi ¯ ≤ |x1 | + |x2 | + ¯ xi ¯ ≤ |x1 | + ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ i=1

i=3

i=2

stb.

21

© Stoyan Gisbert

© Typotex Kiadó

22

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

Értsük meg a következ® m¶veleteket összegekkel (ahol m, n ≥ 1 - egészek):

n X m X i=1 j=1

ai bj =

n X i=1

ai

m X j=1

bj =

m X n X

ai bj =

j=1 i=1

m X j=1

bj

n X

ai .

i=1

Ugyanis minden esetben az ai -k és bj -ék minden lehetséges kombinációját szoroztunk össze és összegeztünk: n X m X

ai bj = a1 b1 + a1 b2 + . . . + a1 bm + a2 b1 + a2 b2 + . . . + a2 bm

i=1 j=1

+ . . . + an b1 + . . . + an bm , n X

ai

i=1

m X

bj = a1 (b1 + b2 + . . . + bm ) + a2 (b1 + b2 + . . . + bm )

j=1

+ . . . + an (b1 + b2 + . . . + bm ), m X n X

ai bj = a1 b1 + a2 b1 + . . . + an b1 + a1 b2 + a2 b2 + . . . + an b2

j=1 i=1

+ . . . + a1 bm + . . . + an bm , m X j=1

bj

n X

ai = b1 (a1 + a2 + . . . + an ) + b2 (a1 + a2 + . . . + an )

i=1

+ . . . + bm (a1 + a2 + . . . + an ).

2.1. Normák és alapvet® tulajdonságaik A következ® fejezetben az

Ax = b

(2.1)

lineáris egyenletrendszerek megoldását tárgyaljuk, ahol A n × n-es mátrix: A ∈ IRn×n , b ∈ IRn adott jobboldali vektor és keresett az x ∈ IRn vektor. A gyakorlatban úgy a b vektor, mint az A mátrix pontatlanul vannak megadva: hibákkal terheltek, pl. inputhibával. Emiatt itt azt vizsgáljuk, mekkora hibát okoznak ezek a kiindulási hibák az x vektorban. Ezen vizsgálat eredménye az lesz, hogy felismerjük: mit®l függ az valójában, hogy adott számítógépen adott hibájú egyenletrendszer elfogadható hibával megoldható vagy sem? Ehhez szükségünk lesz a normákra és kondíciószámokra. Ha pl. b helyett csak b + δb adott, ahol δb a hibák vektora, akkor azt szeretnénk tudni, mekkora lesz a hibája a most (2.1)-r®l Ay = b + δb-re módosuló

© Stoyan Gisbert

© Typotex Kiadó

2.1. NORMÁK

23

rendszer y megoldásának, tehát mekkora y − x ? Ehhez néhány fogalom ismétlésére, ill. bevezetésére van szükségünk, mert vektorok és mátrixok eltéréseit kell tudnunk mérni. (Az alábbiakban, ha komplex elem¶ vektorokról is beszélünk, a legtöbb helyen valós elem¶ vektorokra lehet gondolni, de a sajátérték téma miatt a komplex elem¶ vektorokra is fel kell készülnünk, mivel valós mátrix sajátvektora komplex elem¶ is lehet.) A d :C I n → R leképezést normának hívjuk, ha teljesíti a következ® 4 feltételt: 1. d(x) ≥ 0 minden x ∈ C I n -re; 2. d(x) = 0 ⇔ x = 0, tehát a nullvektor egyértelm¶en felismerhet®; 3. d(αx) = |α|d(x), ahol α tetsz®leges szám, amely komplex is lehet; 4. d(x + y) ≤ d(x) + d(y) (a háromszög-egyenl®tlenség). Ez a d(x) az x vektor normája, és mivel ez az abszolútérték általánosítása, a szokásos jelölés d(x) helyett: kxk. A 2. feltételben gyeljük meg, hogy ott két értelemben szerepel a 0: számként és vektorként, utóbbi az x = 0 esetben. A következ®kben is mindig 0-t írunk, legyen szó akár számokról, akár vektorokról, mátrixokról, függvényekr®l. AC I n térben számunkra fontosak a következ® normák:

d(x) = kxkp :=

à n X

!1/p |xi |

p

p = 1 (oktaéder norma), p = 2 (euklideszi norma), p = ∞ (maximum norma).

,

i=1

az

A maximum norma mint a p → ∞ határérték értend®, de bevezethetjük

kxk∞ := max |xi | 1≤i≤n

deníció alapján is. Ez onnan ered, hogy mindig igaz

max |xi | ≤

1≤i≤n

à n X i=1

!1/p |xi |p

≤ (n)1/p max |xi |. 1≤i≤n

Ugyanis valahol az |xi |-k között max1≤i≤n |xi | is el®fordul (ez adja a baloldali alsó becslést), ill. |xi | legfeljebb n értékre lehet maximális (a jobboldali fels®

© Stoyan Gisbert

© Typotex Kiadó

24

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK 2

1.5

1

1

p=∞ p=2 p=1

0.5

0

−1

1

−0.5

−1

−1

−1.5

−2 −2

−1.5

−1

−0.5

0

0.5

1

1.5

2

2.1. ábra. Három p-norma egységköre becslést ezt magyarázza meg). Ezután emlékezzünk arra, hogy analízisb®l tanultuk: n1/n tart 1-hez, ha n → ∞. Annál inkább n1/p → 1, amikor, mint nálunk, n rögzített és p → ∞. Például, ha n = 256 és p = 2, akkor n1/p = 16, √ ha p = 4, akkor n1/p = 4, de amikor p = 16, akkor már n1/p = 2 ≈ 1.414. Gyakran a p indexet elhagyjuk, amikor bármely norma lehetséges a három közül. A fenti normák közül a p = 2-nek megfelel® euklideszi norma bizonyára már ismert, és ha az x vektor komponensei valós számok, akkor egyszer¶bben azt írhatjuk, hogy

à n !1/2 q X kxk2 = x21 + x22 + . . . + x2n = . x2i i=1

Vegyünk egy példát: legyen x = (1, −2, −3, 4). Ekkor

kxk1 = 1 + | − 2| + | − 3| + 4 = 10, √ √ 1 + 4 + 9 + 16 = 30 ≈ 5.47723, kxk2 = kxk∞ = max(1, | − 2|, | − 3|, 4) = 4. A maximum és oktaéder norma esetén a háromszög-egyenl®tlenség abból következik, hogy már az abszolútértékre is igaz |a+b| ≤ |a|+|b|. Az euklideszi norma esetén ez a tulajdonság a Cauchy-egyenl®tlenség következménye (ld. a 4. fejezet elejét). Megemlítjük, hogy a p-normák p paramétere lehet bármely [1, ∞]-beli szám, de 0 < p < 1 nem lehetséges, mert ekkor a 4. tulajdonság nem igaz,

© Stoyan Gisbert

© Typotex Kiadó

2.2. AZ INDUKÁLT MÁTRIXNORMA

25

vagyis ekkor a kxkp képlet nem deniál normát. Ellenpéldának vegyük az n ≥ 2 esetet, továbbá legyen x = (1, 0 . . . , 0)T és y = (0, 1, 0 . . . , 0)T . Ekkor a deníció szerint kxkp = 1, kykp = 1, de mivel 0 < p < 1,

kx + ykp = (1 + 1)1/p = 21/p > 2 = kxkp + kykp .

2.2. Az indukált mátrixnorma 2.2.1. Az indukált mátrixnorma deníciója és tulajdonságai Legyen A ∈ IRn×n valós mátrix. Ekkor a vektornorma segítségével deniálunk most egy mátrixnormát:

kAk := max x6=0

kAxk . kxk

(2.2)

Ez a vektornorma által indukált mátrixnorma. Ellen®rizzük, hogy (2.2) valóban normát deniál a mátrixok lineáris terében: 1. A deníció jobb oldalán álló kifejezés azért nemnegatív, mert már a vektornorma is az. 2. Ha A = 0, akkor kAxk = 0, így kAk = 0. Megfordítva, ha A 6= 0, akkor legalább egy nemnulla eleme van, pl. a j -edik oszlopban, és ekkor x = ej -vel, a j -edik egységvektorral szorozva A-t, ezt az oszlopot kapjuk Ax gyanánt. Akkor annak vektornormája pozitív és annál inkább a maximum is pozitív. 3. Az αA mátrix esetén megint a vektornorma tulajdonsága az, amely biztosítja, hogy kαAxk = |α|kAxk, és α-ra a maximum nem vonatkozik. Így valóban kαAk = |α|kAk következik. 4. Végül, ha B is mátrix IRn×n -ben, akkor k(A + B)xk = kAx + Bxk ≤ kAxk + kBxk, ahonnan a (2.2) deníció segítségével következik, hogy

kAxk + kBxk k(A + B)xk ≤ max x6=0 x6=0 kxk kxk kAxk kBxk + max = kAk + kBk. ≤ max x6=0 kxk x6=0 kxk

kA + Bk := max

Itt a második egyenl®tlenségi jel azért igaz, mert utána külön-külön és kBxk maximumát. keressük kAxk kxk kxk Tehát itt is teljesül a háromszög-egyenl®tlenség.

© Stoyan Gisbert

© Typotex Kiadó

26

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

Mivel (2.2)-ben az összes x 6= 0 vektorra vonatkozó maximum deniálja a mátrix normáját, valamelyik konkrét, rögzített x 6= 0 vektorra az kAxk/kxk hányados kisebb esetleg lehet, de nagyobb nem a normánál:

kAxk ≤ kAk, azaz kAxk ≤ kAk kxk. kxk

(2.3)

Ez a kés®bbi becslések alapja. Fordítva, ha M olyan (nemnegatív) szám, hogy kAxk ≤ M · kxk (2.4) érvényes bármely x vektorra, akkor kAk ≤ M ; az A mátrix normája éppen az a legkisebb M szám, amelyre (2.4) mindig igaz. (2.3) tartalmazza annak lehet®ségét is, hogy a több mint egy mátrixszal való szorzás eredményét tudjuk becsülni:

kABxk = kA(Bx)k ≤ kAk kBxk ≤ kAk kBk kxk. Ez (2.2) alapján egyben azt is jelenti, hogy (2.5)

kA · Bk ≤ kAk · kBk.

2.2.2. Az indukált mátrixnorma kiszámítása (p = 1, ∞) Most fejezzük ki a (2.2) mátrixnormát közvetlenül az A mátrix aij elemeinek segítségével. Ehhez 1. egy (2.4) alakú becslést kell levezetnünk, 2. olyan x 6= 0 vektort kell ismernünk, amellyel (2.4)-ben érvényes az egyenl®ségjel. Els®nek tekintsük a p = 1 esetet:

Els® lépés:

Minden x vektorra érvényes

kAxk1 = ≤

n X

¯ ¯ n n ¯X ¯ X ¯ ¯ aij xj ¯ |(Ax)i | = ¯ ¯ ¯

i=1 n X n X i=1 j=1

i=1

|aij ||xj | =

j=1 n X j=1

|xj |

n X

|aij |.

i=1

© Stoyan Gisbert

© Typotex Kiadó

2.2. AZ INDUKÁLT MÁTRIXNORMA

27

Pn Az utolsó duplaösszeg valójában egy j=1 |xj |cj alakú kifejezés, Pn Pn ahol cj := i=1 |aij |. Ezen n szám közül vesszük a maximálisat: maxj ( i=1 |aij |), és ekkor à n ! n X X kAxk1 ≤ max |aij | · |xj |. (2.6) j

i=1

j=1

P Ez a becslés A-ra nézve azt jelenti, hogy kAk1 ≤ maxj ( ni=1 |aij |).

Második lépés:

Ha j0 az olyan index, amelyre n X

|aij0 | = max j

i=1

à n X

! |aij | ,

i=1

és x az a vektor, melynek j0 -adik koordinátája 1, a többi pedig 0, tehát x = ej0 , a j0 -adik egységvektor, akkor (2.6)-ban érvényes az egyenl®ség. Így à n ! X kAk1 = max |aij | . j

i=1

Emiatt a képlet miatt az oktaéder norma által indukált mátrixnormát oszlopösszeg normá nak is hívjuk.

Példa:



 3 −4 1 0 −1  . A =  −2 2 −5 3

(2.7)

P Itt ni=1 |aij | a 7, 9, 5 értékeket veszi fel, amikor j = 1, 2, 3. Így kAk1 = 9. Tisztázzuk azt is, melyik vektor esetén érvényes (2.4)-ben az egyenl®ség! Az el®z® levezetés szerint x = e2 ez a vektor, és ekkor   −4 Ax =  0  , így kAxk1 = | − 4| + 0 + | − 5| = 4 + 5 = 9 = 9kxk1 . −5 Most tekintsük a p = ∞ esetet:

Els® lépés: Minden x vektorra érvényes kAxk∞

¯ ¯ n ¯ ¯X ¯ ¯ aij xj ¯ . = max |(Ax)i | = max ¯ 1≤i≤n 1≤i≤n ¯ ¯ j=1

© Stoyan Gisbert

© Typotex Kiadó

28

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

Továbbá, minden rögzített i-re teljesül ¯ ¯ Ã n ! Ã n ! n n ¯X ¯ X X X ¯ ¯ aij xj ¯ ≤ |aij ||xj | ≤ |aij | max |xj | = |aij | kxk∞ . ¯ 1≤j≤n ¯ ¯ j=1

j=1

j=1

j=1

Összefoglalva:

kAxk∞

¯ ¯ Ã ! n n ¯ ¯X X ¯ ¯ |aij | kxk∞ . aij xj ¯ ≤ max = max ¯ 1≤i≤n 1≤i≤n ¯ ¯

(2.8)

j=1

j=1

Ez a becslés A-ra nézve azt jelenti, hogy à n ! X kAk∞ ≤ max |aij | . i

j=1

Második lépés: Ha i0 olyan index, amelyre n X

|ai0 j | = max

à n X

i

j=1

! |aij | ,

j=1

és x az a vektor, amelynek j -edik koordinátája ( +1, ha ai0 j ≥ 0, xj := −1, ha ai0 j < 0, akkor kxk∞ = 1 és (Ax)i0 =

|(Ax)i | ≤

Pn j=1

n X

|ai0 j |. Ezenkívül i 6= i0 -ra

|aij xj | =

j=1

így max1≤i≤n |(Ax)i | =

Pn j=1

(2.9)

n X

|aij | ≤

j=1

|ai0 j | =

Pn

kAk∞ = max i

j=1

n X

|ai0 j |,

j=1

|ai0 j |kxk∞ , vagyis

à n X

! |aij | .

j=1

Emiatt a maximum normát sorösszeg normá nak is hívjuk. P Példa: Legyen A megint a (2.7) mátrix. Ekkor nj=1 |aij | a 8, 3, 10 értékeket veszi fel, amikor i = 1, 2, 3. Így kAk∞ = 10.

© Stoyan Gisbert

© Typotex Kiadó

2.2. AZ INDUKÁLT MÁTRIXNORMA

29

Tisztázzuk azt is, melyik vektor esetén érvényes (2.8)-ban az egyenl®ség? A fenti levezetés (ld. (2.9)) szerint x = (1, −1, 1)T ez a vektor, és ekkor   8 Ax =  −3  , így kAxk∞ = max(8, | − 3|, 10) = 10 = 10kxk∞ . 10

Ha esetleg elfelejtenénk, melyik p értékhez is tartozik az oszlopill. sorösszeg norma, akkor segít a következ® szamárhíd: az 1 áll - mint az oszlop, a ∞ jel pedig fekszik - mint a sor.

2.2.3. Az indukált mátrixnorma kiszámítása (p = 2) Végül is foglalkozzunk a p = 2 esettel. Ez bonyolultabb, mint az el®bbi kett®; az így képzett mátrixnormát elméletileg jól lehet használni, gyakorlatilag azonban nehezen kiszámítható. Az kxk2 norma az ismert

(x, y) :=

n X

x, y ∈ C I n,

xi y i ,

(2.10)

i=1

euklideszi skalárszorzattal kapcsolatos:

kxk22 = (x, x). Minden valós mátrixra a (2.10) skalárszorzatban érvényes az

(Ax, y) = (x, AT y)

(2.11)

összefüggés. Ez a fontos identitás egyszer¶en úgy jön létre, hogy az összegzés sorrendjét felcseréljük: Ã n ! n X X (Ax, y) = aij xj · y i i=1

=

j=1

=

j=1

à n n X X n X j=1

! aij y i

· xj =

i=1

xj ·

à n X

! aij y i

= (x, AT y).

i=1

P ahol AT a transzponált mátrix. Ugyanis a ni=1 aij y i képletben az y vektor komponensei össze vannak szorozva az A mátrix j -edik oszlopának elemeivel

© Stoyan Gisbert

© Typotex Kiadó

30

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

 tehát a transzponált mátrix j -edik Pn sorával  és nem az A mátrix j -edik sorának elemeivel, ami a (Ay)j = i=1 aji y i szorzat lenne. A (2.11) relációt y = Ax-re alkalmazzuk:

kAxk22 = (x, AT Ax).

(2.12)

Az itt álló AT A mátrix szimmetrikus: (AT A)T = AT A. Most emlékezzünk egy fontos fogalomra: Ha B ∈ IRn×n szimmetrikus mátrix, akkor azt pozitív szemidenit nek hívjuk, ha eleget tesz az (2.13)

(Bx, x) ≥ 0

egyenl®tlenségnek minden x ∈ C I n vektorra. Eszerint (2.12) mutatja, hogy az T A A pozitív szemidenit. Így az AT A mátrixnak minden sajátértéke nemnegatív. Az AT A mátrix maximális sajátértéke legyen λmax = λmax (AT A). Lejjebb megmutatjuk, hogy az

kAxk22 = (x, AT Ax) ≤ λmax kxk22

(2.14)

egyenl®tlenség minden x ∈ C I n vektorra igaz. A (2.14) képlet levezetéséhez abból indulunk ki, hogy az algebrából tudjuk: mivel AT A szimmetrikus, így ortogonális mátrix segítségével diagonalizálható. Azaz van olyan Q ∈ IRn×n mátrix, hogy

QAT AQT = D,

QT Q = I = QQT ,

ahol D diagonális, f®átlója tartalmazza az AT A sajátértékeit. Ortogonális mátrixra érvényes

kxk22 = (x, x) = (QT Qx, x) = (Qx, Qx) = kQxk22 ,

(2.15)

tehát a vektor euklideszi hossza nem változik ortogonális mátrixszal való szorzás alatt. Most

(x, AT Ax) = (QT Qx, AT Ax) = (Qx, QAT Ax) = (y, QAT AQT y), ahol y := Qx, így

(x, AT Ax) = (y, Dy) =

n X

di |yi |2 ≤ dmax

i=1

=

λmax kyk22

=

λmax kQxk22

n X

|yi |2

i=1

= λmax kxk22 .

Ezzel a (2.14) képletet sikerült levezetni. Az el®z® becslés egyenl®séggel igaz, ha x = vmax , az AT A mátrix azon sajátvektora, amely az abszolútértékben

© Stoyan Gisbert

© Typotex Kiadó

2.2. AZ INDUKÁLT MÁTRIXNORMA

31

maximális λmax sajátértékhez tartozik. Innen következik, hogy a valós A mátrix euklideszi normájára érvényes a p (2.16) kAk2 = λmax (AT A) képlet. Az euklideszi mátrixnormával kapcsolatos a spektrálsugár. Legyen A ∈ IRn×n , λi (A) a sajátértékei, i = 1, . . . , n. Spektrálsugár nak hívjuk az abszolútértékben legnagyobb sajátérték abszolútértékét,

ρ(A) := max |λi (A)|. 1≤i≤n

Ha az A mátrix szimmetrikus, akkor egyrészt sajátértékei valósak, másrészt akkor AT A = A2 sajátértékei az eredeti mátrix sajátértékeib®l könnyen kaphatók: AT Ax = A2 x = A(Ax) = A(λx) = λAx = λ2 x. Emiatt ekkor p p kAk2 = λmax (AT A) = λ2max (A) = |λmax (A)| = ρ(A), vagyis ekkor a spektrálsugár egyben norma is. Példaként tekintjük most az

µ A=

3 4 0 0



mátrixot: ekkor azonnal kiszámítható, hogy kAk1 = 4, kAk∞ = 7. Ezenkívül az A speciális alakja miatt (úgynevezett fels® háromszögmátrix) lehet tudni, hogy sajátértékei a f®átlón állnak, azaz az egyik sajátérték 3, a másik 0, és így ρ(A) = 3. Ezután kiszámítjuk, hogy µ ¶ 9 12 T A A= , 12 16

√ ahonnan következik, hogy AT A sajátértékei 25 és 0, azaz kAk2 = 25 = 5. Az AT A mátrix 25 sajátértékéhez tartozó sajátvektor x = (3, 4)T , és valóban µ ¶ 25 Ax = , kAxk2 = 25 = 5 · 5 = 5kxk2 = kAk2 kxk2 . 0 További példaként legyen A újra a (2.7) mátrix. Ekkor kAk1 = 9, kAk∞ = 10.

© Stoyan Gisbert

© Typotex Kiadó

32

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

Itt már hosszabb számítás szükséges ahhoz, hogy az A sajátértékeit megkapjuk. Közelít®leg érvényes, hogy a sajátértékek 6.42514, 1.60776, -2.03290, tehát ρ(A) ≈ 6.42514. Továbbá   17 −22 11 41 −19  , AT A =  −22 11 −19 11 és ezen mátrix √ sajátértékei közelít®leg 63.27880, 3.96236, 1.75884, így végül is kAk2 ≈ 63.27880 ≈ 7.95480. Ez a példa azt is szemlélteti, hogy mennyivel praktikusabb a közvetlen számításra a maximum- és az oktaéder-norma. Ezenkívül mindkét példánál látható, hogy a spektrálsugár kisebb a három normánál. Ez nem véletlen. El®ször is, legyen k · k bármilyen vektornorma és λ(A) bármely sajátértéke A-nak, valamint v a hozzátartozó sajátvektor. Ekkor |λ| · kvk = kAvk ≤ kAk · kvk =⇒ |λ| ≤ kAk, (2.17) hiszen kvk > 0. Ez a reláció az abszolútértékben maximális sajátérték esetén azt jelenti, hogy ρ(A) ≤ kAk, és itt az A mátrix bármely vektornorma által indukált mátrixnormája áll.

2.3. Hibabecslések Tekintsük most a (2.1) lineáris egyenletrendszert abban az esetben, amikor A reguláris n × n-es mátrix és b 6= 0. Innen következik, a normát mindkét oldalra alkalmazva, 0 < kbk = kAxk ≤ kAk kxk. (2.18)

2.3.1. A lineáris rendszer jobboldala hibás Becsüljük a megoldás hibáját abban az esetben, amikor b helyett adott a hibás b + δb vektor. Az egyenlet megoldása legyen y = x + (y − x) =: x + δx. Tehát δx = y − x és A(x + δx) = b + δb. Ekkor b+δb = A(x+δx) = b+Aδx, és ezért δb = Aδx. Mivel A reguláris, van inverze, így azt is írhatjuk, hogy δx = A−1 δb. Megint normát alkalmazva:

kδxk = kA−1 δbk ≤ kA−1 k kδbk.

(2.19)

© Stoyan Gisbert

© Typotex Kiadó

2.3. HIBABECSLÉSEK

33

Ez az egyenl®tlenség mutatja, hogy kA−1 k kδbk korlátozza felülr®l az x megoldás abszolút hibáját. A relatív hiba becslésére használjuk el®ször a (2.19), majd a (2.18) egyenl®tlenségeket:

kA−1 k kδbk kA−1 k kδbk kδxk kδbk ≤ ≤ = kA−1 k · kAk · . kxk kxk kbk/kAk kbk

(2.20)

Itt a jobb oldalon látjuk a jobboldali vektor relatív hibáját (ez lehet pl. az inputhiba) és a bal oldalon a megoldás relatív hibáját. A fenti (2.18), (2.19) becslések élesek, javíthatatlanok, mivel létezik olyan x (másszóval: olyan b) és olyan δb vektor (mind a kett® nem zérus), hogy

kAxk = kAk kxk, Ekkor

kδxk kxk

= kA−1 k · kAk ·

kδbk kbk

kA−1 δbk = kA−1 k kδbk.

lesz, tehát a (2.20) becslés is éles.

2.3.2. A kondíciószám A (2.20)-ban álló kA−1 k · kAk számot a mátrix kondíciószám ának hívjuk,

cond(A) := kA−1 k · kAk. Levezetésünk szerint a kondíciószám pontosan azt adja meg, hogy a lineáris rendszer jobboldali vektorának relatív hibájánál mennyivel nagyobb lehet a megoldás relatív hibája. A kondicószám ismerete így dönt® fontosságú a rendszer számítógépes megoldhatósága szempontjából, de a szám nehezen megszerezhet®, mert ahhoz az inverz mátrixot kellene el®bb kiszámítani.

Tulajdonságok: 1. A kondíciószám függ a mátrixnormától és így az ezt indukáló vektor-

normától, ezt lent példákkal szemléltetjük. Ezért, ha szükséges, a kondíciószámot megfelel® indexszel jelöljük: condp (A) = kA−1 k(p) kAk(p) , p = 1, 2, ∞. 2. A kondíciószám nem lehet 1-nél kisebb: Az indukált normák esetén kIk = 1, mert (2.2) szerint

kIk = max x6=0

kxk = 1. kxk

Így, (2.5)-öt is gyelembe véve, 1 = kIk = kAA−1 k ≤ kAk kA−1 k = cond(A). Másszóval, általában nem számíthatunk arra, hogy a megoldás relatív hibája csökken a jobboldali vektor relatív hibájához képest. 3. Ha speciálisan A = Q ortogonális mátrix, akkor cond2 (Q) = 1, ld. (2.15). Ekkor nem n®het a relatív hiba az egyenletrendszer megoldása során.

© Stoyan Gisbert

© Typotex Kiadó

34

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

4. Legyen A reguláris, vagyis nincs nulla sajátértéke. Ekkor Av = λv =⇒

1 v = A−1 v. λ

Az A mátrix abszolútértékben minimális, ill. maximális sajátértékét λmin (A)val, ill. λmax (A)-val jelölve, alkalmazhatjuk a (2.17) szerinti érvelést az inverz mátrixra is:

kAk ≥ |λmax (A)|, kA−1 k ≥ |λmax (A−1 )| = Innen következik, hogy

1 . |λmin (A)|

¯ ¯ ¯ λmax (A) ¯ ¯. cond(A) ≥ ¯¯ λmin (A) ¯

Ennek alapján a sajátértékek kiszámításáról szóló fejezetbeli módszerekkel a kondíciószám becsülhet®. 5. Legyen a jobboldal relatív hibája egyenl® az inputhibával: kδbk/kbk = ε1 = a1−t és 1 cond(A) ≥ . ε1 Ekkor (2.20) mutatja, hogy a megoldás relatív hibája elfogadhatatlanul nagy ≥ 1. Ekkor az egyenletrendszert (valamint a mátrixot) lehet: cond(A) kδbk kbk rosszul kondícionáltnak hívjuk. Ahhoz, hogy legalább egy helyes számjegye legyen a megoldásnak, az kell, hogy 1 cond(A) ≤ aε1 teljesüljön, mert akkor (2.20)-ból és kδbk/kbk ≤ ε1 -b®l következik, hogy

1 kδxk ≤ . kxk a

Példák:

Ha a mátrix reguláris és mérete 2 × 2, akkor a kondíciószám kiszámítása nem gond. Az µ ¶ a b A= c d mátrix determinánsa det(A) = ad − cb legyen nullától különböz®, ekkor az inverz mátrix µ ¶ 1 d −b −1 A = , a ad − cb −c

© Stoyan Gisbert

© Typotex Kiadó

2.3. HIBABECSLÉSEK

35

és így pl.

cond∞ (A) = max(|a| + |b|, |c| + |d|)

kAk∞ kAk1 max(|d| + |b|, |c| + |a|) = . |ad − cb| | det(A)|

A fenti 2 × 2-es példamátrix kondíciószáma nem deniált, mert nyilván szinguláris a mátrix. Ha viszont a mátrix pl. µ ¶ 3 4 A= , −1 2 akkor kAk∞ = 7, det(A) = 10 és −1

A

1 = 10

µ

2 −4 1 3

¶ .

6 = 53 és cond∞ (A) = 21 . Így kA−1 k∞ = 10 5 Itt melyik x vektoron igaz kAxk∞ = kAk∞ kxk∞ ? Korábbi eredményünk szerint ez az x = (1, 1)T vektoron történik meg  amikor b = Ax = (7, 1)T . −1 T Hasonlóan, ¡kA¢−1 δbk¡∞ = ¢ kA k∞ kδbk∞ , ha δb = (1, −1)  és ekkor δx = 6 1 3 1 −1 A δb = 10 −2 = 5 −1 . Ha itt δb helyett t · δb áll és δx helyett t · δx, egy t paraméterrel, akkor is igazak maradnak az egyenl®ségek: A(t · δx) = t · δb és kA−1 t · δbk∞ = kA−1 k∞ kt · δbk∞ . Így, ha az eredeti és a hibákkal terhelt rendszer ¶ µ ¶ µ 7 3 4 , x= Ax = −1 2 1 ill. ¶ ¶ µ µ 7+t 3 4 , (2.21) (x + t · δx) = A(x + t · δx) = −1 2 1−t akkor egyenl®ség áll fenn:

kt · δxk kt · δbk = kA−1 k · kAk · , kxk kbk és a konkrét számokat behelyettesítve:

|t|3/5 3 21 |t| 21 kt · δbk kt · δxk = = |t| = · = · . kxk 1 5 5 7 5 kbk Ez azt jelenti, hogy  amíg t 6= 0  addig a megoldás relatív hibája a 21/5szeresére növekszik a (2.21) rendszer megoldás során, függetlenül t-t®l. A (2.7) példamátrix  5 1  −4 A−1 = 21 −10

esetén ellen®rizhet®, hogy  −7 −4 25 −7 −1  , így kA−1 k1 = 1, kA−1 k∞ = . 21 −7 8

© Stoyan Gisbert

© Typotex Kiadó

36

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

25 = 250 ≈ 11.9, és hosszabb Ezért cond1 (A) = 9 · 1 = 9, cond∞ (A) = 10 · 21 21 számítással kapjuk meg, hogy cond2 (A) ≈ 7.95480 ∗ 0.75403 ≈ 5.99813.

Már kisméret¶ mátrixoknál is lehetséges, hogy a kondíciószámuk nagy, amire példa az alábbi, a t paramétert®l függ® A(t) mátrix:

µ A(t) :=

1 t t 1 + t2

¶ (2.22)

.

Ekkor det(A) = 1 függetlenül t-t®l, és

µ −1

A(t)

:=

1 + t2 −t −t 1

¶ .

Ezért kA(t)k∞ = max(|t| + 1 + t2 , 1 + |t|) = 1 + |t| + t2 = kA(t)−1 k∞ , így cond∞ (A(t)) = (1 + |t| + t2 )2 . Ez igen nagy lehet megfelel® t esetén, pl. ha t = 100, akkor cond∞ (A(t)) = 102030201 > 108 . Egy további példa erre a jelenségre a Hilbert-féle mátrix ¶n µ 1 . Hn = i + j − 1 i,j=1 Szemléltetésnek említjük, hogy pl. n = 5 esetén,  1 1/2 1/3 1/4  1/2 1/3 1/4 1/5  H5 =   1/3 1/4 1/5 1/6  1/4 1/5 1/6 1/7 1/5 1/6 1/7 1/8

amikor  1/5 1/6   1/7  , 1/8  1/9

akkor cond2 (H5 ) ≈ 4.766 · 105 (itt λmin ≈ 3.288 · 10−6 , λmax ≈ 1.567) és cond2 (H10 ) ≈ 3.5 · 1013 . A H10 mátrix esetében a kondíciószám már olyan nagy, hogy csupán a jobboldal inputhibája óriási hibát okozhat a (2.1) egyenlet pontos megoldásában. Ekkor nyilván semmilyen algoritmus nem tud jó eredményt adni. Az ilyen mátrixú egyenletrendszert gyengén meghatározott nak is hívjuk.

Ezzel jutottunk el a fejezet lényeges felismeréséhez: nem a determinánstól függ az, vajon adott számítógép, egyenletrendszer és hibaszint mellett megoldható-e a rendszer, hanem a kondíciószámtól.

© Stoyan Gisbert

© Typotex Kiadó

2.3. HIBABECSLÉSEK

37

Igaz, ha a determináns nulla, akkor a kondíciószám nem is deniált. De ha det(A) különbözik nullától, akkor értékének nincs köze ahhoz, hogy a mátrix kondíciószáma nagy vagy kicsi: megszorozva a (2.1) rendszert pl. a 10k hatvánnyal, a determináns értéke 10kn -szer nagyobb lesz. A kondíciószám viszont ekkor nem változik. Ugyanebbe az irányba mutat a (2.22) példa is: ott a determináns t-t®l függetlenül 1 volt, míg a kondíciószám tetsz®legesen nagy értéket is fel tudott venni. A gyakorlatban fellép® mátrixokra jellemz®, hogy rosszul kondícionáltak (míg véletlen számokból összeállított mátrixok legtöbbször jól vannak kondícionálva).

2.3.3. A lineáris rendszer mátrixa hibás Most vizsgáljuk azt az esetet, amikor a mátrix elemei hibákkal terheltek:

B = A + δA, By = b, y = x + δx.

(2.23)

Ekkor olyan feltételre van szükségünk, hogy az A mátrix δA hibája elegend®en kicsi legyen, mert egyébként B szinguláris lehet. Tekintsük el®ször azt az egyszer¶bb kérdést, hogy milyen feltételt lehet az R mátrixra adni ahhoz, hogy I + R biztosan reguláris legyen ? A válasz erre a kérdésre az úgynevezett perturbációs lemma: Legyen S := I + R és kRk =: q < 1. Ekkor S reguláris és

kS −1 k ≤ 1/(1 − q). Ezt a következ®képpen látjuk be. a) Az kx+yk ≤ kxk+kyk háromszög-egyenl®tlenségb®l következik el®ször

kxk ≥ kx + yk − kyk, majd x + y helyett z -t írva (azaz x = z − y ), kapjuk az úgynevezett fordított háromszög-egyenl®tlenség et:

kz − yk ≥ kzk − kyk, és az x, y vektorokkal együtt itt y és z is tetsz®legesek. b) A fordított háromszög-egyenl®tlenségben vegyük z := x, y := −Rx:

kSxk = kx + Rxk ≥ kxk − kRxk ≥ kxk − qkxk = (1 − q)kxk. (Itt a második  ≥ jel abból származik, hogy −kRxk ≥ −kRkkxk.) Ezért nincs olyan x 6= 0 vektor, amellyel Sx = 0 volna (hiszen egyébként kSxk = 0

© Stoyan Gisbert

© Typotex Kiadó

38

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK

és (1 − q)kxk > 0 lenne), tehát S reguláris. Behelyettesítve x = S −1 z (azaz Sx = z ) az egyenl®tlenségbe:

kzk ≥ (1 − q)kS −1 zk, kS −1 k becslése is következik, (2.4) szerint. Amikor az R mátrixnak −1 a sajátértéke és v 6= 0 a hozzátartozó sajátvektor, akkor q = kRk ≥ ρ(R) = |λmax (R)| ≥ 1, tehát a lemma feltétele nem teljesül. És valóban, ekkor I + R-nek a nulla sajátértéke: (I + R)v = v + (−v) = 0, ezért szinguláris. A perturbációs lemmának a segítségével tudunk egy elégséges feltételt adni arra, hogy a hibás mátrixú (2.23) egyenletrendszer B = A + δA mátrixa reguláris legyen, amikor a hibátlan A mátrix reguláris: Ekkor B = A(I + A−1 δA) és így B a determinánstétel alapján pontosan akkor reguláris, amikor I + A−1 δA az:

det(B) = det(A) det(I + A−1 δA). Továbbá, a perturbációs lemma szerint

kδAk < 1/kA−1 k elégséges ahhoz, hogy az I + A−1 δA mátrix reguláris legyen, ugyanis ekkor (2.5)-b®l következik kA−1 δAk ≤ kA−1 k kδAk < 1. Most még B −1 is becsülhet®: B −1 = (I + A−1 δA)−1 A−1 , és így

kB −1 k ≤ k(I + A−1 δA)−1 k kA−1 k ≤

kA−1 k . 1 − kA−1 k kδAk

(2.24)

Ezután a felkészülés után becsülhetjük a (2.1) és (2.23) egyenletek megoldásainak különbségét. Mivel

Ax = b = By = Bx + Bδx = b + δAx + Bδx, így igaz δx = −B −1 δAx, és (2.24) szerint

kA−1 k kδAk kxk, 1 − kA−1 k kδAk κ kδxk kδAk ≤ , κ := cond(A) , kxk 1−κ kAk kδxk ≤ kB −1 kkδAkkxk ≤

(2.25)

© Stoyan Gisbert

© Typotex Kiadó

2.4. FELADATOK

39

úgy hogy ebben az esetben is az eredmény relatív hibája kifejezhet® a kondíciószám segítségével, valamint az adatok (itt A) relatív hibájával. A továbbiakban látni fogjuk: ahol mátrixok szerepelnek, ott a kondíciószámuk fontos, így pl. a sajátértékek kiszámításánál és a lineáris közönséges dierenciálegyenletekb®l álló rendszerek megoldása során.

2.4. Feladatok 1. Számítsuk ki a következ® mátrix maximum és oktaéder normáját:   1 2 3 6 . A =  4 −5 7 8 −9 Mely x vektorok esetén igazak az kAxkp = kAkp kxkp egyenl®ségek, p = 1, ∞ ? 2. Adjuk meg a következ® mátrix maximum normáját és kondíciószámát: ¶ µ 2 −7 . A= 6 13 Mely x, y vektorok esetén igazak az kAxk∞ = kAk∞ kxk∞ , illetve az kA−1 yk∞ = kA−1 k∞ kyk∞ egyenl®ségek? 3. Legyen

µ A=

a b c d



reguláris mátrix. Adjuk meg cond1 (A) képletét! 4. Számítsuk ki a következ® két mátrix kondíciószámát! (A norma választható.) µ ¶ µ ¶ 2 −5 ε 0 A= , B= , 0 < ε < 1. 0 0 0 ε−1 5. Legyen

   −4 5 3 6 3 3 1  18 −1 −21  . A =  6 2 3  . Ekkor A−1 = 10 4 2 5 −4 −2 8 

Számítsuk ki A maximum és 1-es normáját, valamint a hozzátartozó kondíciószámokat!

© Stoyan Gisbert

© Typotex Kiadó

40

FEJEZET 2. NORMÁK, KONDÍCIÓSZÁMOK 6. Legyen A = (aij ) ∈ IRn×n . Lássuk be, hogy érvényesek a következ® egyenl®tlenségek:

kAkp ≤ n · max |aij |, i,j

p = 1, ∞.

7. Ha A a (2.7) mátrix és δA egy elképzelt hibamátrixa, akkor milyen korlát alatt kell maradnia kδAk1 -nek ahhoz, hogy A-val együtt A + δA is reguláris legyen? 8. Legyen



 −3 2 −7 2  0 −5 3 1  , A = A(t) := I4 + t ·   4 0 −9 6  −2 8 −4 5

ahol I4 a 4 × 4-es egységmátrix és t valós paraméter. Milyen t-értékekre tudjuk garantálni az A(t) mátrix regularitását? 9. Lássuk be, hogy amennyiben valamilyen vektornormában

0 1. Ennek eredménye az, hogy az i-edik sorban x1 együtthatója nulla lesz, vagyis ezzel ott az x1 ismeretlent sikerült kiküszöbölni, míg az els® sor arra alkalmas, hogy x1 -et a többi ismeretlen segítségével fejezzük ki. (1) Az A mátrix elemeit aij =: aij -vel jelölve, a kivonás által i > 1-re lét(2)

rehozott új elemeket pedig aij -vel, a következ® képletekkel írhatjuk le ezt a m¶veletet: (2)

aij

(1)

(1)

:= aij − `i1 a1j , (1)

(1)

`i1 := ai1 /a11 ,

j = 1, . . . , n,

(3.2) (3.3)

i = 2, . . . , n.

Itt a j = 1 eset számítást valójában nem igényel, mert éppen az volt a (2) célunk, hogy ai1 = 0 legyen, amikor i > 1, és ezeket a nullákat nem érdemes ciklusban kiszámítani. Legyen továbbá (2) (1) (1) bi := bi − `i1 b1 , i = 2, . . . , n, (3.4) akkor az els® lépés után az egyenletrendszer a következ® lesz: (1)

(1)

(1)

(1)

(2)

(2)

(2)

a11 x1 + a12 x2 + · · · + a1n xn = b1

a22 x2 + · · · + a2n xn = b2 .. .. .. . . . (2) (2) an2 x2 + · · · + ann xn = b(2) n

(3.5)

(2)

Ha most a22 6= 0, akkor hasonlóan járhatunk el az itt az els® sor alatt álló (n − 1) × (n − 1)-es egyenletrendszerrel, a második sor segítségével kiküszöbölve a következ® sorokból x2 -t. Ehhez  hasonlóan mint fent  a következ® jelöléseket vezetjük be az új részmátrix és a baloldali vektor elemeire: (3)

aij

(2)

`i2 := (3) bi

(2)

:= aij − `i2 a2j , :=

(2) (2) ai2 /a22 , i = (2) (2) bi − `i2 b2 ,

j = 2, . . . , n, 3, . . . , n, i = 3, . . . , n,

© Stoyan Gisbert

© Typotex Kiadó

3.1. A GAUSS-ELIMINÁCIÓ

43

és itt most a j = 2 eset elhagyható. Az x2 ismeretlen pedig a 2. sor és az x3 , . . . , xn ismeretlenek segítségével fejezhet® ki. Általában, a Gauss-elimináció k -adik lépésében (1 ≤ k ≤ n − 1) a követ(k) kez® képletekkel dolgozhatunk  ha teljesül akk 6= 0: (k+1)

aij

(k)

(k)

:= aij − `ik akj , (k)

j = k + 1, . . . , n,

(k)

(3.6)

`ik := aik /akk , (k+1) bi

:=

(k) bi



(k) `ik bk ,

i = k + 1, . . . , n.

Ezek a relációk (3.2)-(3.4)-b®l következnek úgy, hogy minden 1 helyett k -t írunk, és minden 2 helyett k + 1-et (beszámítva azt is, hogy (3.2)-ben a j = 1 eset nem érdekes). A fenti n − 1 lépéssel végül a következ® rendszerhez jutunk el: (1)

(1)

(1)

(2)

(2)

(3)

(3)

(1)

· · · + a1n xn = b1

(2)

· · · + a2n xn = b2

a11 x1 + a12 x2 + . . . a22 x2 + . . . (3)

a33 x3 + · · · + a3n xn = b3 .. .. .. . . . (n) a(n) nn xn = bn

(3.7)

A tulajdonképpeni kiküszöbölést avagy eliminációt ezzel lezártuk. (n) Ha most az utolsó egyenletben még ann 6= 0 is érvényes, akkor fordított (n) (n) sorrendben könnyen megkapjuk az x megoldást, el®ször xn -et: xn = bn /ann , majd egymásután az xn−1 , . . . , x1 ismeretleneket. Ez a visszahelyettesítés. Ezzel a két lépéssel, az x1 , . . . , xn ismeretlenek kiküszöbölésével és a viszszahelyettesítéssel a (sz¶kebb értelemben vett) Gauss-eliminációt leírtuk. Tekintsünk egy példát! A rendszer legyen     −4 1 −1 −9 Ax = b, A =  −1 4 −1  , b =  −12  . 1 1 4 11

(3.8)

Mivel a Gauss-elimináció sorm¶veletei ugyanazok a mátrixelemekre nézve, mint a jobboldali vektorra, az A mátrixot a b vektorral b®vítjük ki:   −4 1 −1 −9 [A, b] =  −1 4 −1 −12  , 1 1 4 11

© Stoyan Gisbert

© Typotex Kiadó

44

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

−1 = 41 -szeresét (`21 = 41 ) kivonjuk a második sorból, valamajd az els® sor −4 1 = − 41 -szeresét (`31 = − 41 ) kivonjuk a harmadik sorból. mint az els® sor −4 Ennek eredménye   −4 1 −1 −9 `21 = 41 ,`31 =− 41  0 15 − 3 − 39  . −→ [A, b] 4 4 4 35 0 54 15 4 4

Következ®nek a (megváltoztatott) második sorral dolgozunk: a második sor 5/4 = 31 -szorosát (`32 = 31 ) kivonjuk a harmadik sorból: 15/4



−4  0 0

  1 −1 −9 −4 1 ` = 3 39  32 3  15 −4 − 4 0 −→ 4 15 35 5 0 4 4 4

 1 −1 −9 15 . − 43 − 39 4 4 12 0 4

Ezzel az ismeretlenek kiküszöbölését befejeztük és következhet a visszahelyettesítés:

12 = 3, 4 µ ¶ 39 3 30 4 − + · x3 = − = −2, = 15 4 4 15 1 −4 1 = 1. = − (−9 − x2 + x3 ) = − (−9 + 2 + 3) = − 4 4 4

x3 = x2 x1 És valóban

(3.9)

    −9 1 −4 1 −1 Ax =  −1 4 −1   −2  =  −12  . 1 1 4 3 11 

3.2. A Gauss-elimináció végrehajthatósága (k)

Tisztázzuk azt, hogy mit is jelentenek az akk 6= 0 feltételek, amelyek nélkül megakad a leírt folyamat, a Gauss-elimináció. Képleteink szerint pl. (2) a22

=

(1) a22

(1) (1)

(1) (1)



a21 a12 (1)

a11

=

(1) (1)

a11 a22 − a21 a12 (1)

a11

.

A jobb oldalon a másodrend¶ és els®rend¶ bal fels® f®minorok hányadosa szerepel, azaz ¶ µ a11 a12 ´es det(a11 ) det a21 a22

© Stoyan Gisbert

© Typotex Kiadó

3.2. A GAUSS-ELIMINÁCIÓ VÉGREHAJTHATÓSÁGA hányadosa. Ennek magyarázata a következ®: sokat a (3.1) rendszer sorainak kombinációja így jött létre), ezért à µ ¶ (1) a11 a12 a11 det = det a21 a22 0 (1)

45

nem változtatja a determinán(a (3.5) rendszer második sora (1)

a12 (2) a22

! (1) (2)

= a11 a22 .

(2)

Feltéve, µ hogy a11 ¶ 6= 0, az a22 innen kifejezhet®  és nem nulla, ha nem nulla a11 a12 det , a bal fels® másodrend¶ f®minor. Ekkor folytathatjuk az a21 a22 eliminációt. Hasonlóan a (k − 1)-edik lépés után hivatkozhatunk arra, hogy változatlan a bal fels® k -adrend¶ f®minor,  (1)  (1)   a11 . . . . . . a1k  a11 . . . a1k .. .. ..  k  0  Y . . .  .. . .  (i) .   det  . aii . ..  = det  .. ..  =  0 0 . .  i=1 ak1 . . . akk (k) 0 . . . 0 akk   a . . . a 11 1,k−1 k−1 Y (i)   (k) (k) .. .. = akk · aii = akk · det  ... . . . i=1 ak−1,1 . . . ak−1,k−1 Hogy idáig jutottunk, ahhoz már az a k − 1 feltétel kellett, hogy az összes i-edrend¶ f®minor (i = 1, . . . , k − 1) ne legyen zérus. Ha most még a k (k) adrend¶ bal fels® f®minor sem zérus, akkor akk 6= 0 és folytathatjuk az eliminációt. Így a Gauss-elimináció kiküszöbölési részéhez elegend® az, hogy (k) akk 6= 0, k = 1, . . . , n − 1. Az a feltétel, hogy A reguláris legyen, csak a visszahelyettesítés megkezdéséhez kell, mert   a11 . . . a1,n−1   .. .. .. det(A) = a(n) . . . . nn · det  an−1,1 . . . an−1,n−1 Innen ugyanis látjuk: amikor az n − 1-edrend¶ f®minor nem nulla, akkor (n) det(A)-val együtt ann is különbözik nullától.

Összefoglalva megállapíthatjuk, hogy a Gauss-elimináció pontosan akkor végezhet® el, ha az összes bal fels® f®minor nemzérus:  a11 . . . a1k   6 0, det  ... . . . ...  = ak1 . . . akk 

k = 1, . . . , n.

(3.10)

© Stoyan Gisbert

© Typotex Kiadó

46

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

Ebb®l az els® n − 1 feltétel biztosítja a Gauss-elimináció kiküszöbölési részének végrehajthatóságát, az utolsó pedig a visszahelyettesítés beindítását. Eszerint az eredmény szerint a Gauss-elimináció  eddig tárgyalt formájában  gyakran elvégezhetetlen, amikor a (3.1) rendszernek van egyértelm¶ megoldása, hiszen ahhoz csak az n-edik feltétel kell: det(A) 6= 0. A fenti (3.8) példánkban nem nehéz kiszámítani, hogy a teljes (3.10) f®minor-sorozat −4, −15, −60, tehát különbözik nullától. A gyakorlatban a fenti n feltétel nehezen ellen®rizhet® a rendszer megoldása el®tt. Ezért a szokás az, hogy a számítás közben mindig teszteljük, vajon (k) akk különbözik-e nullától. De vannak mátrixosztályok, amelyekre a (3.10) feltételek automatikusan teljesülnek, ld. pl. a 3.6. pontot.

3.3. Az LU-felbontás A programozás szempontjából el®nyös, ha a Gauss-elimináció egyes lépéseit mátrixalakba írjuk át. A (3.1)-b®l (3.5)-be való átmenet a következ®képpen írható le:

Ax = b → A2 x = L1 b, A2 := L1 A1 , A1 := A,

(3.11)

ahol L1 speciális alakú mátrix, amelyik csak els® oszlopában különbözik az egységmátrixtól  mégpedig ott tartalmazza a (3.3) szerinti `i1 hányadosokat:   1 0 . . . 0  −`21 1 0 . . 0    .  0 1 0 . 0 . L1 :=   . . . . . .    . . . . 1 0 −`n1 0 . . 0 1 Ha A1 -et blokk-mátrix alakban írjuk le: ¶ µ a11 a1 A1 = (1) , c1 A22

(3.12)

ahol a1 n − 1-dimenziós sorvektor, c1 pedig n − 1-dimenziós oszlopvektor:

a1 := (a12 , . . . , a1n ),

c1 := (a21 , . . . , an1 )T ,

(1)

és A22 ∈ IR(n−1)×(n−1) azokat az elemeket tartalmazza, amelyek az A mátrix jobb alsó sarkában állnak, akkor a (3.2) relációk rövid mátrixalakban foglalhatók össze: (2) (1) A22 = A22 − c1 a1 /a11 (3.13)

© Stoyan Gisbert

© Typotex Kiadó

3.3. AZ LU-FELBONTÁS (2)

47 (1)

Itt A22 tartalmazza tehát az A22 helyén keletkez® új elemeket. A Gauss-elimináció folytatása hasonlóan leírható, mint (3.11):

A2 x = L1 b → A3 x = L2 L1 b, A3 := L2 A2 = L2 L1 A, ahol



1 0 0 1  0 −`32 L2 :=  . .  . . 0 −`n2

és

(2)

(2)

`i2 := ai2 /a22 ,

. 0 1 . . 0

. . 0 . . .

. . . . . .

. . . . 1 0

 0 0  0 , .  0 1

(3.14)

(3.15)

i = 3, . . . , n.

Az L2 mátrix els® sora és oszlopa az egységmátrixból való, ami jelzi, hogy itt az A2 els® sorával és az x1 ismeretlennel már nem foglalkozunk. A mátrix többi része L1 felépítésének felel meg  de ezen rész mérete már csak (n − 1) × (n − 1). Általában a k -adik lépésben (k = 1, 2, . . . , n − 1)

Ak x = Lk−1 · · · L1 b → Ak+1 x = Lk · · · L1 b, Ak+1 := Lk Ak = Lk · · · L1 A, (3.16) Itt Ak -ból újabb n × n-es Lk és Ak+1 mátrixokat állítunk el®, ahol   Ik−1 0 . . . 0  0 1 0 . . 0    . −`k+1k 1 0 . 0  , Lk :=   . . 0 1 . 0    . . . . . . 0 −`nk 0 . 0 1 és

(k)

(k)

`ik := aik /akk ,

i = k + 1, . . . , n; k = 1, . . . .n − 1.

Közvetlenül ellen®rizhetjük, hogy Lk reguláris, inverze csak az `ik hányadosok el®jelében különbözik Lk -tól:   Ik−1 0 . . . 0  0 1 0 . . 0    . `k+1k 1 0 . 0 −1  . (3.17) Lk :=   . . 0 1 . 0    . . . . . . 0 `nk 0 . 0 1

© Stoyan Gisbert

© Typotex Kiadó

48

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

Most tegyük fel, hogy a Gauss-elimináció végrehajtható, tehát a f®minorok sorozata különbözik nullától. A Gauss-elimináció (3.7) végeredménye, ha csak A változását nézzük, az  (1)    (1) u11 . . . . . . u1n a11 . . . . . . a1n  .. .   (2)   0 a(2) . a2n   0 u22 .. u2n  22   An =  =: U = (3.18)  .. ..  .. ..   0  0 0 . .  0 . .  (n) 0 . . . 0 unn 0 . . . 0 ann úgynevezett fels® háromszög mátrix, (3.19)

An = U = Ln−1 · · · L1 A. (3.17) segítségével kiszámíthatjuk közvetlenül, hogy  1 0 .  `21 1 . (L1 )−1 · · · (Ln−1 )−1 =   . . . `n1 . `nn−1

 0 .  =: L. 0 1

(3.20)

Az L mátrixot alakja szerint alsó háromszög mátrix nak hívjuk; a mátrix normált: `ii = 1. Most (3.19)-b®l és (3.20)-ból kapjuk

A = LU,

(3.21)

ez az A mátrix LU-felbontás a. Tehát ha a Gauss-elimináció kiküszöbölési része során meg®rizzük az `ik szorzókat, akkor a végén rendelkezünk mind az U , mind az L mátrixszal, azaz a mátrix LU-felbontásával. Ilyen értelemben az LU-felbontással ekvivalens a Gauss-elimináció kiküszöbölési része. Ezért az LU-felbontás létezéséhez a (3.10) els® n − 1 feltétele elegend®. A fenti (3.8) példában   −4 1 −1 − 43  , (3.22) U =  0 15 4 0 0 4 és gyelembe véve a kiküszöbölés során használt `ij hányadosokat, kapjuk   1 0 0 (3.23) L =  41 1 0  . 1 1 −4 3 1

© Stoyan Gisbert

© Typotex Kiadó

3.4. ALGORITMUSOK, M–VELETIGÉNY

49

Ezzel a két mátrixszal valóban érvényes A = LU . Most, az LU-felbontás birtokában, két háromszög mátrixú egyenletrendszer megoldásán keresztül nyerhetjük az

Ax = LU x = L(U x) = b egyenletrendszer megoldását: (3.24) (3.25)

Ly = b, U x = y.

Ezekb®l a Gauss-elimináció az els® rendszert már az U szorzó elkészítésével párhuzamosan meg is oldja. A második rendszer megoldhatóságához persze az utolsó (3.10) feltételre is szükség van.

Ezzel eljutottunk az egyenletrendszerek moduláris programmal való megoldásához:

egy modul állítja el® az LU -felbontást, egy további oldja meg a (3.24) rendszert, a harmadik pedig a (3.25) rendszert  vagy pedig a második modul a (3.24) és (3.25) rendszereket oldja meg.

Ha több egyenletrendszert ugyanazzal a mátrixszal és különböz® jobboldallal kell megoldanunk, akkor hasznos ez a moduláris munkamód. A  sz¶kebb értelemben vett  Gauss-elimináció nem ®rizi meg az L szorzót, így újra és újra végzi ugyanazt a munkát a nevezett helyzetben.

3.4. Algoritmusok, m¶veletigény Most foglalkozzunk az egyenletrendszerek megoldásának gyakorlati oldalával  feltételezve, hogy a (3.10) feltételek teljesülnek. (Magának a lineáris rendszer megoldásának az algoritmusát csak a következ® pontban adjuk meg pszeudokód formájában azután, hogy a (3.10) feltételekt®l megszabadultunk.) Az egyik lehet®séget már bemutattuk, a Gauss-eliminációt, amely során el®állítjuk az LU-felbontást is L normált alsó és U fels® háromszög mátrixszal. Ennek jellegzetessége az, hogy a k -adik lépésben létrehozzuk az `ik (i > k) és (k) ukj (j ≥ k) elemeket, és a mátrix összes visszamaradó elemein (aij , k < i, j) egyszer végig megyünk. További algoritmikus megoldásokat találhatunk, ha közvetlenül az LUfelbontást hozzuk létre, az

aij =

n X k=1

min(i,j)

`ik ukj =

X

`ik ukj

(3.26)

k=1

© Stoyan Gisbert

© Typotex Kiadó

50

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

képletb®l kiindulva, ahol a minimum onnan ered, hogy `ik = 0, amikor k > i, ill. ukj = 0, amikor k > j . Vegyük el®ször a képlet i = j esetét! Ekkor

aii =

i X k=1

`ik uki = `ii uii +

i−1 X

`ik uki ,

k=1

ahonnan látjuk, hogy nincs egyértelm¶en meghatározva az LU-felbontás: választhatunk akár `ii = 1-et (ami a Gauss-eliminációnak felel meg), akár uii = 1-et minden i-re. Ekkor az els® esetben a képlet az uii kiszámítását szolgálja, a második esetben az `ii -ét. A Gauss-elimináció munkamódjától eltekintve még két másik lehet®ség kézenfekv® a (3.26) képletek felhasználására: a) oszloponként számítjuk ki az L és U elemeit; b) soronként kapjuk az elemeket. Az els® lehet®ség megvalósításához válasszuk `ii = 1-nek, és rögzített j -re (3.26)-ból számítjuk ki el®ször az uij (i ≤ j) elemeket, majd az `ij (i > j) elemeket. A második verziónál válasszuk ujj = 1-nek, és rögzített i-re (3.26)-ból számítjuk ki el®ször az `ij (j ≤ i) elemeket, majd az uij (j > i) elemeket. Figyelemre méltó, hogy az els® (második) lehet®ség esetében nincs szükség az A mátrix j -nél (i-nél) magasabb sorszámú oszlopaira (soraira), amikor az L és U i-edik oszlopát (sorát) számítjuk. Ennek akkor van jelent®sége, amikor a mátrix a bels® tárban nem fér el és küls® tárban tároljuk  illetve: azok az oszlopok (sorok) még nem is érkeztek hozzánk. Mindegyik esetben érdemes a számítás során fellép® 1/ujj , ill. 1/`ii szorzókat külön meg®rizni; az `ij , ill. uij számokat az aij -k helyén tárolhatjuk. A következ® mátrixban mutatjuk az `ij (i > j) kiszámításához szükséges információ elhelyezkedését a mátrixban a soronkénti munkamód esetére:   u11 u12 · · · u1j ··· u1n  `21 u22 u2j u2n     .. ..   `31 . .   .. .. ..    . . .     ujj     ..   .     ` ` · · · ` a → ` a · · · a · · · a i1 i2 i,j−1 ij ij i,j+1 ii in    a ai+1,j ai+1,n    i+1,1  .. .. ..   . . .  an1 anj ann

© Stoyan Gisbert

© Typotex Kiadó

3.4. ALGORITMUSOK, M–VELETIGÉNY

51

Az alábbi mátrixban mutatjuk ugyanezt az uij (i ≤ j) kiszámításával kapcsolatban:



u11 u12 · · · `21 u22

    `31  ..  .     `i1    ai+1,1  ..  .     ..  . an1

`i2 · · ·

u1j u2j .. . .. . `i,i−1 uii · · ·

···

ui−1,j aij → uij ai,j+1 · · · ai+1,j .. .

u1n u2n .. . .. . ain ai+1,n .. .

ajj .. .

.. .

anj

ann

                    

Hány m¶veletbe kerül az LU-felbontás, ha egy m¶velet alatt egy szorzást és egy összeadást értünk? A fenti képletek ugyanazt adják, mint a Gauss-elimináció, melynek

(n − 1)2 + (n − 2)2 + · · · + 1 = n(n − 1)(2n − 1)/6 = n3 /3 + O(n2 ) a m¶veletigénye (ha már itt is eltekintünk az n − 1 osztástól és az `ij szorzók kiszámításának költségét®l, ami (n−1)+(n−2)+· · ·+1 = (n−1)n/2 m¶velet). Az LU-felbontás elvégzése után az U mátrix f®átlóbeli elemeit összeszorozva megkaphatjuk az A determinánsát, ennek kiszámítása ezen az úton tehát már nem n!n m¶velettel, hanem körülbelül n3 /3 m¶velettel kivitelezhet®. (Például n = 10 esetén n!n ≈ 3.6 · 107 , n3 /3 ≈ 333.) Ha n nagy, az uii elemek szorzásánál akár túlcsordulásra, akár alulcsordulásra is fel kell készülnünk. Célunk természetesen mindenekel®tt az Ax = b egyenletrendszer megoldása (3.21)-(3.25) segítségével. Ebb®l az Ly = b megoldása (ha L normált) az i−1 X yi = bi − `ik yk , i = 1, . . . , n, k=1

képlet alapján történik. Itt az i-edik komponens kiszámításához i−1 m¶velet szükséges, ezért összesen (n − 1)n/2 m¶veletet kell végrehajtani (ennyi elem van L-ben a f®átló alatt).

© Stoyan Gisbert

© Typotex Kiadó

52

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

A visszahelyettesítésnél, az U x = y megoldása során n szorzással több kell, Ã ! n X 1 , i = n, n − 1, . . . , 1, xi = y i − uik xk uii k=i+1

ahol az 1/uii számok rendelkezésünkre állnak; összesen tehát (n + 1)n/2 m¶velet szükséges (ennyi elem van U fels® háromszögében). A (3.24), (3.25) két rendszer megoldása ezért együtt n2 m¶veletet jelent. Egy újabb egyenletrendszer megoldása (ugyanazzal az A mátrixszal, az LU-felbontás birtokában) így éppen n2 m¶veletbe kerül  ugyanannyiba, mint az A−1 mátrixszal való szorzás. Hogyan állíthatjuk el® az inverz mátrix ot és mekkora ennek m¶veletigénye? El®ször számítsuk ki az LU-felbontást, azután sorozatosan oldjuk meg a megfelel® (3.24), (3.25) rendszereket b = ej -vel, j = 1, . . . , n, ahol ej a j edik koordináta-egységvektor. Ez lényegében n3 /3 + n3 m¶veletet igényelne, de az Ly (j) = ej rendszerek megoldásánál gyelembe vehetjük az ej vektorok n − 1 nulla komponensét. Ekkor összesen n3 m¶velet elegend®, ugyanis

yi

(j)

= 0,

1 ≤ i ≤ j − 1;

(j) yj

= 1,

yj+1 = −`j+1,j ,

(j)

és ezek mind aritmetikai m¶veletek nélkül kaphatóak, de (j) yi

= −`ij −

i−1 X

(j)

`ik yk ,

i > j + 1,

k=j+1

már aritmetikai m¶veleteket igényel, mégpedig n X

n−1−j

(i − 1 − j) =

i=j+2

X

k = (n − j)(n − j − 1)/2

k=1

m¶veletet (ennyi elem van L-ben a f®átló alatt, a j -edik oszloptól jobbra). Az összes y (j) kiszámítása így n

n−2

1X 1X 1 (n − j)(n − j − 1) = (k + 1)k = n(n − 1)(n − 2), 2 j=1 2 k=1 6 azaz lényegében n3 /6 m¶veletbe kerül. (j) Az U x(j) = már nincs lényeges egyszer¶sítés. ¢ 3 megoldásánál ¡ 1y 1rendszerek 1 3 Így összesen 3 + 6 + 2 n = n m¶velet kell.

© Stoyan Gisbert

© Typotex Kiadó

3.5. ÁLTALÁNOS MÁTRIXOK

53

Ez azt jelenti, hogy az inverz mátrix kiszámítása háromszor költségesebb, mint az LU-felbontásé. Másszóval általában nem érdemes az inverz mátrixot kiszámítani, mert a 2n3 /3 + O(n2 ) m¶veletnyi többletbefektetés nem térül meg még akkor sem, ha több különböz® jobboldalra kell megoldanunk ugyanazt az egyenletrendszert. Bonyolultabb A−1 -et tartalmazó kifejezést is olcsóbban kapunk meg az LU-felbontás segítségével. Például AB −1 Cx kiszámításához el®ször a Cx szorzatot számítjuk ki (n2 m¶velet), aztán az LU y = Cx rendszert oldjuk meg, ahol LU = B (ez n3 /3 + O(n2 ) m¶velet), végül is az Ay lesz a keresett vektor (n2 m¶velet). Ha ehelyett el®ször az AB −1 C mátrixot számítjuk ki, akkor már ez lényegében 3n3 m¶veletbe kerülne. Ezután az x vektorral való szorzásának n2 m¶velete már elhanyagolható.

3.5. Az LU-felbontás általános mátrixokra (k)

Eddig mindig feltételeztük, hogy akk 6= 0, k = 1, . . . , n. Viszont az LUfelbontás  megfelel® változtatással  akkor is végrehajtható, amikor A egy tetsz®leges mátrix. Ugyanis ekkor létezik egy fels® háromszög U mátrix, egy normált alsó háromszög L mátrix és egy permutációs P mátrix, úgy hogy A = P LU . Ennek belátásához használjuk a Gauss-eliminációt. Amikor a11 6= 0, az elimináció els® lépését változtatás nélkül megtehetjük, és A → A2 = L1 A biztosított. Most legyen viszont ai1 = 0, 1 ≤ i ≤ n. Ekkor A szinguláris, de már maga olyan formájú, mint A2 , v.ö. (3.12)-vel:

µ ¶ 0 a1 A= (1) , 0 A22 (1)

Tehát ebben az esetben rögtön A22 átalakítására térhetünk át (de A els® sorával együtt a készül® U mátrix f®átlójára kerül egy nulla). Végül legyen a11 = 0, de a`1 6= 0 valamely `-re, 1 < ` ≤ n. Ekkor cseréljük fel az `-edik sort az els® sorral a megfelel® P1 permutációs mátrixszal, P1 = (e` , e2 , . . . , e`−1 , e1 , e`+1 , . . . , en ). Így jutunk az A = A1 mátrixról a P1 A1 mátrixhoz, majd megszokott módon eliminiáljuk az (i, 1) poziciójú elemeket, i ≥ 2: ! à a11 c1 L1 P1 A1 = (2) . 0 A

© Stoyan Gisbert

© Typotex Kiadó

54

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

Így folytatva az eliminációt, elérkezünk Ln−1 Pn−1 · · · L1 P1 A = U -hoz, amely fels® háromszög mátrix. Számítsuk ki a Pm Lk szorzatot, ha m > k és ha Pm cseréli az m-edik és az i-edik sort (i > m): 

1 0 . . 1 .  0 . 1  . . .  . . −` Pm  m,k  . . .   . . −`i,k  . . . 0 . −`n,k  1 .  0  .  = . .  .  . 0

Pm Lk =    . . . . . 0 1 0 . . . . . . 0  . . . . . . . . . . . . .  . 1  0 .  0 . . . . 0 1 0 . . . . 0      1 . . . . . . . . 1 . . . . .    0 1 . 0 . 0  =  . . −`i,k 0 0 . 1 . 0   . . 1 . . 0  . . . . . 1 . . 0    0 0 . 1 . 0  . . −`m,k 0 1 . 0 . 0  . . . . 1 . . . . . . . . 1 . 0 . . . 0 1 0 . −`n,k 0 . . . 0 1  0 . . . . . . 0 1 . . . . . . .  . 1 0 . . . . 0  . . 1 . . . . .  . −`i,k 0 1 . 0 . 0  Pm =: Lk Pm . . . . . 1 . . 0  . −`m,k 0 0 . 1 . 0  . . . . . . 1 . . −`n,k 0 . . . 0 1

Felépítése szerint az Lk alsó háromszög mátrix pontosan megegyezik Lk val, csak az (m, k) és (i, k) pozíciójú elemek felcserél®dtek. A permutációs mátrixokat mind jobbra cserélve, az

U = Ln−1 · Ln−2 · · · L1

n−1 Y

Pi A

i=1

összefüggést kapjuk, (ahol most Lk -ban legfeljebb n − k − 1 csere történt a k -adik oszlopban), és ekkor az

L := (Ln−1 · Ln−2 · · · L1 )−1 ,

P :=

Ãn−1 Y

!−1 Pi

i=1

jelölésekkel P LU = A. Ehhez hozzátesszük, hogy permutációs mátrix inverze a transzponáltja, tehát megint permutációs mátrix, és permutációs mátrixok szorzata is permutációs mátrix. A fenti gondolatsorban a PLU-felbontás létrehozásához az oszloponkénti (k) f®elemkiválasztás t használtuk: ha a soros akk elem zérus, akkor helyette

© Stoyan Gisbert

© Typotex Kiadó

3.5. ÁLTALÁNOS MÁTRIXOK

55

f®elemnek ugyanazon k -adik oszlop f®átló alatti részéb®l keresünk egy nemzé(k) rus a`k elemet, és ha ilyen nemzérus elem nincs, akkor A szinguláris. Mindkét esetben az így módosított Gauss-elimináció folytatható. De a gyakorlatban a Gauss-elimináció oszloponkénti (más néven részleges) f®elemkiválasztás a során nem akármilyen nemzérus elemet keresnek az elimináció folytatásához, hanem abszolút értékben a legnagyobbat a soron lév® k -adik oszlopból. Le(k) gyen az onnan kiválasztott f®elem aik . Akkor a k -adik és az i-edik sort cseréljük, és az elimináció folytatódhat. Ha a P LU = A egyenlet mindkét oldalán szerepl® mátrixok determinánsait tekintjük, akkor kiderül, hogy A pontosan abban az esetben szinguláris, ha U f®átlóján vannak zérus elemek. Amennyiben viszont A reguláris, akkor U is az. Így tetsz®leges reguláris Ax = b rendszer a PLUfelbontás útján megoldható  mégpedig lényegében úgy, mint korábban (ld. (3.24), (3.25)). A permutációs mátrix megjelenése csak azt eredményezi, hogy Ly = b helyett az els® lépésben Ly = P −1 b = P T b oldandó meg. Lássunk egy példát  0 0 1  2 2 2 A=  1 2 1 2 4 1

erre a felbontásra:   1  2   −→ P1 A =   2  1  0  1 ahol P1 az 1. és a 2. sort cseréli: P1 =   0 0  2 2 2 `21 =0,`31 = 21 ,`41 =1  0 0 1  −→ A1  0 1 0 0 2 −1

2 0 1 2

2 0 2 4 1 0 0 0

1  0 Most a 2. és a 3. sort cseréljük (azaz P2 =  0 0

  2 2 2  1 0 1  42 =2   `32 =0,` −→  0 1 1  2 −1 −1

2 0 0 0

0 0 1 0 

(3.27)

0 0  . Ezután 0  1

2 1   = L1 A1 =: A2 . 1  −1



eliminációt:  2  0 P2 A2 =   0 0

 2 1   =: A1 2  1 

2 1 1 1

0 0 1 0

0 1 0 0



0 0  ), és folytatjuk az 0  1

 2 2 2 1 0 1   = L2 P2 A2 =: A3 . 0 1 1  0 −1 −3

© Stoyan Gisbert

© Typotex Kiadó

56

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

Ezután nincs szükség cserére, tehát  2 2 0 1 `43 =−1  A3 −→   0 0 0 0

formálisan P3 = I ∈ IR4×4 , és  2 2 0 1   = L3 A3 = U. 1 1  0 −2



1 0  1 1 2 Összesen U = L3 L2 P2 L1 P1 A = L3 L2 L1 P2 P1 A, ahol L1 =   0 0 1 0 azaz   1 0 0 0 2 2 2 1    1 0 0 2  0 1 0 P2 P1 A = (L1 )−1 (L2 )−1 (L3 )−1 U =   0 0 1 0  0 0 1 0 0 0 1 2 −1 1 Figyelembe véve, hogy itt  0  1 (P2 P1 )−1 = P1 P2 =   0 0

Pi−1 = PiT = Pi ,  1 0 0 1  0 0 0 0   0 1 0  0 0 0 1 0

és végül is a PLU-felbontás esetünkben:   0 0 1 0 1 0 0  1 0 0 0  1 1 0  2 A=  0 1 0 0  0 0 1 0 0 0 1 1 2 −1

i = 1, 2, érvényes   0 0 0 0  1 0 1 0  = 1 0 0   0 0 0 1 0  0 2 2   0  0 1 0  0 0 1 0 0

0 0 1 0

0 0 1 0

 0 0  , 0  1

 2 1  . 1  −2

1 0 0 0

 0 0  , 0  1

 2 2 0 1  . 1 1  0 −2

Érdemes utánaszámolni, hogy ez a szorzat valóban az eredeti mátrixot adja vissza.

3.5.1. Az LDU-felbontás algoritmusa, tesztfeladatok Feltéve, hogy A reguláris, megadjuk az Ax = b rendszert is megoldó, sorcseréket is alkalmazó LDU-felbontás pszeudokódos algoritmusát. Az A elemeit soronként olvassuk be, az L és U elemeit soronként állítjuk el®. 1. 2.

i := 1(1)n [ pi := i ]i i := 1(1)n

A p vektor követi a cseréket A felbontás ciklusa

© Stoyan Gisbert

© Typotex Kiadó

3.5. ÁLTALÁNOS MÁTRIXOK

57

3.

[ m := i, s := bi , j := 1(1)n [ rj := aij ]j

4. 5. 6. 7. 8.

k := 1(1)i − 1 [ `ik := rk , s := s − xk ∗ `ik j := k + 1(1)n [ rj := rj − `ik ∗ ukj ]j `ik := `ik ∗ dk ]k Kész az L i-edik sora ?ri = 0? [ m := m + 1, ?m > n? [ stop: szinguláris a mátrix, i index ] s := bm , bm := bi , bi := s Csere a jobboldali vektorban k := pm , pm := pi , pi := k Csere a permutációs vektorban j := 1(1)n [ rj := amj , amj := aij , aij := rj ]j sorcsere A-ban → 4. ] di := 1/ri , j := i + 1(1)n [ uij := rj ∗ di ]j dii reciprokát eltároljuk di -be, kész az U i-edik sora xi := s ∗ di ]i A felbontási ciklus vége, xn már elkészült i := n − 1(−1)1 Kezd®dik a visszahelyettesítés [ s := xi , j := i + 1(1)n [ s := s − uij ∗ xj ]j xi := s ]i stop [ eredmény: x megoldás, L, U mátrixok, d, p vektorok ]

9. 10. 11. 12. 13. 14. 15. 16. 17. 18.

Beolvassuk A i-edik sorát

Felhívjuk a gyelmet arra, hogy a 4., 13., 15. és 16. lépés ciklusa üres is lehet. Els® tesztelési példának javasoljuk a (3.8) egyenletrendszert (ld. a pontos megoldását (3.9)-ben), amelyhez az L mátrixot (3.23)-ban adtuk meg, és amelynek (3.22) mátrixa most D · U -nak felel meg, úgy hogy



   −4 0 0 1 −0.25 0.25 1 −0.2  . D =  0 3.75 0  , U =  0 0 0 4 0 0 1 Az els® i-ciklus végén (14. lépés) ekkor egyébként az x = (2.25, −2.6, 3)T vektort kell hogy kapjuk. Második tesztelési példának a következ®, három cserét igényl® egyenletrendszert nevezzük meg:



2  1 Ax =   2 0

2 1 2 1

0 0 1 0

 0 1  2 2   0  0 0 −1





 6   1   =   = b.   6  2

Ekkor az els® i-ciklus után x = (3, 2, 0, −1)T , d = ( 21 , 1, 1, 21 )T és p =

© Stoyan Gisbert

© Typotex Kiadó

58

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

(1, 4, 3, 2), ennek megfelel®en a permutációs mátrix   1 0 0 0  0 0 0 1   P =  0 0 1 0 , 0 1 0 0 amellyel teljesül  1 0  0 1 L=  1 0 1 0 2

A = P LDU , ahol   0 0  0 0  , D =    1 0 0 1

2 0 0 0

0 1 0 0

0 0 1 0

  0 1 1  0 1 0  , U =   0 0 0  2 0 0

0 0 1 0

 0 0  . 0  1

Végül harmadik tesztfeladatunk a fenti (3.27) alatt részletesen megtárgyalt A mátrix, például a b = (4, 6, 4, −4)T jobboldali vektorral, amikor is a pontos megoldás x = (2, −3, 0, 4)T .

3.6. A Cholesky-felbontás Itt tekintjük azt a speciális esetet, amikor az A mátrix szimmetrikus és pozitív denit, tehát érvényes egyrészt

A = AT , azaz aij = aji minden i-re és j -re, másrészt az euklideszi skalárszorzatban igaz

(Ax, x) > 0 minden x 6= 0 vektorra.

(3.28)

Ilyen mátrixok nem ritkák az alkalmazásokban: például mechanikai feladatok vagy a legkisebb négyzetek feladata (ld. a 4. fejezetet) vezetnek szimmetrikus és pozitív denit mátrixokhoz. El®ször az LDU-felbontással és a szimmetrikus Gauss-eliminációval foglalkozunk. Ha az U mátrix f®átlóbeli elemei, a (3.6) f®elemek, nullától különböznek, akkor kivihetjük U -ból: U = DU 0 , ahol (i)

D := diag(uii ) = diag(aii ). U 0 helyett U -t írva, eljutunk az A mátrix LDU -felbontásához, A = LDU.

(3.29)

Ez a felbontás egyértelm¶en meghatározott: most ugyanis az U szorzó is normált.

© Stoyan Gisbert

© Typotex Kiadó

3.6. A CHOLESKY-FELBONTÁS

59

Legyen A szimmetrikus és pozitív denit. Ekkor létezik az A-nak olyan (3.29) felbontása, amelyre érvényes az U = LT egyenl®ség, az L alsó háromszög mátrix f®átlója normált (`ii = 1), és a D diagonális mátrix f®átlóbeli elemei pozitívak. Ennek belátásához elegend® a Gauss-elimináció els® lépését vizsgálni. Legyen (3.28)-ban x = e1 az els® koordináta-egységvektor. Akkor (Ae1 , e1 ) > 0, de Ae1 az A els® oszlopa és (Ae1 , e1 ) = a11 . Így ez pozitív, és beindítható a Gauss-elimináció. Ezután az A(2) mátrix (ld. (3.12)) tartalmazza a (3.2) (2) és (3.3) szerint kiszámított aij elemeket, amelyekkel folytatódik a Gauss(2)

(2)

elimináció. Számítsuk ki aij − aji -t! (2) aij



(2) aji

=

(1) aij

(1) `i1 a1j

³

(1) aji

(1) `j1 a1i

´

− − − ³ ´ ³ ´ (1) (1) (1) (1) = aij − aji − `i1 a1j − `j1 a1i ! Ã (1) (1) (1) (1) aj1 a1i ai1 a1j − = 0. = 0− (1) (1) a11 a11

Ez azt jelenti, hogy A-val együtt A(2) is szimmetrikus. Ezután válasszunk egy olyan x vektort, amelyben x(2) = (x2 , . . . , xn )T tetsz®leges, de nem a nullvektor, továbbá n 1 X a1j xj , x1 = − a11 j=2

P úgyhogy (Ax)1 = 0. Számítsuk ki most (Ax, x) = ni=2 (Ax)i xi -t! Ã ! n n n X X X (Ax, x) = (Ax)i xi = ai1 x1 + aij xj xi i=2 n X

i=2

Ã

n X

j=2 n X

ai1 a1j xj + aij xj = − a 11 j=2 j=2 i=2 ¶ n X n µ X ai1 = − a1j + aij xj xi a11 i=2 j=2 =

n X n X

! xi

(2)

aij xj xi = (A(2) x(2) , x(2) ),

i=2 j=2

ld. (3.13). Innen világos, hogy A-val együtt A(2) is pozitív denit  és induktíve következik az állításunk. Ezzel megismertünk egy olyan mátrixosztályt,

© Stoyan Gisbert

© Typotex Kiadó

60

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

amelyben a (3.10) feltételek automatikusan teljesülnek: a szimmetrikus és pozitív denit mátrixok osztályát. Már (3.12)-b®l látható, hogy A szimmetriája esetén érvényes cT1 = a1 , és c1 /a11 kerül az LDU-felbontás L szorzójába, a1 /a11 pedig az U -ba, és D els® helyén áll a11 . Induktíve folytatva, (3.29)-ben érvényes (k)

LT = U és D = diag1≤k≤n (akk ). Ez a szimmetrikus LDU-felbontás: A = LDU = LDLT . Mivel a D f®átlóján álló elemek pozitívak (és minden más eleme nulla), négyzetgyöke valós: µq ¶ (k) 1/2 akk . D = diag1≤k≤n

˜ := LD1/2 jelölést, következik Ezzel együtt végül is, bevezetve az L ˜L ˜T . A = LDLT = (LD1/2 )(D1/2 LT ) = L

(3.30)

˜ Ez az A mátrix Cholesky-felbontás q a. A levezetés szerint az L alsó három(k) ˜ reguláris. A szög mátrix f®átlóján a pozitív akk számok állnak, tehát L ˜ helyett egyszer¶en L-t írunk. következ®kben L Az L mátrix egyértelm¶en meg van határozva, ha eltekintünk a f®átlóján álló elemek el®jeleit®l; ezeket pozitívnak választottuk. Az LLT -felbontás létrehozását szolgálja a Cholesky- (vagy négyzetgyök-) algoritmus. Az A = LLT egyenletb®l következik (v.ö. (3.26)-tal) min(i,j)

aij =

X

`ik `jk ,

1 ≤ i, j ≤ n,

k=1

tehát a

à j = 1, . . . , n : `jj =

ajj − Ã

`ij =

aij −

j−1 X

!1/2 `2jk

k=1 j−1 X

,

(3.31)

! `ik `jk

/`jj , i = j + 1, . . . , n (3.32)

k=1

képletek segítségével kiszámíthatjuk oszloponként az elemeket. A munkaigény összesen n3 /6 + O(n2 ) m¶velet, hiszen a Gauss-eliminációhoz képest most csak a fele elemet kell el®állítani, a tárigény is csak n(n + 1)/2.

© Stoyan Gisbert

© Typotex Kiadó

3.6. A CHOLESKY-FELBONTÁS

61

Tekintsünk egy példát! Legyen 

 5 7 3 A =  7 11 2  , 3 2 6

(3.33)

amely mátrix láthatóan szimmetrikus, ezenkívül pozitív denit is, mert teljesülnek a (3.10) feltételek:   µ ¶ 5 7 3 5 7 5 > 0, det = 6 > 0, det  7 11 2  = 1 > 0. 7 11 3 2 6 A (3.33) mátrix különböz® felbontásaival szemléltetjük az elmondottakat. Az LU-felbontása:     3 3 5 7 5 7 11 3 7 ` =− `21 = 5 ,`31 = 5 6  32−→ 6  0 6 − 11  = U,  0 − 11 −→ A 5 5 5 5 21 1 0 − 11 0 0 5 5 6 vagyis

 A = LU = 

1 7 5 3 5

  5 7 0 0 3 . 1 0   0 56 − 11 5 11 1 −6 1 0 0 6

U f®átlóbeli elemeit a D diagonális mátrixba gy¶jtve: U = DU 0 , és U 0 helyett U -t írva, innen kapjuk az LDU-felbontást, amely egyben LDLT -felbontás:     3 5 0 0 1 57 1 0 0 5  = LDLT . 1 0   0 56 0   0 1 − 11 A = LDU =  57 6 3 − 11 1 0 0 61 0 0 1 5 6 (3.34) ³√ q q ´ 6 1 1/2 1/2 ˜ , ahol D , , adja a Cholesky5, Ezután LD = L = diag 5

6

5

0

7 5 5q 6 5

3 5 5q 11 − 6 65

0

0

1 6

felbontást:

 √ 5 0 q0 √  6 7 ˜L ˜T =  5 5 0 A=L  √ q5 q 6 1 3 5 − 11 5 6 5 6

 √   



√ 

  q ,

amely (3.31)-(3.32) segítségével közvetlenül is el®állítható. A Cholesky-felbontásnál gyakorlatilag hasznosabb a hozzá vezet® (3.30) LDLT -felbontás. Egyrészt megtakarítjuk a négyzetgyökvonásokat, de az

© Stoyan Gisbert

© Typotex Kiadó

62

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

LDLT -felbontás el®nyösebb azért is, mert n szorzással kevesebbre van szükség az Ly = b, LT x = D−1 y egyenletek megoldásánál. Ezenkívül az LDLT -felbontás még akkor is végrehajtható lehet, amikor a mátrix, bár szimmetrikus, de nem pozitív denit (ami a felbontás során kiderül, mert ekkor van olyan i, amelyre dii ≤ 0).

3.6.1. Az LDLT -felbontás algoritmusa, tesztfeladatok Befejezésül ehhez a ponthoz megadjuk azt a pszeudokódos algoritmus t, amely az Ax = b szimmetrikus egyenletrendszert az LDLT -felbontás alapján oldja meg. Ez az algoritmus az L mátrix bal alsó háromszögbeli elemeit oszloponként állítja el® és ehhez A-nak csak a bal alsó háromszögbeli elemeire van szüksége. Legyen tehát A szimmetrikus és pozitív denit (vagy más olyan szimmetrikus mátrix, amelyre az LDLT -felbontás létezik), b adott sorvektor. 1. j := 1(1)n 2. [i := j(1)n [ri := aij ]i , xj := bj 3. k := 1(1)j − 1 4. [i := j(1)n [ri := ri − `ik ∗ rk ∗ `jk ]i , xj := xj − `jk ∗ xk ]k 5. Ha rj =0, akkor hibajelzés, j közlése és kiszállás. Egyébként dj := 1/rj 6. i := j + 1(1)n [`ij := ri ∗ dj ]i ]j 7. i := n(−1)1 [xi := di ∗ xi Kezd®dik a visszahelyettesítés. 8. k := i + 1(1)n [xi := xi − `ki ∗ xk ]k ]i 9. stop [eredmény: x] Felhívjuk a gyelmet arra, hogy a 6. sor után, a j -ciklus végén az r tömb tartalmazza a D mátrix f®átlóbeli elemeit, míg a d tömb azoknak reciprokait. Els® tesztfeladatunk a (3.33) mátrix és annak (3.34) LDLT -felbontása, a jobboldali vektor legyen b = (0, −9, 17)T . Lebeg®pontosan a mátrixok alakja (hat számjegyre kerekítve):



   1 0 0 5 0 0 . 1 0  , D =  0 1.2 0 A = LDLT , ahol L =  1.4 0.6 −1.833333 1 0 0 0.133333 Ennek alapján d = (0.2, −0.833333, 6), és a j -ciklus befejeztével (6. lépés) kell, hogy kapjuk x = (0, −9, 0.5)T , míg a végén x = (1, −2, 3)T a pontos megoldás.

© Stoyan Gisbert

© Typotex Kiadó

3.7. SÁVOS MÁTRIXOK

63

3.7. Sávos mátrixok Az alkalmazásokban gyakran sok elem zérus a mátrixban, és elég tipikus az, hogy a nemzérus elemek egy a f®átlóval párhuzamos sávban helyezkednek el. Ilyen sávos mátrixok jellemzésére vezetjük be a sávszélesség fogalmát: az A = (aij ) ∈ IRn×n mátrix fél sávszélességé nek hívjuk azt az s számot, amelyre teljesül

|i − j| > s ⇒ aij = 0, 1 ≤ i, j ≤ n és létezik olyan k, ` indexpár, hogy |k − `| = s és ak` 6= 0. Az A mátrix fél sávszélessége legyen 1 ≤ s ≤ n − 2, az A mátrixú rendszerek legyenek megoldhatók Gauss-elimináció segítségével. Ekkor a Gausselimináció során megmarad a sávszélesség: az L és U szorzók fél sávszélessége is s. Ennek belátásához, mint mindig, itt is elég a Gauss-elimináció els® lépését vizsgálni. Amikor 1 ≤ i, j ≤ 1 + s, akkor a sávban vagyunk, így ezt az indextartományt nem szükséges vizsgálni. Legyen i > 1 + s. Ekkor (ld. (3.2)) az ai1 a1j (2) aij = aij − a11 (2)

(2)

képlet alapján aij = aij , hiszen ai1 = 0. Hasonlóan j > 1+s esetén aij = aij következik a1j = 0 miatt. Így az elimináció els® lépésében i, j > 1 + s-re nem történik változás a mátrixban, azaz a nullák is ott maradnak, ahol voltak. A Gauss-eliminációt úgy változtathatjuk (megfelel® indexátszámítással), hogy a sávon kívüli elemeket ne is érintse  ezzel elkerülve az olyan m¶veleteket, amelyekben csak nullával szorzunk, ill. nullát hozzáadunk valamihez. Így kapjuk a sávos Gauss-elimináció t. Ennek m¶veletigénye, mivel minden lépésben legfeljebb s2 elemet kell megváltoztatnunk (pl. az els® lépésben a 2 ≤ i, j ≤ 1 + s poziciójú elemeket), lényegében ns2 . Ez azért nagyságrendekkel kevesebb, mint telt mátrixnál az n3 /3, mert tipikusan s = 1, 2, 3.

3.7.1. Tridiagonális egyenletrendszerek Tekintsünk a speciális, s = 1-nek megfelel® egyenletrendszert, amelynek megoldására a sávos Gauss-elimináció a legjobb választás, mert az az egyen-

© Stoyan Gisbert

© Typotex Kiadó

64

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

letrendszer O(n) m¶velettel való megoldását lehet®vé teszi:

Ax = f, 



b1 c1 0 . 0 a2 b2 c2 . .     0  A :=  0 . . . .  . . . . cn−1  0 . 0 an bn

(3.35)

(3.36)

Az ilyen mátrixot alakja szerint háromátlósnak avagy tridiagonális nak hívjuk. Teljesüljenek a következ® feltételek (amelyekben a1 = cn := 0):

|bi | ≥ |ai | + |ci |, i = 1, . . . , n, (3.37) létezik olyan j index, amelyre érvényes |bj | > |aj | + |cj |. (3.38) A fél sávszélesség 1, így a korábbi gondolatsor szerint U és L fél sávszélessége is 1, ha a Gauss-elimináció alkalmazható. Ilyenkor mindkét háromszög alakú mátrixnak csak két (nemzérus) átlója van, és az U x = y rendszer i-edik sorából csak ennyi marad vissza:

uii xi + ui,i+1 xi+1 = yi ,

uii 6= 0.

Átrendezve

xi = αi+1 xi+1 + βi+1 ,

i = n − 1, . . . , 1,

(3.39)

ahol αi+1 := −ui,i+1 /uii , βi+1 := yi /uii . De az αi és βi mennyiségeket közvetlenül a (3.35)-(3.36) rendszer i-edik sorából fogjuk meghatározni:

fi = ai xi−1 + bi xi + ci xi+1 = ai (αi xi + βi ) + bi xi + ci xi+1 , azaz

(bi + ai αi )xi = fi − ai βi − ci xi+1 . Most tegyük fel, hogy bi + ai αi 6= 0. (Lejjebb vizsgáljuk meg, hogy ez mikor igaz.) Ekkor a (3.39) relációkat kapjuk, ahol

αi+1 := −

ci , bi + ai αi

βi+1 :=

fi − ai βi , i = 1, . . . , n − 1. bi + ai αi

(3.40)

A rendszer legels® egyenlete, b1 x1 + c1 x2 = f1 , azt mutatja, hogy a fenti formulákban az α1 := 0 ´es β1 := 0

© Stoyan Gisbert

© Typotex Kiadó

3.7. SÁVOS MÁTRIXOK

65

értékekb®l indulhatunk ki. Így kezd®dhet a számítás, rendre megkapjuk (3.40)-b®l az összes αi , βi mennyiséget, végül i = n-re a következ® rendszert írhatjuk fel:

xn−1 = αn xn + βn , an xn−1 + bn xn = fn = an (αn xn + βn ) + bn xn , ahonnan

xn =

fn − an βn =: βn+1 . bn + a n α n

(3.41)

Most ebb®l az értékb®l indulhat a (3.39) visszahelyettesítési menet: az xn−1 , ..., x1 számokat kapjuk meg. A (3.39)(3.41) algoritmus rövidített Gausselimináció néven avagy mint tridiagonális algoritmus is ismert. A fenti formulákat csak akkor használhatjuk, amikor bi +ci αi 6= 0. Tegyük most fel, hogy teljesül a (3.37) feltételek er®sebb formája: |bi | > |ai | + |ci | minden i-re. 1| < 1. Továbbá, indukcióval feltéve, hogy Ekkor α1 = 0 után |α2 | = |c |b1 | |αi | < 1,

|bi + ai αi | ≥ |bi | − |ai ||αi | > |ci | + |ai | − |αi ||ai | = |ci | + |ai |(1 − |αi |) ≥ |ci |. Ekkor a (3.40) képlet szerint |αi+1 | < 1 is teljesül, ez tehát igaz minden i-re, és ezzel együtt |bi + ai αi | > |ci | ≥ 0, i = 1, . . . , n. Ezért βn+1 is jól deniált, így a (3.40)-(3.41) képletekben nem fordul el® nullosztó. A (3.37) feltételekb®l kiindulva, hasonlóan mint ezel®tt, azt látjuk be, hogy |αi | ≤ 1, de ha egy i-re  > fordul el®, akkor attól fogva 0 ≤ |αi+1 | < 1, és ekkor βn+1 is kiszámítható. Amennyiben viszont pl. bi = ai +ci minden i-re, akkor a mátrix szinguláris és az egyenletrendszer lehet, hogy megoldhatatlan. A rövidített Gauss-elimináció m¶veletigénye lényegében 3n m¶velet (a korábbi értelemben: egy szorzás + egy összeadás) és 2n osztás, vagyis ha nem teszünk különbséget a négy alapm¶velet között, 8n aritmetikai m¶velet.

3.7.2. A tridiagonális algoritmus, tesztfeladatok Befejezésül megadjuk a pszeudokódos algoritmust, amely a (3.39)(3.41) képleteket valósítja meg, tehát a rövidített Gauss-elimináció algoritmusá t. Adott a (3.35) rendszer, amelynek tridiagonális mátrixa teljesíti a (3.37) feltételeket; legyen n ≥ 2. 1. d := 1/b1 , α2 := −c1 ∗ d, f1 := f1 ∗ d

© Stoyan Gisbert

© Typotex Kiadó

66

FEJEZET 3. LINEÁRIS EGYENLETRENDSZEREK

2. i := 2(1)n − 1 3. [d := 1/(bi + ai ∗ αi ) αi+1 := −ci ∗ d, fi := (fi − ai ∗ fi−1 ) ∗ d]i 4. xn := (fn − an ∗ fn−1 )/(bn + an ∗ αn ) 5. i := n(−1)2 [xi−1 := αi ∗ xi + fi−1 ]i 6. stop [eredmény: x] Ebben az algoritmusban az fi jobboldali komponenseket a βi segédmennyiségekkel írjuk felül és ezért el®nyös az indexek eltolása; az 1., 3. és 4. lépésben kellene a nullával való osztást letesztelni.

Els® tesztfeladat: 

Ax = f,

amikor is

   2 1 0 1 A =  −1 3 −1  , f =  −12  , 0 1 1 −2



     0 2 1 a =  −1  , b =  3  , c =  −1  . 1 1 0

Ekkor az eredmények:

   0 0 2  1/2    −3  . α =  −1/2  , β =   −23/7  , x = 2/7 1 1 





Második tesztfeladat, szabad n ≥ 1 paraméterrel:      n Ax = f ∈ IR , A = tridiag(−1, 2, −1) =     

2 −1 0 ... 0 0 0

−1 2 −1 ... 0 ... ...

0 −1 2 ... −1 0 ...

... 0 −1 ... 2 −1 0

 ... 0 ... 0   0 0   ... ...  , −1 0   2 −1  −1 2

a = (0, −1, −1, . . . , −1)T , b = (2, . . . , 2)T , c = (−1, −1, . . . , −1, 0)T , )T . Ekkor a pontos megoldás és f = −(1, 2, 3, . . . , n − 2, n − 1, n − n(n+1)(n+2) 6 3 3 x = (0, 1, 4, 10, . . . , (n−1) 6−(n−1) , n 6−n )T .

© Stoyan Gisbert

© Typotex Kiadó

3.8. FELADATOK

67

3.8. Feladatok 6 0 rendszernek egy közelít® meg1. Legyen A reguláris és x az Ax = b = relatív hibát oldása, és így r := Ax − b 6= 0. Becsüljük az kx−xk kxk krk kbk

segítségével, tekintve, hogy igaz x = x + (x − x) =: x + δx és Ax = b + (Ax − b) = b + r =: b + δb ! 2. Állítsuk el® az alábbi mátrixok LU-felbontását!     4 −1 −2 −3 1 −1 4 −1  , A2 =  −1 4 1  A1 =  −1 −1 −2 4 2 −1 6 3. Állítsuk el® az alábbi  0  2 A1 =   0 0

mátrixok PLU-felbontását!   1 0 0 2 2   0 1 0  2 2 , A2 =   1 1 2 0 1  0 2 0 0 1

0 1 0 0

 0 0   2  0

4. Ránézésre állapítsuk meg, vajon lehet-e pozitív denit a következ® mátrix?   4 2 1 A= 2 5 1  1 1 −1 5. Legyen An ∈ IRn×n nagyméret¶ tridiagonális mátrix, amelyre teljesülnek a tridiagonális algoritmus végrehajthatóságát biztosító (3.37) feltételek. Mekkora n-ig tudjuk megoldani az An mátrixú lineáris rendszert, ha számítógépünkben 512 Mb áll rendelkezésünkre a számok eltárolására, dupla pontossággal számolunk, és a) vagy a telt mátrixra megírt Gauss-eliminációt, b) vagy a tridiagonális algoritmust használjuk?

© Stoyan Gisbert

© Typotex Kiadó

4. fejezet A legkisebb négyzetek feladata 1. A lineáris algebrából tudjuk:

A Bx = c ∈ IRm lineáris rendszer (ahol B ∈ IRm×n ) pontosan akkor megoldható, ha minden olyan y sorvektorra, amelyre igaz yB = 0, az következik, hogy yc = 0.

2. Már az euklideszi norma háromszög-egyenl®tlensége alkalmából hivatkoztunk a Cauchy-egyenl®tlenségre, de itt is majd fontos lesz. Azt

mondja ki, hogy tetsz®leges a1 , . . . , an , b1 , . . . , bn valós számok esetén teljesül à n !2 n n X X X ai bi ≤ a2i b2i . i=1

i=1

i=1

Ezen belül az egyenl®ség pontosan akkor lehetséges, amikor igaz, hogy az a = (a1 , . . . , an ) és b = (b1 , . . . , bn ) vektorok kollineárisak: van olyan c konstans, amellyel vagy a = cb, vagy b = ca.

3. Ha f többváltozós függvény, f = f (x1 , x2 , . . . , xn ), akkor

∂f (x1 ,...,xn ) ∂xk

parciális deriváltját úgy kapjuk, hogy az x1 , . . . , xk−1 , xk+1 , . . . , xn változóit konstansnak tekintjük, majd ezután xk szerint deriválunk. Példa: f (a, b) = (a · c1 + b · c2 )2 , amikor

∂f (a, b) ∂f (a, b) = 2(a · c1 + b · c2 )c1 , = 2(a · c1 + b · c2 )c2 . ∂a ∂b

4.1. Lineáris regresszió Tipikusan mérési eredmények kiértékelésér®l van itt szó: adott m pont a síkon: {ti , fi }m i=1 , ahol ti az id®pont, amelyben az i-edik kísérletet végeztük, és 69

© Stoyan Gisbert

© Typotex Kiadó

70

FEJEZET 4. LEGKISEBB NÉGYZETEK

f fm

o o

f4 o

f3 f1

o

f2

t1

o

t2

t3

t4

...

tm

t

4.1. ábra. Mérési eredmények

fi annak eredménye, pl. egy számítógépes processzor fi h®mérséklete, amelyet ti perccel a bekapcsolás után mértünk. Nem zárjuk ki, hogy nehány ti egybeesik: akkor többen mértek ugyanabban a pillanatban. Ezek a pontok egy pontfelh®-t alkotnak a síkon, és feladatunk abból áll, hogy a mérések alapján határozzunk meg  a mérési pontokra nagyjából illeszked®, egyszer¶ képlet formájában  kapcsolatot a t (a bekapcsolás óta eltelt id®) és a processzor f (t) h®mérséklete között. A mérési eredmények pl. úgy ábrázolhatóak, mint a 4.1 ábrán. Egy ilyen kapcsolat képlet formájában abból is állhatna, hogy a mérési pontokat töröttvonallal kössük össze. Ennek viszont nem látjuk a zikai realitását: ekkor a mérési pontjainkban a melegedési sebesség ugrásszer¶en változna, mintha méréseink er®sen visszahatnának a folyamatra. Inkább arra gondolunk, hogy a kapcsolat közelít®leg egy sima (többször folytonosan dierenciálható) F (t) görbe segítségével adható meg, és ha erre pontjaink nem illeszkednek pontosan, akkor ezt a mérési hibáknak tudjuk be. Másszóval, nekünk elég, ha teljesül F (ti ) ≈ fi , i = 1, 2, . . . , m,

(4.1)

arra számítva, hogy ekkor F (t)  az fi -kben jelenlév® hibák ellenére is  közel lesz a valódi f (t) függvényhez. Ezt az F (t) képletet a folyamat modell jének nevezzük. Az elképzelt görbe legegyszer¶bb formája az egyenes:

F (t) = a + bt.

(4.2)

Ekkor lineáris regresszió nak hívjuk a feladatot, a lineáris modell meghatározását a mérési eredményekb®l. Az F (t) egyenest egyértelm¶en meghatározó a és b számokat a modell paraméterei nek nevezzük.

© Stoyan Gisbert

© Typotex Kiadó

4.1. LINEÁRIS REGRESSZIÓ

71

y 2. o

y2 o

y1

1. o

3.

x3

x1

x2

x

4.2. ábra. 3 pont és egy egyenes

4.1.1. Algebrai megfogalmazás A (4.2) modell akkor lenne igazán sikeres, ha teljesülne (4.1) helyett

F (ti ) = a + bti = fi , i = 1, 2, . . . , m.

(4.3)

De erre m > 2 esetén általában nem számíthatunk, mert már két különböz® pont egyértelm¶en meghatározza az egyenest és bármely további pont nem biztos, hogy illeszkedik az egyenesre (ld. a 4.2 ábrát: a 3. pont az x = x3 egyenesen bárhová eshet). Ez a mértani tény a lineáris algebra nyelvén fejezhet® ki. Legyen

    1 t1 f1 1 t2   f2      A =  .. ..  ∈ IRm×2 , f =  ..  ∈ IRm , . .   .  1 tm fm

µ ¶ a x= . b

(4.4)

Akkor (4.3)-at röviden felírhatjuk mint

Ax = f.

(4.5)

Ha itt m = 2 és t1 6= t2 , akkor ez a lineáris egyenletrendszer minden f vektorra egyértelm¶en megoldható, m > 2 esetén viszont általában túlhatározott és megoldhatatlan. Ugyanis ha találunk valahol két különböz® id®pontot, mondjuk tk és t` , akkor a k -adik és `-edik sor alapján a Cramer-szabály segítségével számíthatnánk ki a-t és b-t, de a többi i indexre nem kell, hogy a + bti = fi teljesüljön.

© Stoyan Gisbert

© Typotex Kiadó

72

FEJEZET 4. LEGKISEBB NÉGYZETEK

f fm

o o

f4 o

f3 f1 f2

o

o

t2

t1

t4

t3

...

tm

t

4.3. ábra. Két egyenes és a mérési pontok négyzetei

4.1.2. A legkisebb négyzetek elve Ebben a helyzetben hasznos a legkisebb négyzetek elve, amely egy könnyen megoldható minimum feladat segítségével valósítja meg a (4.1) elképzelést, bevezetve a J(x) := kAx − f k22 függvényt, amely minden x vektorhoz (azaz minden a, b párhoz) hozzárendel egy nemnegatív számot, az Ax − f maradékvektor euklideszi normáját. A legjobb a, b párnak ezután kézenfekv® azt tekinteni, amelyre J(x) minimális:

J(x) −→ min! x

Részletesen kiírva, T

x = (a, b) ,

J(x) =

m X i=1

((Ax)i − fi )2 −→ min!, x

(4.6)

ahol (Ax)i = F (ti ) = a + bti és így ((Ax)i − fi )2 a (ti , fi ) mérési pont és az egyenesre illeszked® (ti , a + bti ) pont távolságának négyzete. Másképpen mondva, a mérési pont és az egyenes távolságának négyzete, függ®leges irányban mérve. A 4.3 ábra kett® egyenest mutat a hozzátartozó négyzetekkel, egy elég jót (kihúzott vonallal) és egy rosszabbat (szaggatott).

© Stoyan Gisbert

© Typotex Kiadó

4.1. LINEÁRIS REGRESSZIÓ

73

A minimum feladat megoldásához abból indulunk ki, hogy a minimumhely csak ott kereshet®, ahol igaz

∂J(x) ∂J(x) = 0, = 0. ∂a ∂b

(4.7)

Egy ezen egyenleteknek eleget tev® (a, b) pont általános J esetén nemcsak minimum pont, hanem akár maximum pont, akár nyeregpont is lehetne, de arra visszatérünk, hogy a (4.6) szerint deniált J garantálja, hogy (4.7) minimumot eredményez. A parciális deriváltak kiszámításához írjuk J -t a m X J(x) = J(a, b) = (a + bti − fi )2

(4.8)

i=1

alakban. b-t konstansnak tekintve, kapjuk m

X ∂J(x) =2 (a + bti − fi ), ∂a i=1 mert

∂(a+bti −fi )2 ∂a

= 2(a + bti − fi ), és a-t konstansnak tekintve m

X ∂J(x) =2 (a + bti − fi )ti , ∂b i=1 mert

∂(a+bti −fi )2 ∂b

= 2(a + bti − fi )ti . Így (4.7) átrendezett formája ma + b a

m X

ti + b

i=1

és mátrixformában µ

Pm

m i=1 ti

m X

ti =

m X

i=1

i=1

m X

m X

t2i =

i=1

fi , ti fi ,

i=1

¶ Pm ¶ µ ¶ µ Pm fi a t i i=1 i=1 Pm 2 . = Pm b i=1 ti i=1 ti fi

(4.9)

Ezen mátrix determinánsa nemnegatív:

m

m X i=1

à m !2 X ≥0 ti t2i − i=1

© Stoyan Gisbert

© Typotex Kiadó

74

FEJEZET 4. LEGKISEBB NÉGYZETEK

az ismert Cauchy-egyenl®tlenség szerint. Egyben az is tudható, hogy itt a nulla csak úgy lehetséges, ha minden ti egyenl®:

ti = const =: t0 , i = 1, . . . , m. Ekkor tehát nulla a determináns, az egyenletrendszer µ ¶ µ ¶ µ Pm ¶ a fi m mt0 i=1 P = mt0 mt20 b t0 m i=1 fi

(4.10)

(4.11)

-re egyszer¶södik és szinguláris, de a rendszer megoldható, ugyanis 2. sora az els®nek a t0 -szorosa, vagyis elhagyható. A megoldás m

a=

1 X fi − bt0 m i=1

tetsz®leges b-vel. Behelyettesítve a (4.2) modellbe azt adja, hogy m

1 X fi + b(t − t0 ). F (t) = a + bt = m i=1 Ez értelmes eredmény: abban a speciális esetben vagyunk, hogy méréseink egyetlen id®pontra vonatkoznak, t0 -ra. Ott a modell adja az fi számok átlagértékét, az egyenes meredeksége viszont b, ami szabadon választható, pl. b = 0. Ezzel a modellt arra egyszer¶sítettük, hogy F (t) = a = const: m

F (t) ≡ const =

1 X fi . m i=1

Ezt úgy lehet kommentálni, ha nincs is információnk a folyamat id®beliségér®l, akkor érjünk be egy id®t®l független modellel. Amennyiben legalább két különböz® szám található a ti -k közül, akkor nem kerülünk a szinguláris (4.10)-(4.11) esetbe, a (4.9) rendszer determinánsa pozitív és egyetlen (a, b) megoldása van, a modell tehát ekkor egyértelm¶en meghatározott.

Foglaljuk össze: míg a (4.5) rendszer általában megoldhatatlan, tehát nem segít a lineáris modell kiválasztásában, addig a (4.6) legkisebb négyzetek elve mindig a lineáris regressziós feladat megoldására vezet. Ekkor ugyan adódhat egy szinguláris eset, de az kikerülhetetlen, és ilyenkor javasolható a modell egyszer¶sítése, amiután megint egyértelm¶en meghatározott a megoldás.

© Stoyan Gisbert

© Typotex Kiadó

4.2. A GAUSS-FÉLE NORMÁL-EGYENLET

75

Lássunk egy példát! Adatainkat a következ® táblázat tartalmazza, m = 4nek megfelel®en: i ti fi Ekkor



1 1 A= 1 1

1 0 4

2 1 3

3 1 2

4 2 0

   0 4    1 4×2 3 ∈ IR4 , ∈ IR , f = 2 1 2 0

µ ¶ a x= . b

Ha itt megpróbálnánk az Ax = f rendszert megoldani pl. az els® két sora alapján, akkor a megoldás a = 4, b = −1, F (t) = 4 − t lenne: F (0) = 4, F (1) = 3, de ekkor persze már nem lehet még F (1) = 2 is igaz, sem F (2) = 0. Az Ax − f maradékvektor ekkor (0, 0, 1, 2)T , és euklideszi hosszának négyzete 5. A legkisebb négyzetek elve viszont a (4.9) rendszer speciális esetét adja:

µ

4 4 4 6

¶µ ¶ µ ¶ 9 a , = 5 b

, b = −2, vagyis ekkor a modell F (t) = 17 −2t. A amelynek megoldása a = 17 4 4 3 1 1 T 1 hozzátartozó maradékvektor ( 4 , − 4 , 4 , 4 ) , amely euklideszi hosszának négyzete 43 . Ennél kisebb értéket nem lehet elérni, mert kis türelemmel kiszámítható (4.8)-ból konkrét esetünkben, hogy J(a, b) = 4a2 + 8ab + 6b2 − 18a − 10b + 29 3 17 3 + b + 2)2 + 2(b + 2)2 + ≥ . = 4(a − 4 4 4

4.2. A Gauss-féle normál-egyenlet Most foglalkozhatunk az általánosabb esettel: egy m¶szaki, zikai, biológiai, szociális vagy gazdasági stb. folyamat modelljeképpen felírtuk a következ® képletet: n X F (t) = xj ϕj (t). (4.12) j=1

© Stoyan Gisbert

© Typotex Kiadó

76

FEJEZET 4. LEGKISEBB NÉGYZETEK

Ebben xj , j = 1, . . . , n, a keresett paraméterek (n ≥ 1), míg {ϕj }nj=1 egy alkalmas függvényrendszer, pl. polinomokból: ϕj (t) = tj−1 , vagy trigonometrikus, ill. exponenciális függvényekb®l. Példaként utalunk az 5. feladatra (ld. lent a 4.4 pontot), ahol n = 2, m = 12, és ϕ1 (t) ≡ 1, ϕ2 (t) := cos(2π(t − t0 )/365). Rendelkezésünkre állnak a következ® (hibákkal terhelt) adatok: {ti ,fi }m j=1 , és teljesül m > n. (A gyakorlatban úgy tartják, hogy lehet®leg legyen tízszer annyi mérési eredmény mint keresett paraméter, hogy a kapott modell ne függjön a mérési hibáktól.) Azt szeretnénk, hogy a modell illeszkedjék az adatokra: F (ti ) ≈ fi , i = 1, . . . , m. Legyen most

A = (aij ) = (ϕj (ti )) ∈ IRm×n , f = (f1 , . . . , fm )T , x = (x1 , . . . , xn )T .

(4.13)

Ekkor megint F (ti ) = (Ax)i . Így a modellünk akkor lenne a legsikeresebb, ha teljesülne  a most n-dimenziós x vektorral és az átdeniált A mátrixszal  a (4.5) lineáris egyenletrendszer. Annál inkább mint korábban azzal kell számolnunk, hogy ez a rendszer túlhatározott és megoldhatatlan. Ezért most is a Gauss-tól származó legkisebb négyzetek elvéhez folyamodunk, a keresett paramétereket abból számítva ki, hogy a à n !2 m X X xj ϕj (ti ) − fi −→ min! (4.14) J(x) := kAx − f k22 = i=1

j=1

x

minimum feladatot megoldjuk. Azt fogjuk látni, hogy a minimum feladat megoldása létezik, hogy bizonyos mellékfeltételek mellett egyértelm¶, és a kiszámításának módját is bemutatjuk.

Az egész eljárást m À n esetén az információ s¶rítéseként és értelmezéseként is értékelhetjük: a sok {ti , fi }m j=1 adatpontot a lényeget visszaadó modell és annak kevés xj paraméterének a segítségével helyettesítjük. A minimum most is csak ott lehet, ahol J(x) parciális deriváltjai elt¶nnek:

∂J = 0, ∂xk azaz

k = 1, . . . , n,

! Ã n m X X ∂J(x) =2 xj ϕj (ti ) − fi ϕk (ti ) = 0, ∂xk i=1 j=1

k = 1, . . . , n,

(4.15)

© Stoyan Gisbert

© Typotex Kiadó

4.2. A GAUSS-FÉLE NORMÁL-EGYENLET

77

³P ´2 ³P ´ n n x ϕ (t ) − f = mert ∂x∂ k 2 x ϕ (t ) − f i i ϕk (ti ). j=1 j j i j=1 j j i A keresett xj paraméterekre nézve, ezzel megint egy lineáris egyenletrendszert kapunk, de érdemes ennek kapcsolatát az A mátrixszal és f vektorral pontosan kideríteni. El®ször vizsgáljuk (4.15)-b®l az fi -kel kapcsolatos kifejezést: m X

fi ϕk (ti ) = (AT f )k ,

(4.16)

i=1

mert (4.13) szerint az AT mátrix k -adik sora a ϕk (t1 ), . . . , ϕk (tm ) értékekb®l áll. Ezután már könnyebb észrevenni, hogy m X

ϕj (ti )ϕk (ti ) = (AT A)kj ,

(4.17)

i=1

és így

m X n X

xj ϕj (ti )ϕk (ti ) =

i=1 j=1

n X

(AT A)kj xj = (AT Ax)k .

(4.18)

j=1

(4.15), (4.16) és (4.18) együtt azt jelentik, hogy a keresett minimum csak ott lehet, ahol érvényes AT Ax = AT f. (4.19) Ezt a lineáris, n × n-méret¶ egyenletrendszert a Gauss-féle normál-egyenlet nek hívjuk. Példa: Legyen a {ϕj }nj=1 rendszer polinomiális, azaz ϕj (ti ) = tij−1 . Ekkor T

(A A)kj =

m X i=1

tk−1 tj−1 i i

=

m X

tk+j−2 , i

1 ≤ k, j ≤ n,

i=1

és ha most még n = 2, akkor éppen a (4.9) mátrix elemeit kapjuk vissza. Jó a kilátás arra, hogy a (4.19) rendszer megoldható legyen: végül is mindkét oldalán az AT mátrix oszlopainak egy lineáris kombinációja áll. Annak belátásához, hogy a normál-egyenlet valóban mindig megoldható, abból indulunk ki, hogy B = AT A esetén (bármelyik y sorvektorral) érvényes

yBy T = (By T , y T ) = (AT Ay T , y T ) = (Ay T , Ay T ) = kAy T k22 .

(4.20)

Ugyanis egyrészt yBy T skalárszorzat alakjában írható le, másrészt alkalmaztuk a 2. fejezet (2.11) azonosságát, amely szerint (AT Ay T , y T ) = (Ay T , Ay T ). Most alkalmazzuk a fejezet elején idézett algebrai tételt:

© Stoyan Gisbert

© Typotex Kiadó

78

FEJEZET 4. LEGKISEBB NÉGYZETEK

Nálunk B = AT A és c = AT f . Amennyiben yB = 0, akkor (4.20) szerint kAy T k2 = 0, ami a norma tulajdonságai miatt azt jelenti, hogy Ay T = 0 és ezzel együtt yAT = 0T is teljesül. Ekkor yc = yAT f = 0 igaz, ahogy a tétel követeli. Így azt sikerült belátni, hogy a (4.19) rendszer mindig megoldható. Mivel a rendszer a (4.9) általánosítása, most is szinguláris lehet. Jelöljük a rendszer megoldását x∗ -gal. (Szingularitás esetén ez nem egyértelm¶en meghatározott.) Következ®nek lássuk be azt is, hogy ezen az úton, a normál-egyenlet megoldásán keresztül, a J(x) minimumát kapjuk:

J(x) = kAx − f k22 = kAx∗ − f + (Ax − Ax∗ )k22 = kAx∗ − f k22 + kA(x∗ − x)k22 + 2(Ax∗ − f, A(x − x∗ )) = J(x∗ ) + kA(x − x∗ )k22 ≥ J(x∗ ), amely relációban (Ax∗ − f, A(x − x∗ )) = 0 igaz, mert x∗ a (4.19) egy megoldása:

(Ax∗ − f, A(x − x∗ )) = (AT (Ax∗ − f ), x − x∗ ) = (0, x − x∗ ) = 0. Itt újra a 2. fejezet (2.11) azonosságát alkalmaztuk. Hasznosítsuk a J(x) = J(x∗ ) + kA(x − x∗ )k22

(4.21)

összefüggést még másképpen is: el®ször is, ha létezik olyan y 6= 0 oszlopvektor, amellyel Ay = 0 (ez azt jelenti, hogy A oszlopai lineárisan függ®ek!), akkor AT Ay = 0, vagyis az AT A mátrix szinguláris. Ekkor ezt az y vektort hozzádva a rendszer x* megoldásához, az így kapott x = x∗ + y vektorral A(x − x∗ ) = Ay = 0 lesz, ld. (4.21), és ebben az esetben J(x) = J(x∗ ) annak ellenére, hogy x 6= x∗ . Ilyenkor tehát sem a (4.19) rendszer megoldása, sem a J mininumhelye nem egyértelm¶en meghatározott. Ez fordítva is igaz: ha valamilyen x 6= x∗ vektorra J(x) = J(x∗ ), tehát x is a minimumot adja, akkor következik (4.21)-b®l, hogy kA(x − x∗ )k2 = 0, vagyis A(x − x∗ ) = 0. Azaz A oszlopai lineárisan függ®ek és AT A szinguláris.

Foglaljuk össze: A (4.13) mátrix esetén is a (4.5) rendszer általában megoldhatatlan. De a (4.14) legkisebb négyzetek elve mindig megoldásra vezet. A J függvény minden minimum helye egyben megoldása a (4.19)-nek és megfordítva. Pontosan akkor szinguláris a (4.19) mátrix, ha a (4.13) mátrixnak vannak lineárisan függ® oszlopai. Ekkor a (4.14) minimum feladatnak és a (4.19) rendszernek több (végtelen sok) megoldása van.

© Stoyan Gisbert

© Typotex Kiadó

4.3. MEGOLDÁSI ALGORITMUS, TESZTFELADATOK

79

A szinguláris esetben újra javasolható a modell egyszer¶sítése: Hagyjuk el A-ból a lineárisan függ® oszlopokat! Ez most azt jelenti, hogy a megfelel® ϕj függvény(eke)t töröljük a modellb®l, amiután megint egyértelm¶en meghatározott a megoldás.

Példa 1.: Egy egyszer¶bb periodikus folyamat alkalmas modelljének

tartjuk az

F (t) = x1 + x2 cos πt + x3 sin πt

(4.22)

1 , 2, 25 , 4, 29 2

id®pontokban, képletet. Rendelkezésünkre állnak mérések a t = 0, és ezekb®l reméljük az x1 , x2 , x3 paramétereket meghatározni. A (4.13) és a (4.19) mátrixok ekkor   1 1 0 1 0 1      6 3 3 1 1 0  T T    A= 1 0 1 , A A = 3 3 0 , det(A A) = 0.   3 0 3 1 1 0  1 0 1 Eszerint lineárisan függ®ek az A oszlopai. Valóban, az 1. oszlop minusz a 2. oszlop adja a harmadikat. Most ugyan meghatározhatjuk a megoldást (4.19)-b®l, de az nem lesz egyértelm¶. A lineáris függ®ség miatt úgy dönthetünk, hogy a ϕ3 (t) = sin πt függvényre nincs is szükség a modellben, elhagyjuk (vagyis: vesszük x3 = 0-t) egyértelm¶en kapjuk x1 -et és µ és ezután ¶ 6 3 x2 -t (4.19)-b®l, ahol ekkor AT A = reguláris. Vagy pedig kérünk még 3 3 további méréseket, pl. a t = 1 vagy t = 3 id®ponthoz  míg nem érdemes pl. párosszámú id®pontokban újabb méréseket kérni.

Példa 2.: Az 5. feladat megoldása (4.4 pont) a tárgyalt úton nem okoz

szingularitási problémát, hanem (t0 = 14 választása esetén, amit próbálkozással találtunk ki) a következ® Gauss-féle normálegyenletre vezet: µ ¶ µ ¶ 121.0 12 0.0442338 T T A Ax = x=A f = , 0.0442338 5.9847069 −66.926409 amelynek megoldása x = (a, b)T ≈ (10.124831, −11.257739)T , ld. a 4.4 ábrát. A lineáris regresszió eredményét is mutatjuk az ábrán, szemléltetve, hogy ez itt egy alkalmatlan modell.

4.3. Megoldási algoritmus, tesztfeladatok Miel®tt a legkisebb négyzetek feladatának numerikus megoldását írnánk le, még a B = AT A mátrix két tulajdonságát kell tisztáznunk.

© Stoyan Gisbert

© Typotex Kiadó

80

FEJEZET 4. LEGKISEBB NÉGYZETEK F 20

15

10

5 a+b*cos(2*Pi*(t-t0)/365)

0

0

50

100

150

200

250

300

350 t

4.4. ábra. Két 2-paraméteres modell legkisebb négyzetes meghatározása az 5. feladathoz: lineáris regresszió és cos-modell Egyrészt, a mátrix szimmetrikus: B = AT A = (AT A)T = B T , ami közvetlenül (4.17)-b®l is látható. Másrészt, B pozitív szemidenit (ld. (2.13) a 2. fejezetben), ahogyan ez (4.20)-ból olvasható le: érvényes (Bx, x) ≥ 0 bármely x (oszlop-)vektor esetén (itt most y T helyett x áll), és ha A oszlopai lineárisan függetlenek (azaz nincs olyan x 6= 0 vektor, amelyet A nullába képezne), akkor B pozitív denit: (Bx, x) > 0, amikor x 6= 0. Az utóbbi esetben a (3.30) Cholesky- és LDLT -felbontása létezik, de ha B csak pozitív szemidenit, akkor azt a felbontás el®állítása során fogjuk ˜ vagy D szorzónak valamelyik f®átlóbeli eleme észre venni: ekkor a készül® L nulla lesz, és a felbontás programja szingularitást jelez. Az algoritmus leírásához feltesszük, hogy rendelkezésünkre állnak az m (kísérletek száma), a {ti , fi }m i=1 mérési adatok (id®pontok és mérési eredmények), valamint n, a paraméterek száma. A modell legyen polinomiális. Ekkor aij = tj−1 az A mátrix eleme, és a fokszám n − 1 lesz (legfeljebb). i Keresett: azok az x1 , . . . , xn paraméterek, amelyek a legjobb illesztést adják a (4.14) értelmében. 1. j := 1(1)n 2. i := 1(1)m [aij := tj−1 ]i a (4.13) mátrix j -edik oszlopa i 3. cj := 0, i := 1(1)m [cj := cj + aij ∗ fi ]i a c = AT f vektor kiszámítása 4. k := 1(1)j [bjk := 0 5. i := 1(1)m [bjk := bjk + aij ∗ aik ]i ]k ]j a B = AT A mátrix alsó háromszögének kiszámítása 6. a Bx = c rendszer megoldása olyan Cholesky- vagy LDLT -felbontással, amely szingularitás esetén azt is jelzi, melyik sorban lépett fel a szingularitás (ld. a megfelel® algoritmust a 62. oldalon, ott a j ez a sorszám).

© Stoyan Gisbert

© Typotex Kiadó

4.3. MEGOLDÁSI ALGORITMUS, TESZTFELADATOK

81

7. Ha a szingularitás fennáll, akkor kijelzés: Az adatok nem elegend®ek az n paraméter¶ modell egyértelm¶ meghatározásához, próbáljuk az xj = 0val egyszer¶sített (n − 1 paraméter¶) modell meghatározását. stop. 8. Máskülönben: x közlése, Ax − f és kAx − f k2 kiszámítása, {ti , fi }m i=1 és {ti , (Ax)i }m i=1 kirajzolása közös ábrán ( mérési eredmények és legjobb illesztés). stop. Tesztelési példának javasoljuk a (4.1.2) adatokat (reguláris eset), valamint a fenti (4.22) példát, amelyhez az fi adatokat el®zetesen pl. x1 = x3 = 1, x2 = −1-hez számítjuk ki a megadott ti id®pontokban (ett®l függetlenül ez szinguláris eset): i ti fi

1 0 0

2 1 2

2

3 2 0

4 5 2

2

5 4 0

6 9 2

2

Ekkor c = AT f = (6, 0, 6)T , az AT A = B mátrixnak egy szimmetrikus felbontása ugyan létezik:     √ 2 0 0 6 3 3 ˜L ˜T , L ˜ = 6 1 1 0 , AT A = 3 3 0 = L 2 1 −1 0 3 0 3

˜ szorzó nem reguláris. Az n=2-höz de ez nem egy Cholesky-felbontás: az L (x3 = 0-hoz) tartozó modellb®l viszont egyértelm¶en kapjuk meg a paramétereket: x1 = 2, x2 = −2, és ekkor a maradékvektor a nullvektor. Vagy pedig kiegészítjük adatainkat azzal, hogy t7 = 1, f7 = 2, amikor is reguláris a hozzátartozó rendszer és a megoldása x1 = 1, x2 = −1, x3 = 1.

Harmadik tesztfeladatnak a következ® reguláris példát javasoljuk. Az

adatok:

i ti fi

1 1 8

2 1 0

3 2 7

4 2 9

5 3 6

6 4 1

amelyekhez polinomiális modelleket illesztünk. Az eredmények: n 1 2 3 4

x1 5.16666 6.80488 -4.2 -9

x2 x3 x 4 -0.75610 10.65 -2.35 18.5 -6 0.5

Az utolsó, n = 4 esetben, már pontosan illeszkedik a (harmadfokú) polinom az adatok átlagértékeire (t = 1, 2), ill. az fi -kre (t = 3, 4). n = 5 már nem lenne értelmes, hiszen csak 4 pontban vannak értékeink, ekkor szinguláris is lesz a B mátrix.

© Stoyan Gisbert

© Typotex Kiadó

82

FEJEZET 4. LEGKISEBB NÉGYZETEK

4.4. Feladatok 1. Számítsuk ki a következ® adatokra a legkisebb négyzetek értelmében a legjobban illeszked® F (t) = a + bt egyenes paramétereit! i ti fi

1 0 1

2 -1 10

3 1 -2

4 2 -23

2. Legfeljebb hányadfokú polinomiális modellt lehet egyértelm¶en a következ® adatokra illeszteni? Számítsuk ki ezen modell paramétereit! i ti fi

1 1 -1

2 1 1

3 2 -2

4 2 0

5 2 3

3. Miért nem oldható meg általában az Ax = f egyenletrendszer, amikor A ∈ IRm×n és m > n ? Miért oldható meg mindig az AT Ax = AT f rendszer? 4. Mit lehet a felhasználónak mondani, amikor a normál-egyenleteknek a Cholesky-felbontása során annak k -adik lépésében (k > 1) szingularitás lép fel? 5. Az alábbi adatokhoz határozzuk meg a következ® modell a, b paramétereit a legkisebb négyzetek értelmében!

¶ µ t − t0 , F (t) = a + b cos 2π 365 ahol t jelöli az id®t napokban. Az adatok: Havi középh®mérsékletek Budapesten; az 19011950 éveinek átlagai (a hónapok 15. napját vettük ti -nek): i ti fi

1 15 −1.7

2 46 0.1

3 74 5.2

4 105 10.3

5 135 15.8

6 166 18.9

7 196 21.1

8 227 20.3

9 258 16.1

10 288 10.2

11 319 4.2

12 349 0.5

Legyen t0 = 14, de ehhez közeli értékkel is kísérletezzünk; a t0 direkt meghatározása nemlineárissá tenné a feladatot. (Ilyen feladatokról majd a 7.4. pontban lesz szó). Értelmezzük az eredményeket!

© Stoyan Gisbert

© Typotex Kiadó

4.4. FELADATOK

83

6. A következ® f (t) adatokra találjunk megfelel® (4.12) alakú modellt, ahol n legyen 2, ill. 4. Ezután határozzuk meg a modell xj paramétereit a legkisebb négyzetek értelmében. A szélsebesség átlagos f (t) óraértékei a debreceni repül®téren januárban, 19581962 (t órákban, f (t) m/s)

t 1 2 3 4 5 6 7 8 9 10 11 12 f (t) 3.1 3.2 3.2 3.1 3.2 3.1 3.1 3.1 3.3 3.3 3.5 3.6 t 13 14 15 16 17 18 19 20 21 22 23 24 f (t) 3.7 3.7 3.6 3.5 3.3 3.2 3.2 3.3 3.3 3.3 3.2 3.2

© Stoyan Gisbert

© Typotex Kiadó

5. fejezet Sajátérték feladatok A komplex számokról tanultuk: általános alakjuk a + bi, ahol i :=

√ −1, azaz i2 = −1, és a, b valósak,

abszolútértékük

|a + bi| =

√ a2 + b2 ,

tehát annyi, mint az (a, b) vektor euklideszi normája. Ha egy valós együtthatójú polinom gyöke komplex: z = a + bi, akkor z = a − bi, a komplex konjugált érték, is a polinom gyöke. Ezzel teljesül |z|2 = zz . Az euklideszi skalárszorzat is tartalmazza a komplex konjugált értéket. Deníciója az x, y ∈ C I vektorok esetén:

(x, y) =

n X

xi yi .

(5.1)

i=1

Az euklideszi skalárszorzat az y ∗ x alakban is felírható, ahol y ∗ = (y)T a transzponált és konjugált komplex vektor. Két alapvet®, az euklideszi skalárszorzattal összefügg® reláció:

(αx, y) = α(x, y) és (x, αy) = α(x, y),

(5.2)

ahol α komplex szám. 85

© Stoyan Gisbert

© Typotex Kiadó

86

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

5.1. Sajátérték feladatok: alapvet® tulajdonságok Ebben a jegyzetben is találkoztunk már néhányszor sajátértékekkel, így a normák és kondiciószámok alkalmából. Közben viszont a matematikán kívül is fontos szerepet játszanak a sajátértékek, például internetes keresés közben az oldalak rangsorolásánál vagy a m¶szaki tudományokban stabilitási és rezgési problémák vizsgálata során. Legyen A ∈ IRn×n . A sajátérték feladat abból áll, hogy keressünk olyan x 6= 0 vektort és olyan λ számot, hogy (5.3)

Ax = λx.

Másszóval, a keresett vektor esetén a mátrixszal való szorzás egyszer¶en egy alkalmas számmal való szorzással helyettesíthet®. Itt az x vektor a sajátvektor és a λ szám a sajátérték, együtt (λ, x) a sajátpár. Ez a pár akár komplex is lehet és egy nemlineáris feladat megoldása: Az (5.3) lineáris egyenletrendszernek is felfogható: (A − λI)x = 0, és ennek csak akkor van nemtriviális megoldása, ha

0 = det(A − λI) =: pA (λ). Itt I az egységmátrix és pA (λ) a karakterisztikus polinom. Ennek abszolút tagja nem függ λ-tól, így λ = 0 behelyettesítésével kapható, értéke tehát det(A). F®együtthatója viszont nem függhet A-tól, így A = 0 behelyettesítésével kapható. Mivel det(−λI) = (−λ)n , azért a f®együttható (−1)n lesz. Ez azt jelenti, hogy pA foka megegyezik n-nel, az A mátrix rendjével, és gyökeib®l pontosan n darab van (multiplicitással számítva), ezek a sajátértékek. Már ötödfokú polinom esetén sem garantált, hogy gyökeit véges sok gyökjellel ki lehet fejezni, emiatt általában a sajátértékek csak iterációs eljárások segítségével közelíthet®ek. Egyébként már egy harmadfokú polinom gyökeinek explicit képletével sem világos, hogy tudunk valamit kezdeni. Vegyük például a

p3 (x) := x3 − 2x − 5 polinomot, amelynek gyökei (van egy valós gyöke és egy konjugált komplex gyökpár) a következ®képpen írhatók fel: s 

643 108

5

+

1/3 

2

+

µq 3

2 643 + 5 108 2

µq



µq 3

1 643 108

+

5 2

¶1/3



¶1/3

643 + 5 108 2 2

,

¶1/3

 1/3 √ s 5 3  643 +  − ±i  2  108 2

 µq 3

2 643 108

+

5 2

  ¶1/3  . 

© Stoyan Gisbert

© Typotex Kiadó

5.1. ALAPVETŽ TULAJDONSÁGOK

87

Mivel a szinguláris, homogén egyenletrendszernek legalább egy nemtriviális megoldása van, minden különböz® sajátértékhez legalább egy sajátvektor tartozik. Ha valós a mátrix és a sajátérték, akkor a sajátvektort valósnak választhatjuk. A sajátvektorok, mint a szinguláris (A − λI)x = 0 egyenletrendszer nemtriviális megoldásai, nem egyértelm¶en meghatározottak: ha x megoldása (5.3)-nak, akkor cx is, amennyiben c = const 6= 0. Emiatt gyakran szokták normálni a sajátvektorokat valamilyen normában. Nézzünk egy példát az elmondottakra:   1 ε 0 A(ε) =  0 1 0  , (5.4) 1 1 2 ahol ε egy valós szám. Itt kényelmesen kiszámítható, hogy ε-tól függetlenül pA (λ) = (1 − λ)2 (2 − λ), azaz van a kétszeres 1 sajátérték és az egyszeres 2. Függetlenül ε-tól λ3 = 2-höz a v (3) = (0, 0, 1)T sajátvektor tartozik. De a λ1 = λ2 -höz tartozó lineáris egyenletrendszer   0 ε 0 (A(ε) − I)x =  0 0 0  x = 0, 1 1 1 és innen olvassuk le, hogy ε 6= 0 esetén x2 = 0, x1 + x3 = 0. Ehhez csak egy nemtriviális megoldás létezik (ha egy konstansszorzótól eltekintünk): v (1) = (1, 0, −1)T . Ekkor nincs második sajátvektor az 1 sajátértékhez. Ha pedig ε = 0, akkor a rendszernek két független megoldásaként vehet® v (1) = (1, 0, −1)T , v (2) = (0, 1, −1)T , ezek sajátvektorok az 1 sajátértékhez.

5.1.1. Normális mátrixok Van egy speciális mátrixosztály, amely a sajátvektorok szempontjából fontos: a normális mátrixok osztálya. Egy A mátrix pontosan akkor normális, ha A diagonalizálható unitér mátrix segítségével. Az U mátrix akkor unitér, ha érvényes U ∗ U = I . Itt U lehet komplex, és U ∗ a transzponált és komplex konjugált mátrixot jelöli. Az U ∗ U = I mátrix-egyenletnek írjuk fel az i-edik sornak és j -edik oszlopnak megfelel® részét, a mátrix k -adik oszlopát uk -val jelölve, k = 1, . . . , n: ( 1, ha i = j, u∗i uj = (uj , ui ) = δij = 0, ha i 6= j.

© Stoyan Gisbert

© Typotex Kiadó

88

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

Itt δij a Kronecker-szimbólum, és az els® egyenl®ségi jel után az (5.1) euklideszi skalárszorzat segítségével is felírtuk a relációt. Ebb®l az derül ki, hogy az U oszlopvektorai teljes ortonormált rendszert alkotnak. Az, hogy A diagonalizálható az U mátrix segítségével, képletben így néz ki:

U ∗ AU = D, ahol D diagonális (tehát dj , a j -edik oszlopa, az ej j -edik koordináta egységvektor többszöröse: dj = djj ej ). Ekkor a D f®átlójában álló djj számok az A sajátértékei, és U oszlopai egyben az A sajátvektorai, amit az

AU = U D egyenlet alapján beláthatunk, ha annak j -edik oszlopát vesszük:

Auj = U dj = djj uj = λj (A)uj . Összehasonlítva (5.3)-mal ugyanis látjuk, hogy a djj f®átlóbeli elem egyenl® az A mátrix egy sajátértékével, amit λj (A)-vel jelölünk. Az uj sajátvektorok tehát teljes ortonormált rendszert alkotnak. Közben nem feltétlenül ortogonális egy olyan rendszer, amely a normális A mátrix n darab lineárisan független sajátvektorából áll, mert a többszörös sajátértékek esetén volna lehet®ség nem ortogonális sajátvektorokra. Ekkor viszont a többszörös sajátértékhez tartozó sajátvektor-rendszer ortogonálisnak választható. Példának elegend® az egységmátrixot említeni, amely normális, az 1 az n-szeres sajátértéke, de bármely lineárisan független vektorokból álló rendszer egyben sajátvektor-rendszere is. A normális mátrixok felsorolt el®nyös tulajdonságaihoz társul egy további: nem nehéz eldönteni, vajon egy adott A mátrix normális-e. Ez ugyanis pontosan akkor (is) igaz, ha teljesül AA∗ = A∗ A, amit kis mátrixok esetén kézi számítással, nagyobb mátrixok esetén (eltekintve a kerekítési hibáktól) számítógéppel lehet ellen®rizni. Több esetben nem is kell számolni: A normális mátrixokhoz tartoznak a hermitikus (A ∈ C I n×n , A∗ = A), a ferdén hermin×n ∗ tikus (A = −A), szimmetrikus (A ∈ IR , AT = A), ferdén szimmetrikus (AT = −A), az unitér (ld. fent) és az ortogonális (Q ∈ IRn×n , QT Q = I ) mátrixok. De messze nem minden mátrix normális, például az (5.4) mátrix nem az, függetlenül ε-tól: itt elég azt kiszámítani, hogy (A(ε)T A(ε))33 = 4 és (A(ε)A(ε)T )33 = 6. (Mivel A(ε) valós, így A(ε)∗ = A(ε)T .) Az A(ε) mátrix ε 6= 0 esetén nem is diagonalizálható, mivel csak 2 sajátvektora van. Viszont ε = 0 esetén van teljes sajátvektor-készlete és

© Stoyan Gisbert

© Typotex Kiadó

5.1. ALAPVETŽ TULAJDONSÁGOK

89

a mátrix diagonalizálható. 

Állítsuk össze ugyanis a sajátvektorokból az 1 0 0 1 0  mátrixot. Mivel ez alsó háromszög S = (v (1) , v (2) , v (2) ) =  0 −1 −1 1   1 0 0 alakú, inverze könnyebben számítható ki: S −1 =  0 1 0 . Ezzel kapjuk, 1 1 1   1 0 0 hogy S −1 A(0)S =  0 1 0  valóban diagonális. 0 0 2 Tekintsük a következ®, még egyszer¶bb példát is, n = 2-re:

µ A=

3 4 0 0



µ T

, A A=

9 12 12 16



µ T

, AA =

25 0 0 0

¶ .

Q A mátrix fels® háromszög alakú, emiatt pA (λ) = ni=1 (aii −λ) = (3−λ)(−λ), vagyis a f®átlóján állnak sajátértékei: λ1 = 3, λ2¡ = Közvetlenül ¢ 0. (2) ¡ 4 ¢ ellen®riz1 (1) het®, hogy a hozzátartozó sajátvektorok v = 0 , v = −3 . Ezekb®l a vektorokból összeállítva az S mátrixot, kapjuk µ S=

1 4 0 −3



µ , AS =

3 0 0 0

¶ ,S

−1

1 = 3

µ

3 4 0 −1

µ

¶ ,S

−1

AS =

3 0 0 0

¶ .

Azaz, az A mátrix ugyan nem normális, de mégis diagonalizálható  mint minden olyan n × n-es mátrix, amelynek n különböz® sajátértéke van. Azt is látjuk, hogy S T = S ∗ 6= S −1 , tehát S nem unitér.

5.1.2. A karakterisztikus polinomról A sajátértékek kiszámítására legegyszer¶bb útnak a karakterisztikus polinom el®állítása, majd gyökeinek meghatározása t¶nik. Ez viszont csak egészen kis n-re ajánlható: 1. A polinomot általában csak O(n3 ) nagyságrend¶ aritmetikai munkával tudjuk kiszámítani; együtthatóit nyilván csak kerekítési hibával kapjuk. 2. Bár a polinom gyökei folytonosan függnek a polinom együtthatóitól, ez a függ®ség gyenge: azzal kell számolnunk, hogy az együtthatóbeli ε-méret¶ hiba a sajátértékekben már ε1/n -méret¶ lehet, ami azt is jelenti, hogy ha n csupán 10, de volt a mátrixban egy ε = 10−10 -es hiba, a karakterisztikus polinom gyökeiben ez a hiba 0.1-re n®het.

© Stoyan Gisbert

© Typotex Kiadó

90

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

5.1.3. A sajátértékek lokalizációja A sajátértékek kiszámítása gyakran nehéz, különösen igaz ez a többszörös sajátértékekre. Ezenkívül az iterációs eljárásoknak kiindulási közelítések szükségesek. Emiatt fontos tudni, hogy könnyen kapható információ a sajátértékek elhelyezkedésér®l (lokalizációjáról). Ismeretes, hogy a hermitikus mátrix (amelynek speciális esete a szimmetrikus mátrix) sajátértékei a valós tengelyen vannak, a ferdén hermitikusé a képzetes tengelyen. Tetsz®leges mátrix sajátértékei a komplex síkon a nulla körüli, kAk sugarú körben fekszenek (ahol k · k tetsz®leges, vektornorma által indukált mátrixnorma), ld. a 2. fejezetben a (2.17) relációt. Többet az ú.n. Gersgorin-körök segítségével mondhatunk el a sajátértékek elhelyezkedésér®l: Legyen v 6= 0 az A mátrix valamelyik λ sajátértékéhez tartozó sajátvektora és vi a v -nek olyan komponense, amelyre

|vi | = max |vj | = kvk∞ . j

Ekkor Av = λv i-edik sorát rendezve kapjuk, hogy

(aii − λ)vi = −

n X

aij vj ,

j=1 j6=i

és innen

¯ ¯ ¯ ¯ n ¯X ¯ X ¯ ¯ |aii − λ| |vi | = ¯ aij vj ¯ ≤ |aij | |vi |. ¯ j=1 ¯ ¯ j6=i ¯ j6=i

Mivel |vi | = kvk∞ > 0, ez innen elhagyható, tehát érvényes

|aii − λ| ≤

n X

|aij | =: ri .

j=1 j6=i

Ebben az egyenl®tlenségben az i index a kiválasztott sajátérték®l és sajátvektortól függ  vagyis az i a λ-val és v -vel együtt ismeretlen. Az egyenl®tlenség mértani tartalma az, hogy a λ sajátérték olyan körben fekszik a komplex síkon, amelynek középpontja aii és sugara ri . Ezt a halmazt a komplex síkon az A mátrix i-edik Gersgorin-köré nek hívjuk:

Gi := {z ∈ C, I |z − aii | ≤ ri }.

© Stoyan Gisbert

© Typotex Kiadó

5.1. ALAPVETŽ TULAJDONSÁGOK

91

A gondolatmenetet alkalmazva az összes sajátértékre, azt kapjuk, hogy tetsz®leges n × n-es A mátrix minden sajátértéke Gersgorin-köreinek uniójában fekszik. Ez az eredmény Gersgorin tétel e. Példa: Alkalmazzuk a Gersgorin-tételt a 2.1 pontban vizsgált (2.7) mátrixra, amelynek sajátértékeit a 32. oldalon közöltük: 1. Gersgorin-kör: G1 := {z ∈ C, I |z − 3| ≤ 5} 2. Gersgorin-kör: G2 := {z ∈ C, I |z| ≤ 3} 3. Gersgorin-kör: G3 := {z ∈ C, I |z − 3| ≤ 7} Ezen körök uniójában fekszenek tehát a sajátértékek. Ez az információ a sajátértékekr®l igen kevés számítást igényelt. A konkrét mátrix esetén azt is egyszer¶en észre lehet venni, hogy a mátrix nem normális. Ugyanis az A∗ A mátrixot már a 32. oldalon megadtuk, pl. (1, 1)-poziciójú eleme 17, míg AA∗ (1, 1)-poziciójú eleme 26, így mindenképpen A∗ A 6= AA∗ . Ugyanakkor a mátrix diagonalizálható, hiszen három különböz® sajátértéke van. Igaz a Gersgorin-tétel következ® er®sebb formája is: Ha a Gersgorin-körök közül j darab (1 ≤ j < n) diszjunkt a többi kört®l, akkor ezen j kör uniójában pontosan j darab sajátérték van. Ennek bizonyítására az At := D + t(A − D) mátrixra alkalmazzuk a tételt. Ekkor At Gersgorin-köreinek középpontjai Pn (aii ) nem függnek t-t®l, de ri igen: ri = t j=1 |aij |. Így t = 0 esetén a j6=i körök ponttá fajulnak el és ekkor egybeesnek az A0 = D sajátértékeivel, az aii f®átlóbeli elemekkel. Amikor t mozog 1 felé, a sajátértékek (amelyek folytonosan függnek t-t®l) nem tudják elhagyni a különböz® köröket  míg azok össze nem olvadnak. t = 1-re visszakapjuk az eredeti mátrixok, és ekkor még mindig annyi sajátérték van benne 1-1 diszjunkt, körökb®l álló csoportban, ahány kör a csoporthoz hozzátartozik. Erre is nézzünk egy példát! Legyen   −4 −2 0 6 2 . A= 1 (5.5) 0 −1 3 Ekkor 1. Gersgorin-kör: G1 := {z ∈ C, I |z + 4| ≤ 2} 2. Gersgorin-kör: G2 := {z ∈ C, I |z − 6| ≤ 3} 3. Gersgorin-kör: G3 := {z ∈ C, I |z − 3| ≤ 1} ld. az 5.1 ábrát. Itt G2 és G3 uniójában 2 sajátérték van (esetünkben egy komplex konjugált sajátérték-párról van szó: λ2,3 ≈ 4.401 ± 0.309i). G1 viszont diszjunkt G2 és G3 -tól, csak egy sajátértéket tartalmazhat. Ez a sajátérték valós kell hogy legyen! Ha komplex lenne, akkor konjugált párja is benne lenne G1 -ben, mert a kör szimmetrikusan helyezkedik el a valós tengelyre nézve. Itt λ1 ≈ −3.802.

© Stoyan Gisbert

© Typotex Kiadó

92

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

G3 G1 G2 −4

3

6

5.1. ábra. Az (5.5) mátrix Gersgorin-körei, és sajátértékeinek helye: x Egyébként a körök alapján azt is meg tudjuk mondani, hogy ez a mátrix nem lehet szinguláris: máskülönben a nulla sajátértéke lenne, és annak is valamelyik Gersgorin-körbe kellene esnie.

5.2. A hatvány-módszer Ez a módszer az abszolútértékben legnagyobb sajátértéket és a hozzátartozó sajátvektort állítja el® egy iterációs eljárás segítségével: minden iterációs lépésben egy újabb vektort számít ki, és ezen sorozat vektoraival közelíti a keresett sajátvektort; a hozzátartozó sajátérték az iteráció mellékterméke. A hatvány-módszer lényegében csak az adott A mátrixszal szoroz vektorokat. Ez el®nyös, ha a mátrix nagyméret¶ és ritkamátrix. Úgy mint el®bb a mátrix sajátértékeit λk -val jelöljük, sajátvektorait v (k) val. Kiindulunk valamilyen y 0 6= 0 vektorból és képzeljük el el®ször, hogy 1 , λ2 = 1, λ3 = 10, valamint hogy érvényes λ1 = 10

y 0 = a1 v (1) + a2 v (2) + a3 v (3) , ahol ai 6= 0, i = 1, 2, 3. Most szorozzuk y 0 -t A-val, felhasználva 5.3-t:

y 1 := Ay 0 = A(a1 v (1) + a2 v (2) + a3 v (3) ) = a1 Av (1) + a2 Av (2) + a3 Av (3) 1 = a1 λ1 v (1) + a2 λ2 v (2) + a3 λ3 v (3) = a1 v (1) + a2 v (2) + 10a3 v (3) , 10

© Stoyan Gisbert

© Typotex Kiadó

5.2. A HATVÁNY-MÓDSZER

93

Ezután megismételjük ezt a m¶veletet y 1 -gyel:

1 a1 v (1) + a2 v (2) + 10a3 v (3) ) 10 1 1 a1 Av (1) + a2 Av (2) + 10a3 Av (3) = 2 a1 v (1) + a2 v (2) + 102 a3 v (3) . 10 10

y 2 := Ay 1 = A( =

Ismételjük összesen m-szer:

y m := Ay m−1 =

1 a1 v (1) + a2 v (2) + 10m a3 v (3) . 10m

(5.6)

Megértjük, hogy ebben az összegben az els® tagot hamarosan (növekv® m-re) elhanyagolhatjuk, s®t a másodikat is, az utolsóhoz képest  mégpedig még akkor is, ha az ai -k nagyságrendje eléggé különböz®. Az y m vektorok növekv® m-mel egyre közelebb kerülnek v (3) egy többszöröséhez, és csak azt kellene még megakadályozni, hogy ne történjen túlcsordulás. Ezt biztosíthatjuk, ha néha, vagy minden lépésben y m -r®l y m /ky m k-hez megyünk át valamilyen vektornormát alkalmazva:

y 0 6= 0, m = 1, 2, . . . : x := Ay m−1 , y m := x/kxk.

(5.7)

5.2.1. Konvergenciafeltételek Milyen feltételek elegend®ek ahhoz, hogy általánosabb mátrixok esetén is a fenti példában elképzelt helyzetbe kerüljünk és az {y m }∞ m=0 sorozat konvergál a legnagyobb sajátértékhez tartozó sajátvektorhoz? 1. Az A mátrix legyen diagonalizálható, pl. normális. 2. Legyen (y 0 , v (n) ) 6= 0. 3. Teljesüljön

|λ1 | ≤ |λ2 | ≤ · · · ≤ |λn−1 | < |λn |.

(5.8)

Itt az els® feltétel azt biztosítja, hogy tetsz®leges y 0 vektort is mindig ki tudunk fejezni a sajátvektorok lineáris kombinációjaként. A második feltétel az (5.1) euklideszi skalárszorzat segítségével van megfogalmazva és azt biztosítja, hogy y 0 egyáltalán tartalmazza a keresett sajátvektort. A harmadik feltetétel garantálja, hogy λn hatványai növekv® hatványkitev®vel abszolútértékben egyre jobban különbözni fognak a többi sajátérték hatványaitól.

© Stoyan Gisbert

© Typotex Kiadó

94

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

Számítsunk utána, hogy a három feltétel valóban elegend® a konvergenciához abban az esetben, amikor A normális, vagyis sajátvektorai ortonormált rendszert alkotnak: tehát az euklideszi skalárszorzatban érvényes

(v (i) , v (j) ) = δij , 1 ≤ i, j ≤ n. El®ször írjuk fel y 0 -t mint a v (i) -k lineáris kombinációját: 0

y =

n X

ci v (i) .

(5.9)

i=1

Ezután el®gyakorlatnak határozzuk meg a lineáris kombináció ci együtthatóit. Ehhez az (5.9) relációt skalárisan szorozzuk meg v (j) -vel valamelyik j -re, 1 ≤ j ≤ n:

(y 0 , v (j) ) = (

n X

ci v (i) , v (j) ) =

i=1

n X

ci (v (i) , v (j) ) =

n X

i=1

ci δij = cj .

(5.10)

i=1

Hasznos az y 0 euklideszi normájának kiszámítása is:

ky 0 k22

0

0

= (y , y ) = (

n X

(i)

0

ci v , y ) =

i=1

n X

ci (v (i) , y 0 )

i=1

Most a továbbszámításhoz el®nyös, ha az y 0 (5.9) lineáris kombinációjában az összegzési indexet j -re változtatjuk, mert az i már szerepel, és ezzel le van kötve. Így

ky 0 k22

=

n X

(i)

0

ci (v , y ) =

n X

i=1

(i)

ci (v ,

i=1

n X

(j)

cj v ) =

j=1

n X n X

ci cj (v (i) , v (j) ).

i=1 j=1

Itt (5.2)-t vettük gyelembe. Innen végül is

ky 0 k22

=

n X n X

(i)

(j)

ci cj (v , v ) =

i=1 j=1

n X n X

ci cj δij =

n X

|ci |2 .

(5.11)

i=1

i=1 j=1

Ezután Ay 0 -ra kapjuk

Ay 0 =

n X

ci Av (i) =

i=1

n X

ci λi v (i) .

i=1

Ha most (5.11)-ben y 0 helyett Ay 0 -t írunk és ci helyett ci λi -t, akkor az eredmény n X |ci λi |2 . kAy 0 k22 = i=1

© Stoyan Gisbert

© Typotex Kiadó

5.2. A HATVÁNY-MÓDSZER

95

Hasonlóan számítjuk ki, hogy

Am y 0 =

n X

(i) ci λm és kAm y 0 k22 = i v

i=1

n X

2 |ci λm i | ,

i=1

tehát

kAm y 0 k2 =

" n X

#1/2 2 |ci λm i |

.

i=1

Idáig csupán az els® konvergencia-feltételt használtuk. A második feltétel (5.10) alapján azt jelenti, hogy cn 6= 0. Akkor most az összegekb®l az n-edik tagokat érdemes kiemelni, a harmadik feltétel hasznosítása érdekében: # " µ ¶m n−1 X λ i (n) v (i) , Am y 0 = λm + ci n cn v λ n i=1 " ¯ ¯2m #1/2 n−1 X ¯ λi ¯ . kAm y 0 k2 = |λn |m |cn |2 + |ci |2 ¯¯ ¯¯ λn i=1 Innen látjuk: a harmadik feltétel nagy m-re azt adja, hogy ¶m ¸ · µ λn−1 (n) m 0 m (n) ≈ λm , A y = λn cn v + O n cn v λn " ï ¯ !#1/2 ¯ λn−1 ¯2m m 0 m 2 ¯ ≈ |λn |m |cn |. kA y k2 = |λn | |cn | + O ¯¯ ¯ λn Tehát

Am y 0 ≈ κm v (n) , m 0 kA y k2

m ahol κm = λm n cn /|λn cn | olyan komplex szám, amelynek abszolútértéke 1. Ett®l a κm skalárszorzótól eltekintve pontosan megkaptuk a keresett sajátvektort, de sajátvektoroknál egy nemnulla skalárszorzó nem lényeges: eredménynek κm v (n) ugyanolyan jó, mint v (n) . Ezzel a konvergenciát. Azt is látjuk, hogy a konvergencia sebes´ ³ beláttuk λn−1 sége O λn -vel jellemezhet®. Ha a |λn−1 /λn | hányados közel van 1-hez, akkor a módszer nagyon lassan konvergál.

Most megvitatjuk a három konvergencia-feltétel fontosságát. Az iteráció akkor is konvergál, ha A nem normális vagy diagonalizálható, vagyis az 1. feltétel kevésbé fontos (a fenti számításainkat viszont megkönnyítette). A lényeges feltétel a harmadik, amely röviden úgy fejezhet® ki, hogy λn -nek dominánsnak kell lennie.

© Stoyan Gisbert

© Typotex Kiadó

96

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

Egy ellenpélda, amely mutatja, hogy a 3. feltétel nélkül nem számíthatunk konvergenciára: Legyen µ ¶ µ ¶ 2 0 1 0 A= , és pl. y = . (5.12) 1 0 3 Ez a mátrix szimmetrikus,√tehát diagonalizálható, és λ1,2 = ±1, az ortonor¡ ¢ (2) √2 ¡ 1 ¢ 2 1 (1) mált sajátvektorok v = 2 1 , v = 2 −1 . √

A megadott y 0 esetén a 2. feltétel is teljesül: (y 0 , v (2) ) = − 22 . De a 3. feltétel nem teljesül, hiszen |λ1 | = |λ2 |. Az {y m }¡ sorozat nem konvergál: ¢ 3 m 0 m páros m-re y = y , páratlan m-re viszont y = 2 , mert A csak permutálja a vele megszorzott vektorok komponenseit. Az a vélekedés is hibásnak bizonyul, hogy a sorozatban végtelen sokszor szerepl® két vektor sajátvektor lehetne. Gyakran azért nem teljesül |λn−1 | < |λn |, mert A valós és λn−1 = λn . Erre példa az (5.5) mátrix, ahol |λ1 | < |λ2 | = |λ3 |. Most foglalkozzunk a 2. feltétellel. Ha (y 0 , v (n) ) = 0 vagy kicsi, akkor az iteráció folyamán (kerekítési hibák hatására) keletkezik egy v (n) -irányú komponens az y m vektorokban. Ekkor késleltetve ugyan, de végül mégis v (n) hez konvergál az iteráció. Hogy ez a hatás mikor érvényesül, az az alkalmazott pontosságtól függ (ha csak szimpla pontosságban számolunk, akkor el®bb: itt a kerekítési hibák el®nyösek!), továbbá attól, hogy λn mennyire dominál, végül a többi ci együttható nagysága is befolyásolja a jelenséget. A probléma a 2. és 3. feltéltellel nyilván az, hogy ismeretlen mennyiségekre vonatkoznak: éppen v (n) -t és λn -et keressük. Ezért, ha nem kapunk konvergenciát, egy újabb kezdetivektorral próbálkozzunk.

5.2.2. A Rayleigh-hányados A hatvány-módszerrel nemcsak a sajátvektort, hanem a hozzátartozó sajátértéket is megkaphatjuk. A kevésbé jó, de egyszer¶ lehet®ség a következ®: arra számítva, hogy elég nagy m-re érvényes lehet Ay m ≈ λn y m , a két vektor komponenseib®l kapjuk λn közelítését: Ha (m)

yi

(m)

6= 0, akkor (Ay m )i /yi

≈ λn

lehet nagy m-re. De itt maximálisan n különböz® értéket kapunk és nem világos, hogy ezek közül melyiket kellene el®nyben részesíteni vagy esetleg milyen súlyozott összegükb®l lehetne egy jó közelítést kiszámítani?

© Stoyan Gisbert

© Typotex Kiadó

5.2. A HATVÁNY-MÓDSZER

97

A jó módszer az, ha y m Rayleigh-hányados át használjuk. Egy x 6= 0 vektor Rayleigh-hányadosa

ρ(x) =

(Ax, x) . (x, x)

(5.13)

Erre úgy jutunk, hogy azt kérdezzük az x vektor birtokában, vajon melyik r számra lesz kAx − rxk22 minimális? Ilyen számról remélhetjük azt, hogy ha x közel van sajátvektorhoz, akkor r közel lehet a hozzátartozó sajátértékhez. Ez egy legkisebb négyzetek feladata:

J(r) = kAx −

rxk22

=

n X

((Ax)i − rxi )2 ,

i=1

amelynek megoldását  úgy, mint a 4. fejezetben  dierenciálással kapjuk meg:

n

X dJ(r) =2 0= ((Ax)i − rxi )(−xi ) = −2[(Ax, x) − r(x, x)], dr i=1

ahonnan r = ρ(x) következik, hiszen (x, x) = kxk22 > 0. Az r = ρ(x) Rayleigh-hányados el®nye tehát az, hogy ® a minimális kAx− rxk22 értéket garantálja. Tisztázzuk, hogy ha x az A sajátvektora, akkor ρ(x) lesz a hozzátartozó λ sajátérték (vagyis: a Rayleigh-hányados nem csap be): Ilyen esetben Ax = λx és x 6= 0, így

ρ(x) =

(Ax, x) (λx, x) λ(x, x) = = = λ. (x, x) (x, x) (x, x)

© Stoyan Gisbert

© Typotex Kiadó

98

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

Foglaljuk össze a tanultakat: A hatvány-módszer abból áll, hogy

egy alkalmas y 0 6= 0 vektorból kiindulva egy {y m }∞ m=0 vektorsorozatot készítünk: m = 1, 2, . . . : x := Ay m−1 , y m := x/kxk. Ez az {y m }∞ m=0 sorozat konvergál a λn abszolútértékben legnagyobb sajátértékhez tartozó v (n) sajátvektorhoz, ha a következ® elégséges feltételek teljesülnek: 1. az A mátrix diagonalizálható, pl. normális; 2. (y 0 , v (n) ) 6= 0; 3. igaz |λ1 | ≤ |λ2 | ≤ · · · ≤ |λn−1 | < |λn |. A hozzátartozó λn sajátértéket a Rayleigh-hanyadosból kapjuk meg, medik közelítésben: (Ay m , y m ) λn ≈ µm := . (y m , y m )

A fenti feltételek között az utolsó a legfontosabb. A mátrix egyébként pontosan akkor normális, ha teljesül A∗ A = AA∗ , ill. ha (mint ekvivalens feltétel) unitér U mátrixszal diagonalizálható, azaz van olyan U , hogy

U ∗ U = I, U ∗ AU = D = diag(λi (A)).

5.2.3. A hatvány-módszer algoritmusa, tesztfeladatok Most már érdemes felírni a hatvány-módszer algoritmusá t. Adott n, az A ∈ IRn×n mátrix, egy x 6= 0 kezdetivektor, a maxit maximális iterációszám, valamint egy ε pontosság. Az algoritmusban kiszámításra kerül® µm számok reményeink szerint növekv® m-mel a λn maximális abszolútérték¶ sajátértékhez közelednek, és ilyen siker esetén x lesz a hozzátartozó közelít® sajátvektor. 0. m := 0, xn := kxk2 , ? xn = 0 ? [stop: adjál nemnulla kezdetivektort] 1. x := x/xn, y := A ∗ x, µm := (y, x) 2. m:=1(1)maxit 3. [yn := kyk2 , ? yn = 0 ? [stop: x sajátvektor, λ = 0 sajátérték] 4. x := y/yn a normálás hatására kxk2 = 1 lesz 5. y = A ∗ x, µm := (y, x)

© Stoyan Gisbert

© Typotex Kiadó

5.2. A HATVÁNY-MÓDSZER

99

6. ? |µm − µm−1 | ≤ ε(1 + |µm |) ? [goto 8.]]m 7. [stop: elértük a max. iterációszámot, jelenlegi eredmény: x vektor, µm érték] 8. ? ky − µm ∗ xk22 ≤ ε [stop: siker! x közelít® sajátvektor, µm közelít® sajátérték, m . iteráció] 9. [stop: Nem találtam megoldást! Jelenlegi eredmény: x vektor, µm érték] Felhívjuk a gyelmet arra, hogy a 8. lépés tesztje a norma négyzetére vonatkozik.

Tesztelési feladatok: a) Legyen n = 3,



 2 −1 0 2 −1  . A :=  −1 0 −1 2 √ √ Ekkor λ3 = λmax = 2 + 2 ≈ 3.41421356, v (3) = ( 21 , − 22 , 21 )T . Indítsuk be az algoritmust az x = (−1, 2, −1)T vektorral, maximálisan maxit = 20 iterációval és ε = 0.001 pontossággal. Ekkor a ciklus el®tt: = 3.333 . . ., y = Ax = (−4, 6, −4)T , µ0 = ρ(x) = 10 3 továbbá az m-ciklusban: m = 1 : yn = 8.24621125, x = (−0.48507125, 0.72760687, −0.48507125)T , y = (−1.69774937, 2.42535625, −1.69774937)T , µ1 = 3.41176470 m = 2 : yn = 3.41277875, x = (−0.49746833, 0.71066905, −0.49746833)T , y = (−1.70560573, 2.41627478, −1.70560573)T , µ2 = 3.41414141. Ekkor már teljesül a 6. lépés tesztje, valamint a 8. lépésé is. Vegyük észre, hogy a sajátvektor x közelítésének el®jele nem hibás: sajátvektoroknál egy nemnulla konstansszorzó (itt a −1) nem számít! b) Vegyük most az (5.5) mátrixot és az x = (1, 1, 1)T kezdetivektort, legyen újra maxit = 20, ε = 0.001. Ekkor m = 18-ra teljesül a 6. lépés tesztje, de a 8. lépésben nem fogadjuk el a µ18 = 4.50242832 eredményt sajátértéknek, ill. az x = (−0.18877986, 0.82393254, −0.53431949)T vektort sajátvektornak. Ha ismételnénk a számítást (kisebb ε-t választva), akkor sem kapnánk konvergenciát. Ennek magyarázata az 5.1 ábra és a konvergencia feltételek: itt egyrészt |λ2 | = |λ3 |, mert ezek konjugált komplex számok, másrészt számításunk teljesen a valósban fut, komplex eredményt úgysem tudnánk kapni. Vegyük észre, hogy a µ-számok a λ3 valós részének közelében vannak! Ilyen helyzetben az is lehetséges, hogy a {µm } sorozat valóban konvergál (egyre kisebb ε-ok esetén is), de nem sajátértékhez, amit a 8. lépés tesztje meg

© Stoyan Gisbert

© Typotex Kiadó

100

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

12 függetlenül m-t®l annak is mutat. Erre egy példa az (5.12): ekkor µm = 13 ellenére, hogy ez nem sajátérték (λ1,2 = ±1). De így már m = 1-re teljesül a 25 = 0.1479... 6. lépés tesztje és a 8. lépésben azt kapjuk, hogy ky−µ1 ∗xk22 = 169 Tehát még az is el®fordulhat (ha pl. ε = 0.2 volt), hogy elfogadjuk a hibás eredményt! Innen egy tanács: a sikeres számítást ismételjük a kapott sajátvektor közelítésével mint kezdetivektorral, de kisebb ε-nal.

Egy másik példa a következ®: c) Legyen n = 4,   4 −2 0 0  −1 4 2 0   A :=   0 −2 4 1  , amikor λ1,2 = 3 ± i, λ3,4 = 5 ± i. 0 0 2 4 Indítsuk az algoritmust az x = (1, 1, 1, 1)T vektorral, maximálisan 20 iterációval és ε = 0.00001 pontossággal. A 19. iterációban µ19 = 4.99999564 lesz (itt igen közel vagyunk λ3 valós részéhez) és a 6. lépés tesztje teljesül, de ezután a 8. lépésben ky − µ19 ∗ xk22 = 0.99986931, így a (µ19 , x) eredményt nem fogadjuk el sajátpárnak. Most mutatunk egy ellenpéldát, amikor A diagonalizálható, van domináns sajátértéke és a hatvány-módszer konvergál, de nem a domináns sajátértékhez tartozó v (3) sajátvektorhoz, holott még az (x, v (3) ) 6= 0 feltétel is teljesül:       −1 0 −6 2 −2 A =  15 5 7  , λ1 = 0, λ2 = −4, λ3 = 12, v (3) = 1 , x =  0  . 2 1 21 3 9

 2 Ekkor (x, v (3) ) = 2, de Ax = −1, ami sajátvektor a −4 sajátértékhez, −3 úgyhogy ezután az A-val való szorzás már csak ezen vektor többszöröseit adja. Ennek három okát mondunk: egyrészt pontos számítás esetén igaz, hogy a domináns sajátértékhez tartozó sajátvektor itt már nem fog el®kerülni, másrészt itt nem ortogonális a sajátvektorrendszer és végül egy nulla sajátérték is jelen van. 

5.2.4. Az eltolás Eddig a hatvány-módszerrel csak az abszolútértékben legnagyobb sajátértéket és a hozzátartozó sajátvektort kaptuk meg.

© Stoyan Gisbert

© Typotex Kiadó

5.2. A HATVÁNY-MÓDSZER

101

Ezen tudunk segíteni az eltolással. Ez abból áll, hogy A helyett az A−λ0 I mátrixot vizsgáljuk, ahol a λ0 számot alkalmasan fogjuk megadni. Ugyanis az utóbbi mátrixnak ugyanazok a sajátvektorai vannak, mint A-nak, de a sajátértékek változnak áttekinthet® módon: Ha (5.3) teljesül, akkor

(A − λ0 I)x = λx − λ0 x = (λ − λ0 )x. Innen látjuk, hogy éppen λ0 -val csúsztak el a sajátértékek. Ha most az A − λ0 I mátrixra alkalmazzuk a hatvány-módszert, akkor a sajátértékek λi helyett λi − λ0 lesznek, és ekkor már nem feltétlenül a korábban domináns λn lesz most is domináns. Legyen A pl. szimmetrikus és pozitiv denit, n > 1, akkor sajátértékei a [λ1 , λn ] intervallumban vannak, a mátrix spektrálsugara λn = ρ(A):

0 < λ1 ≤ λ2 ≤ . . . ≤ λn , és tegyük fel, hogy λ1 < λn . Válasszuk λ0 = kAk1 -nek, mert az könnyebben kiszámítható (vagy ehelyett vegyük A maximumnormáját eltolásnak). Ekkor A − λ0 I sajátértékei a [λ1 − λ0 , λn − λ0 ] intervallumban vannak:

λ1 − λ0 ≤ λ2 − λ0 ≤ . . . ≤ λn − λ0 ≤ 0, mert λn = ρ(A) ≤ kAk1 = λ0 . Vagyis: az abszolútértékben legkisebb sajátérték az eltolás révén az abszolútértékben legnagyobb sajátérték lesz. Így az eltolt mátrixszal iterálva a legkisebb sajátérték és a hozzátartozó sajátvektor közelítését kapjuk. A kiszámított közelít® sajátértéket µ1 -gyel jelölve, érvényes µ1 ≈ λ1 − λ0 , és innen a λ1 ≈ µ1 + λ0 értéket kapjuk. Ennek a módszernek az néha a hátránya  amikor a legnagyobb és legkisebb sajátérték néhány nagyságrendben eltér egymástól  hogy a µ1 +λ0 összeadás valójában olyan kivonás, amelynek során értékes számjegyeket veszíthetünk el: λ0 ≈ λn >> λ1 , és

µ1 + λ0 ≈ (λ1 − λn ) + λn = λn − (λn − λ1 ). Általános valós mátrix esetén is, ha teljesül az (5.8) dominancia-feltétel, érdemes a λ0 = kAk eltolást kipróbálni. De a domináns sajátérték negatív is lehet és az ilyen eltolás révén az is marad, amit a változatlan számítási eredményb®l észreveszünk. Ekkor következ®nek λ0 = −kAk-val lehet próbálkozni. Befejezésül arra akarunk rámutatni, hogy nem az egyetlen értelmes lehet®ség eltolásnak a λ0 = ±kAk választása. Ha programunk képes komplex számokkal való számításra és arra gyanakszunk, hogy a hiányzó konvergencia oka egy komplex sajátértékpár, akkor érdemes egy tisztán képzetes eltolást választani, mert ezután a két konjugált komplex sajátérték közül már csak egy lesz abszolútértékben maximális.

© Stoyan Gisbert

© Typotex Kiadó

102

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

5.3. Az inverz iteráció Ez a módszer elvileg úgy jön létre, hogy a hatvány-módszert az inverz mátrixra alkalmazzuk. De a korábbi (5.6) reláció helyett most valójában nem az y m := A−1 y m−1 m¶veletet fogjuk végrehajtani, hanem az Ay m = y m−1 lineáris rendszert oldjuk meg LU-felbontással. Ehhez az iteráció el®tt LUfelbontást készítünk A-ból, majd megszokott módon dolgozunk, megoldva az m-ciklusban változatlan L-lel és U -val az

Lz = y m−1 , U y m = z rendszereket, ahol z segédvektor. Itt is érdemes a kapott vektorokat normalizálni.

5.3.1. Konvergenciafeltételek A hatvány-módszer konvergencia-feltételeinek megfelel®i itt a következ®k: Legyen x0 6= 0 egy kezdetivektor és készüljön az {xm } sorozat az

m = 1, 2, . . . : Lz = xm−1 , U y = z, xm = y/kyk iterációval. Ekkor, ha A normális és érvényes

(x0 , v (1) ) 6= 0, |λ1 | < |λ2 | ≤ · · · ≤ |λn |, akkor a sorozat konvergál v (1) (egy többszörösé)hez, a legkisebb sajátértékhez tartozó sajátvektorhoz. Ennek magyarázata az, hogy ha A reguláris és az (5.3) egyenletet megszorozzuk A−1 -gyel, akkor azt kapjuk, hogy x = λA−1 x. A regularitás miatt A-nak nem lehet a 0 sajátértéke, így ezt a relációt λ-val eloszthatjuk:

1 x = A−1 x, x 6= 0. λ Vagyis: az inverz mátrix λ(A−1 ) sajátértékei az eredeti mátrix λ(A) saját1 , a sajátvektorok ugyanazok. És így ha értékeinek reciprokai: λ(A−1 ) = λ(A) λ1 (A) a legkisebb abszolútérték¶ sajátértéke A-nak, akkor λ11(A) a maximális abszolútérték¶ sajátértéke A−1 -nek. Alkalmazva az inverz iterációt, megkapjuk a hozzátartozó v (1) sajátvektor közelítését, és ezután ennek Rayleigh-hányadosából a λ1 (A) sajátérték közelítését. Az inverz iteráció nagy haszna a hatvány-módszerhez képest abban rejlik, hogy  eltolással alkalmazva  nemcsak maximális és minimális, hanem közbüls® sajátérték meghatározására is használható.

© Stoyan Gisbert

© Typotex Kiadó

5.3. AZ INVERZ ITERÁCIÓ

103

Eltolás esetén ugyanis a módszer ahhoz a sajátvektorhoz konvergál, amelynek a hozzátartozó sajátértéke a legközelebb van a λ0 eltoláshoz, hiszen ha

min |λi − λ0 | =: |λi0 − λ0 | > 0, i

akkor 1/(λi0 − λ0 ) lesz (A − λ0 I)−1 -nek abszolútértékben a legnagyobb sajátértéke. A konvergencia sebessége most a

max i6=i0

|λi0 − λ0 | |λi − λ0 |

mennyiségt®l függ, amely különösen akkor lesz közel nullához, ha λ0 már jó közelítése a keresett λi0 sajátértéknek. Ezért itt is érdemes a kapott eredménnyel a programot újra indítani úgy, hogy λ0 eltolás gyanánt a sajátérték éppen kiszámított közelítésére térünk át. Az inverz iterációnál nem kell attól tartani, hogy nehézséget okozna egy olyan λ0 eltolás, amely túl közel volna egy sajátértékhez vagy egyenl® vele. Az els® esetben ugyan nagy hibával kapjuk az (A − λ0 I)xm = y m−1 egyenlet megoldását, de a hiba majdnem teljesen a közeli sajátértékhez tartozó sajátvektor irányában keletkezik, ami a célunknak éppen kedvez. A második esetre (amely csak kivételesen, de el®fordulhat) fel kell készülnünk egy külön kis programmal: Az LU-felbontáskor észrevesszük a szingularitást, az eredeti egyenletrendszert bizony nem tudjuk megoldani, de az (A − λ0 I)xm = 0 rendszerhez találhatunk nemtriviális megoldást. Ez lesz a keresett sajátvektor. Megemlítjük, hogy az inverz iteráció használatakor is lehetséges olyan eset, amikor két legközelebbi sajátérték létezik a λ0 eltoláshoz. Ilyenkor ugyanazok a problémák lépnek fel, mint a hatvány-módszer esetén. Ezért itt is célszer¶, hogy az eljárás végén ellen®rizzük, vajon sajátvektorhoz történt-e a konvergencia.

5.3.2. Az inverz iteráció algoritmusa, tesztfeladatok Adott az A mátrix, az x = x0 6= 0 kezdetivektor, az ε pontosság, a maxit maximális iterációszám, valamint a λ0 eltolás. Keresett a λ0 -hoz legközelebbi sajátérték és a hozzátartozó sajátvektor. 0. LU := A − λ0 I LU-felbontás részleges f®elemkiválasztással. Ha ennek során szingularitást tapasztalunk, akkor (A−λ0 I)x = 0 nemtriviális megoldása, [stop: x sajátvektor, λ = λ0 sajátérték]

© Stoyan Gisbert

© Typotex Kiadó

104

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

1. m := 0, xn := kxk2 , ? xn = 0 ? [stop: adjál nemnulla kezdetivektort] 2. x := x/xn, µ0 := (A ∗ x, x) 3. m:=1(1)maxit 4. [Lz = x, U y = z, x := y/kyk2 , a := A ∗ x, µm := (a, x) 5. ? |µm − µm−1 | ≤ ε(1 + |µm |) ? [goto 7.]]m 6. [stop: elértük a max. iterációszámot, jelenlegi eredmény: x vektor, µm érték] 7. ? ka − µm ∗ xk22 ≤ ε [stop: siker!, x közelít® sajátvektor, µm közelít® sajátérték, m . iteráció] 8. [stop: Nem találtam megoldást! Jelenlegi eredmény: x vektor, µm érték] A fenti 4. lépés helyett azt is el lehetne képzelni, hogy ott az inverz mátrixnak megfelel® Rayleigh-hányadost számítjuk ki, annak reciprokát képezzük, majd az eltolást is gyelembe vesszük: 4.' [Lz = x, U y = z, µm := 1/(y, x) + λ0 , x := y/kyk2 Ezzel még az a := A ∗ x szorzat kiszámítását is megtakarítanánk, de igen kicsi els® sajátérték esetén biztosabb a fenti út.

Tesztelési feladatok: a) Legyen n = 3,

 2 −1 0 2 −1  . A :=  −1 0 −1 2 

√ √ Ekkor λ1 = 2− 2 ≈ 0.58578643, v (1) = ( 21 , 22 , 21 )T ≈ (0.5, 0.70710678, 0.5)T . Indítsuk be az algoritmust az x = (1, 2, 1)T vektorral, λ0 = 0 eltolással, maximálisan 2 iterációval és ε = 0.001 pontossággal. Ekkor a ciklus el®tt:

xn = 2.44948974, x = (0.40824829, 0.81649658, 0.40824829)T , µ0 = 0.66666667, A ∗ x = (0.0, 0.81649658, 0.0)T , továbbá az m-ciklusban:

m = 1 : y = (0.81649658, 1.22474487, 0.81649658)T , x = (0.48507125, 0.72760687, 0.48507125)T , a = (0.24253562, 0.48507125, 0.24253562)T , µ1 = 0.58823529 m = 2 : y = (0.84887468, 1.21267812, 0.84887468)T , x = (0.49746833, 0.71066905, 0.49746833)T , a = (0.28426762, 0.42640143, 0.28426762)T , µ2 = 0.58585858.

© Stoyan Gisbert

© Typotex Kiadó

5.3. AZ INVERZ ITERÁCIÓ

105

Ekkor már majdnem teljesül az 5. lépés tesztje. (m = 3-ra teljesülne, amikor x = (0.49956653, 0.70771926, 0.49956653)T , µ3 = 0.58578856, és ezzel a 7. lépés tesztje is igaz lenne. µ3 már öt helyes számjeggyel adná a sajátértéket.) Ezután viszont újra indítjuk az algoritmust az el®bb m = 2-re kapott x vektorral es λ0 = 0.58585858 eltolással. El®ször ezt az értéket µ0 -nak kapjuk vissza, majd

m = 1 : y = (−6930.0892, −9800.6237, −6930.0892)T , x = (−0.50000006, −0.70710669, −0.50000006)T , a = (−0.29289343, −0.41421325, −0.29289343)T , µ1 = 0.58578643 következik, amikor az algoritmus 5. és 7. lépésbeli tesztjei teljesülnek és µ1 minden látható számjegyén egybeesik a sajátértékkel. b) Vegyük az (5.5) mátrixot és indítsuk be az algoritmust az x = (10, −1, 0)T vektorral, λ0 = 0 eltolással, maximálisan 100 iterációval és ε = 0.001 pontossággal. Ekkor a konvergencia elég lassú, m = 34-re teljesülnek a tesztek és kapjuk

x = (0.99499089, −0.09893994, −0.01428307)T , µ34 = −3.80082331. Ezután az el®z® x vektorral és a λ0 = −3.80082331 eltolással újra hívjuk az algoritmust. Most m = 1-re az eredmény

x = (−0.99502591, 0.09855702, 0.01448966)T , µ1 = −3.80190062. A 7. lépésben kiszámított kA ∗ x − µm ∗ xk22 ekkor már a kerekítési hibák nagyságrendjén van. Kézenfekv® gyanakodni, hogy a végén azért kaptunk olyan jó eredményt, mert az elején x0 már közel volt a sajátvektorhoz. Ezért próbálkozzunk egy, ilyen tekintetben ártatlan kezdetivektorral: legyen x0 = (1, 1, 1)T . Valóban, ekkor csak a 46. iterációban teljesülnek a tesztek, amikor

x = (0.99499152, −0.09866244, −0.01604948)T , µ46 = −3.80110235. De most használjuk fel azt a Gersgorin-körökb®l könnyen megszerezhet® információt, hogy van egy sajátérték a [−5, −3] intervallumban, és emiatt válasszuk λ0 = −3-nak. Újra kezdve az x0 = (1, 1, 1)T vektorral, a 4. iterációban kapjuk

x = (−0.99502705, 0.09854041, 0.01452408)T , µ4 = −3.80193963, és az 5. és 7. lépés tesztje teljesül.

© Stoyan Gisbert

© Typotex Kiadó

106

FEJEZET 5. SAJÁTÉRTÉK FELADATOK

5.4. Feladatok 1. Miért számolhatunk azzal, hogy az alábbi mátrix λ = 4 háromszoros sajátértékéhez van 3 ortogonális sajátvektor? Állítsuk el® ezeket a sajátvektorokat!   5 1 1 1  1 5 1 1   A :=   1 1 5 1 . 1 1 1 5 2. Számítsuk ki a következ® mátrix maximum-normáját, és adjuk meg az abszolútértékben legkisebb sajátérték abszolútértékének alsó és fels® becslését! Ennek segítségével mutassuk meg, hogy A reguláris, vezessük le kA−1 k∞ és a kondíciószám alsó becslését!   −3 1 −1 4 1  A :=  −1 2 −1 6 3. Alkalmazzuk a hatvány-módszert (közbüls® normálás nélkül) az µ ¶ 2 −1 A := 1 2 mátrixra, kiindulva az y 0 = (1, 0)T vektorból! Milyen {y m } sorozatot kapunk, milyen értékei vannak a ρ(y m ) Rayleigh-hányadosnak, hol vannak a sajátértékek, miért nem segít a λ0 = 2 eltolás? 4. Mekkora sajátérték tartozik közelít®leg az   −4 1 −1 A :=  −1 4 −1  −1 1 4 mátrix x = (8, 1, 1)T közelít® sajátvektorához? 5. Mit lehet az el®z® mátrix összes sajátértékének elhelyezkedésér®l mondani? 6. Mit lehet a következ® mátrixok tulajdonságairól és az összes sajátértékének elhelyezkedésér®l mondani?     3 1 1 0 −3 0 1 −1  −1  8 1 0  0   , B :=  2 4 −1 . A :=   0 −1   8 1 −1 0 3 1  0 −1 −1 −3 1 0 −2 4

© Stoyan Gisbert

© Typotex Kiadó

5.4. FELADATOK

107

7. Mekkora sajátérték tartozik közelít®leg az   5 −1 2 5 −1  A :=  −1 2 −1 6 mátrix x = (2, −3, 2)T közelít® sajátvektorához? A Gersgorin-körök alapján mit mondhatunk a sajátértékekr®l? 8. Mekkora sajátérték tartozik közelít®leg az  7 3 1 0 0  3 17 −1 1 0   7 −1 1 A :=  1 −1  0 1 −1 −5 −2 0 0 1 2 −7

   .  

mátrix x = (−8, 2, 6, 0, 1)T közelít® sajátvektorához? A Gersgorinkörök alapján mit mondhatunk a sajátértékekr®l?

© Stoyan Gisbert

© Typotex Kiadó

6. fejezet Interpoláció Képletekbe való behelyettesítésr®l:

Ha f, g, h három, az [a, b] intervallumon deniált függvény úgy, hogy

f (x) = g(x) + h(x), és f -be akarjuk behelyettesíteni az x0 ∈ [a, b] értéket, akkor ezt így tegyük:

f (x0 ) = g(x0 ) + h(x0 ). Helytelen lenne itt pl. a h helyén továbbra is h(x)-et írni. Ez nem lenne behelyettesítési m¶velet. Példa: ha g(x) = a + b(x − 2) és h(x) = c(x − 2)(x − 3), akkor

f (x) = g(x) + h(x) = a + b(x − 2) + c(x − 2)(x − 3) és itt x = 2-nek a behelyettesítése azt eredményezi, hogy

f (2) = g(2) + h(2) = a + b(2 − 2) + c(2 − 2)(2 − 3) = a.

Analízisb®l tanultunk a hibatagos Taylor-polinomról:

Ha a < b és a valós f : [a, b] → IR függvény k -szor folytonosan dierenciálható (k ≥ 1), akkor minden x ∈ [a, b]-re érvényes

f (x) = f (a)+(x−a)f 0 (a)+

(x − a)2 (x − a)k (k) f ”(a)+. . .+ f (a+(x−a)ϑ(x)), 2 k!

ahol ϑ olyan folytonos függvény, amely az [a, b] intervallumot (0, 1)-be képezi. Ha például k = 1 és f egyszer folytonosan dierenciálható, akkor

f (x) = f (a) + (x − a)f 0 (a + (x − a)ϑ(x)), x ∈ [a, b], 0 < ϑ(x) < 1. Ez az

f (x)−f (a) x−a

= f 0 (a + (x − a)ϑ(x)) formában ismert mint középérték tétel. 109

© Stoyan Gisbert

© Typotex Kiadó

110

FEJEZET 6. INTERPOLÁCIÓ

6.1. Interpolációs feladatokról Az el®z® fejezetb®l tudjuk, hogy csak elég költségesen lehet kiszámítani egy nagyméret¶ A mátrix valamelyik közbüls® λ sajátértékét. Gyakori eset, hogy az A mátrix folytonosan függ egy x paramétert®l, aminek következtében λ az x folytonos függvénye lesz. Ezért célszer¶nek t¶nik, ha a λ függvényt csak egyes x-értékekre számítjuk ki és ezután valahogyan simán összekötjük  interpoláljuk  a kapott λ-értékeket, lényegesen kevesebb m¶veletigénnyel járó eljárást használva. Ekkor azzal kell számolnunk, hogy a csökkentett m¶veletigény ára az lesz, hogy a pontos értékekt®l eltávolodva növekv® hibával kapjuk a λ(x) értékét. A feladat lényege nem változik, ha λ(x) nem sajátérték, hanem az x változónak egy másik, költségesen kiszámítható függvénye. Hasonlóan, mint a 3. fejezetben, most is olyan egyszer¶en kiszámítható függvényt keresünk, amely illeszkedik adott xi pontokban adott fi = f (xi ) függvényértékekre. De most azt tesszük fel, hogy az f (xi ) értékek hibamentesen állnak rendelkezésre, így a kiszámítandó függvényt®l is azt várjuk el, hogy az pontosan illeszkedjen az adatokra. A polinomok képezik az egyik lényeges függvényosztályt az interpolációs feladatok megoldásának szempontjából, mert polinomokkal kényelmesen lehet számolni. Így az n-edfokú pn polinom behelyettesítési értéke a Hornersémával kapható. Ha

p(x) = a0 + a1 x + · · · + an xn =

n X

aj xj

(6.1)

j=0

akkor a Horner-séma algoritmusa a következ®képpen írható le: Adottak x, n és az {ai }ni=0 együtthatók, keresett pn (x). 1. p = an 2. i := n − 1(−1)0 [p = p ∗ x + ai ]i 3. stop [eredmény: p = pn (x)]

6.2. A Lagrange-interpoláció 6.2.1. A Lagrange-féle interpolációs feladat Adottak az {xi }ni=0 és {fi }ni=0 számok és érvényes

xi 6= xj ,

0 ≤ i 6= j ≤ n.

(6.2)

Az {xi } pontokat alappontok nak, az (xi , fi ) számpárokat adatoknak hívjuk. A legfeljebb n-edfokú polinomok osztályát Pn -nel fogjuk jelölni.

© Stoyan Gisbert

© Typotex Kiadó

6.2. A LAGRANGE-INTERPOLÁCIÓ

111

y y0 y2 y1 yn y3

x0 x1

x2

x3

....

xn

x

6.1. ábra. A Lagrange-féle interpolációs feladat Keressük azt a p ∈ Pn polinomot, amely a

p(xi ) = fi ,

i = 0, . . . , n,

(6.3)

interpolációs feltételek et elégíti ki. A (6.22)-(6.23) feltételek deniálják a Lagrange-féle interpolációs feladat ot, ld. a (6.1) ábrát. Lássuk be, hogy a (6.23) feltételek egy lineáris egyenletrendszerrel ekvivalensek: A p polinomot kereshetjük ugyanis a (6.1) alakban, ahol az ai együtthatók egyel®re ismeretlenek. Ezeknek meghatározását remélhetjük az alábbi lineáris egyenletekb®l, amelyek a (6.23) feltételeknek felelnek meg:

p(xi ) = a0 + a1 xi + · · · + an xni = fi ,

i = 0, 1, . . . , n.

(6.4)

Összefoglalva mátrix-vektor alakban:       f0 a0 1 x0 x20 . . . xn0  f1   a1  1 x1 x21 . . . xn1       V a = f, V :=  1 . . . . . . . . . . . . , a := . . . , f := . . . . (6.5) fn an 1 xn x2n . . . xnn A számítógépes megoldás szempontjából is fontos, hogy a (6.22) feltételek esetén egyetlen polinom van Pn -ben, amely a (6.23) relációknak eleget tesz, tetsz®leges fi -kre. Ha igaz (6.22), akkor ugyanis V egy reguláris (Vandermonde-típusú) mátrix (és indukcióval be lehet bizonyítani, hogy

© Stoyan Gisbert

© Typotex Kiadó

112

FEJEZET 6. INTERPOLÁCIÓ

Q determinánsára det(V ) = 0≤i 0, i = 1, 2, . . . , n) elég rosszul van kondicionálva. Ezenkívül a megoldást O(n3 ) m¶velettel kapnánk meg.

6.2.2. A Newton-féle rekurzió Viszont létezik az interpolációs polinom kiszámításának egy lényegesen kevesebb m¶veletigénnyel járó rekurzív módja, az úgynevezett Newton-féle interpolációs polinom közbeiktatásával. Ennek levezetéséhez jelöljük Nk -val azt a k -adfokú polinomot, 0 ≤ k ≤ n, amely interpolálja az {xi , fi }ki=0 adatokat. Az interpolációs feladat egyértelm¶ megoldhatóságának köszönhet®en érvényes Nk (x) = Lk (x), de az Nk felírásmódja más lesz, mint (6.6). A k = 0 esetben

N0 = b0 (ahol b0 := f0 )

(6.7)

lesz a keresett nulladfokú polinom. Ezután erre támaszkodva keressük azt a maximálisan els®fokú polinomot, amely az (x0 , f0 ), (x1 , f1 ) adatokat inter-

© Stoyan Gisbert

© Typotex Kiadó

114

FEJEZET 6. INTERPOLÁCIÓ

polálja, a következ® alakban:

N1 (x) = N0 + b1 (x − x0 ). Ezzel a képlettel, amelyben b1 konstans, már biztosítottuk, hogy érvényes lesz N1 (x0 ) = N0 = f0 . Ezután b1 alkalmasan meghatározható úgy, hogy N1 (x1 ) = f1 is teljesüljön. Ehhez behelyettesítjük x = x1 -et a képletbe és azt kapjuk, hogy N1 (x1 ) = N0 + b1 (x1 − x0 ) = f1 (6.8) legyen. Mivel x1 − x0 6= 0, a b1 innen kiszámítható:

b1 = (f1 − N0 )/(x1 − x0 ) =

f1 − f0 . x1 − x0

(6.9)

Az ered®

f1 − f0 (x − x0 ) (6.10) x1 − x0 képletet valójában már a gimnáziumból ismerjük. Ha itt f1 = f0 , akkor ez csak nulladfokú. Most tekintsük a k = 2 esetet. N1 -re támaszkodva keressük azt a maximálisan másodfokú polinomot, amely az (x0 , f0 ), (x1 , f1 ), (x2 , f2 ) adatokat interpolálja, a következ® alakban: N1 (x) = N0 + b1 (x − x0 ) = f0 +

N2 (x) = N1 (x) + b2 (x − x0 )(x − x1 ). Itt az N1 kiegészítése olyan, hogy az x = x0 és x = x1 helyeken elt¶nik, tehát az N2 is rendelkezik az N1 azon tulajdonságával, hogy ezeken a helyeken a jó f0 és f1 értékeket veszi fel, függetlenül a még meghatározásra kerül® b2 konstanstól. b2 alkalmasan meghatározható úgy, hogy N2 (x2 ) = f2 is teljesüljön. Ehhez behelyettesítjük x = x2 -et az N2 képletébe és követeljük, hogy az eredmény f2 legyen:

N2 (x2 ) = N1 (x2 ) + b2 (x2 − x0 )(x2 − x1 ) = f2 .

(6.11)

Itt is az a helyzet, hogy b2 szorzója (x2 −x0 )(x1 −x0 ) 6= 0, ennek köszönhet®en b2 innen kiszámítható: µ ¶ f2 − f1 f1 − f0 1 − , b2 = (f2 − N1 (x2 ))/((x2 − x0 )(x2 − x1 )) = x2 − x0 x2 − x1 x 1 − x0 (6.12) ahol az N1 (6.10) képletét használtuk fel, amely szerint

x2 − x0 x1 − x2 f1 − f0 (x2 − x0 ) = f0 + f1 x1 − x0 x1 − x0 x1 − x0 µ ¶ 1 1 x1 − x2 + f1 + . = f0 x1 − x0 x2 − x1 x1 − x0

N1 (x2 ) = f0 +

© Stoyan Gisbert

© Typotex Kiadó

6.2. A LAGRANGE-INTERPOLÁCIÓ

115

Ha (6.12)-b®l b2 = 0 adódik, akkor N2 = N1 és nem másodfokú. Nézzük az általános esetet. A rekurzió k -adik lépésében a maximálisan k -adfokú Nk polinomot az

Nk (x) = Nk−1 (x) + bk ωk (x),

k = 1, . . . , n

(6.13)

alakban keressük, ahol ωk az

ω0 ≡ 1, ωk (x) :=

k−1 Y

(x − xj ), k ≥ 1,

(6.14)

j=0

képletekkel deniált k -adfokú polinom. i = 0, . . . , k − 1-re teljesülnek az Nk (xi ) = fi interpolációs feltételek, ωk alakjának köszönhet®en. Behelyettesítve x = xk -t a (6.24) képletbe és azt követelve, hogy Nk értéke az xk helyen éppen fk legyen:

Nk (xk ) = Nk−1 (xk ) + bk ωk (xk ) = fk , azt kapjuk, hogy hiszen ωk (xk ) =

Qk−1

bk = (fk − Nk−1 (xk ))/ωk (xk ),

j=0 (xk

(6.15)

− xj ) 6= 0. Visszatekintve (6.24)-ben látjuk, hogy

Nk (x) =

k X

bi ωi (x), k = 0, 1, . . . , n.

i=0

Ezzel a keresett Nn polinomot is megkaptuk:

Nn (x) =

n X

bi ωi (x).

(6.16)

i=0

6.2.3. A dierenciaséma Most hiányzik még egy kényelmes kiszámítási mód a bk együtthatókra. Mivel a bk az Nk f®együtthatója és Nk egybeesik Lk -val, így n = k -t behelyettesítjük (6.6)-ba és kapjuk, hogy k k k k X Y X Y 1 x − xj k =x fi + alacsonyrend¶ tagok x-ben, Lk (x) = fi x − x x − x i j i j j=0 j=0 i=0 i=0 j6=i

j6=i

tehát

bk =

k X i=0

fi

k Y j=0 j6=i

1 xi − xj

(6.17)

© Stoyan Gisbert

© Typotex Kiadó

116

FEJEZET 6. INTERPOLÁCIÓ

az Lk = Nk f®együtthatója. A megcélzott kényelmes kiszámításhoz bevezetjük 0 ≤ m ≤ k ≤ n-re az f = (f0 , . . . , fn ) vektorhoz az úgynevezett osztott dierenciákat:

[xm , . . . , xk ]f :=

k X i=m

fi

k Y j=m j6=i

1 , m < k; xi − xj

[xm ]f := fm , k = m. (6.18)

Ekkor a keresett bk együtthatók innen az m = 0 esetben adódnak, mint k -adrend¶ osztott dierenciák: (6.19)

bk = [x0 , . . . , xk ]f.

Fontos rámutatni, hogy az osztott dierenciák az {xi , fi }ni=0 adatok sorrendjét®l nem függnek, mert (6.18)-ben felcserélve az (xr , fr ) és (xs , fs ) adatokat, az összeg nem változik, csupán az s-edik és r-edik tagja cserél helyet. Továbbá, igaz a következ® egyenl®ség:

[xm , . . . , xk ]f =

[xm+1 , . . . , xk ]f − [xm , . . . , xk−1 ]f (k > m). xk − xm

(6.20)

Ez az egyenl®ség általánosítja a (6.9) és (6.12) képleteket, és (6.18) alapján közvetlen számítással igazolható. A (6.20) olyan rekurzió, amelynek alapján az összes (6.16)-hoz szükséges osztott dierenciát a következ® sémával lehet kiszámítani: x0

[x0 ]f &

x1

[x1 ]f % &

[x0 , x1 ]f & ... ... ... xn−1

[x0 , x1 , x2 ]f & [x1 , x2 ]f % ... ... ...

...

& [x0 , . . . , xn ]f ...%

[xn−1 ]f & [xn−1 , xn ]f %

xn

[xn ]f %

A nyilakkal mutatjuk a számítás menetét, amelynek befejeztével a háromszög fels® oldalán állnak a keresett bk mennyiségek. Ezzel az osztott dierenciasémá val nyerhetjük kényelmesen a Newton-féle interpolációs polinom együtthatóit.

Példa: Adott 5 adat: (-1,1), (1,-1), (2,13), (3,69), (4,221) és keresett a

legfeljebb negyedfokú polinom, amely illeszkedik ezekre az adatokra. Ekkor a dierenciaséma részletesen:

© Stoyan Gisbert

© Typotex Kiadó

6.2. A LAGRANGE-INTERPOLÁCIÓ

xi -1 1 2

117

fi

1

−1−1 1−(−1)

= −1 14−(−1) 2−(−1)

-1 13

3

69

4

221

13−(−1) 2−1 69−13 3−2 221−69 4−3

=5 21−5 3−(−1)

= 14 56−14 3−1

= 152

9−4 4−(−1)

= 21

= 56 152−56 4−2

=4

= 48

48−21 4−1

=1

=9

Most a b0 , b1 , . . . , bn együtthatókat a háromszög fels® oldaláról olvassuk le:

1, −1, 5, 4, 1,

(6.21)

és ezeket felhasználva kapjuk (6.16)-ból az N4 polinomot:

N4 (x) = 1 − (x + 1) + 5(x + 1)(x − 1) + 4(x + 1)(x − 1)(x − 2) +(x + 1)(x − 1)(x − 2)(x − 3). Egyébként azért, mert az adatok sorrendjét®l nem függ az interpolációs polinom, másképpen is olvashatunk le b0 , b1 , . . . , bn együtthatókat, pl. a háromszög alsó oldaláról: 221, 152, 48, 9, 1. Ezen sorozathoz a következ®képpen (visszafelé) konstruáljuk az N4 polinomot:

N4 (x) = 221 + 152(x − 4) + 48(x − 4)(x − 3) + 9(x − 4)(x − 3)(x − 2) +(x − 4)(x − 3)(x − 2)(x − 1). Ha csupán a behelyettesítési értékek érdekelnek bennünket, akkor nem érdemes az interpolációs polinom explicit alakját kiszámítani, mert erre már a kapott Newton-féle polinom felírásmódja is jó. Ugyanis az alábbi algoritmus (a Horner-séma általánosítása) adja az Nn (x) behelyettesítési értékét az x helyén O(n) m¶veletigénnyel: 1. p := bn 2. i := n − 1(−1)0 [p := p ∗ (x − xi ) + bi ]i 3. [stop, eredmény: p = Ln (x) = Nn (x)] El®bb a háromszöges dierenciaséma el®állításához 21 n2 + O(n) m¶velet (1 m¶velet = 2 kivonás és 1 osztás) szükséges.

© Stoyan Gisbert

© Typotex Kiadó

118

FEJEZET 6. INTERPOLÁCIÓ

Ezen számítás egyszer¶sége jobban látható abból, hogy két programsorral elvégezhet®, amelynek elején az f vektor tartalmazza a f0 , f1 , . . . , fn értékeket, a végén viszont a b0 , b1 , . . . , bn együtthatókat: 1. i = 1(1)n 2. [j = n(−1)i [fj := (fj − fj−1 )/(xj − xj−i )]j ]i További 21 n2 + O(n) m¶velettel (szorzás és összeadás) most még az interpolációs polinom kifejtett (6.1) alakjának aj együtthatóit a (6.16) Newton-féle alak b0 , . . . , bn osztott dierenciáiból a következ® algoritmussal állíthatjuk el®: 1. sn+1 := 1 2. i := 1(1)n − 1 3. [sn−i := 0, k := 0 4. j := n − i(1)n 5. [sj := sj − xj ∗ sj+1 , bk := bk + sj ∗ bi+1 , k := k + 1]j ]i 6. [stop, eredmény: ak = bk , k = 0, . . . , n] Ezzel összesen n2 +O(n) m¶veletbe került a (6.1) alakú interpolációs polinom el®állítása, míg n3 /3 + O(n2 ) m¶veletbe, ha a Gauss-elimináció segítségével oldjuk meg a (6.5) egyenletrendszert. A fenti példában a polinom kifejtett alakjára

L4 (x) = p4 (x) = −3 + 2x2 − x3 + x4 adódik. Vegyük észre, hogy a dierenciaséma segítségével könnyebben megoldható további (xn+1 , fn+1 ) stb. adatok gyelembe vétele, mint a Lagrangeinterpoláció (6.6) felírásából kiindulva. Ehhez a dierenciasémát az új adattal egészítjük ki és csak egy további (pl. alsó) átlóját számítjuk ki. Ezt mutatjuk meg abban a konkrét esetben, amit már fent vizsgáltunk, ha az új adat (0, −3): xi f i 1 -1 -1 -1 1 5 14 4 21 1 2 13 56 9 0 48 1 3 69 152 8 32 4 221 0

-3

56

© Stoyan Gisbert

© Typotex Kiadó

6.2. A LAGRANGE-INTERPOLÁCIÓ

119

y

200

150

100

50

0 -1,25

0

1,25

2,5

3,75 x

6.3. ábra. Lagrange-interpoláció a (−1, 1), (0, −3), (1, −1), (2, 13), (3, 69), (4, 221) adatokhoz: L4 (x) = −3 + 2x2 − x3 + x4 Itt a nulla a séma végén azt jelenti, hogy az interpolációs polinom nem változik: az el®z® p4 esetünkben az új adatra is illeszkedik, hiszen abszolút tagja a −3, ld. a 6.3 ábrát is. Általában viszont az új adat hozzáadásával az interpolációs polinom fokszáma növekszik.

Foglaljuk össze: A Lagrange-féle interpolációs feladat abból áll, hogy adottak az {xi }ni=0 és {fi }ni=0 számok és érvényes xi 6= xj ,

0 ≤ i 6= j ≤ n.

(6.22)

Keressük azt a p ∈ Pn polinomot, amely a p(xi ) = fi ,

i = 0, . . . , n,

(6.23)

interpolációs feltételek et elégíti ki.

Ezen feladat megoldása történik a Newton-féle rekurzióval: N0 = f 0 ,

Nk (x) = Nk−1 (x) + bk ωk (x),

k = 1, . . . , n.

(6.24)

Ennek összes bk együtthatóját a dierenciasémával O(n2 ) m¶velettel ki tudjuk számítani.

© Stoyan Gisbert

© Typotex Kiadó

120

FEJEZET 6. INTERPOLÁCIÓ

6.2.4. A Lagrange-interpoláció algoritmusa, tesztfeladatok A különféle programrészeket összeállítva, megkapjuk a Lagrange-interpoláció algoritmusát. Adottak n és az {xi }ni=0 alappontok sorozata, továbbá a hozzátartozó {fi }ni=0 függvényértékek. Keresettek a Lagrange-polinom értékei az {xi }m i=1 pontokban. 1. i = 1(1)n 2. [ j = n(−1)i 3. [ ? xj − xj−i = 0 ? [stop: hiba az alappontokban: xj = xj−i , j, j-i ] 4. fj := (fj − fj−1 )/(xj − xj−i )]j ]i 5. j = 1(1)m 6. [ p := fn 7. i := n − 1(−1)0 [p := p ∗ (xj − xi ) + fi ]i f j := p]j 8. 9. [stop, eredmény: {f j }m j=1 ]

Els® tesztelési feladatként javasoljuk a 116. oldalon közölt példát, amelyhez a (6.21)-beli bk együtthatók tartoznak (a fenti programban ezek jelölése fj és a 4. lépésben készülnek), ld. a 6.3. ábrát is. Ha ekkor m = 4 és

x1 = 0, x2 = 1.5, x3 = 2.5, x4 = 3.5, akkor

f 1 = −3, f 2 = 3.1875, f 3 = 32.9375, f 4 = 128.6875.

Második tesztfeladatként hasznos lesz ha az el®z® feladatot kib®vítjük az

7111 ) adatponttal, amely függvényértéke az ott kapott poli(x5 , f5 ) := ( 71 , − 2401 nomnak, tehát már illeszkedik a polinom grakonjára. A lebeg®pontos számításnál (amikor pl. az (0.1428571429, −2.961682632) adatpontból indulunk ki) viszont a kerekítési hibák miatt keletkezhet egy ötödfokú interpolációs polinom (amelynek f®együtthátója tízjegy¶ számítással pl. −8.75 · 10−11 lett).

6.2.5. Hibabecslések Eredetileg azt az interpolációs feladatot t¶ztük ki, hogy készítsünk olyan p ∈ Pn polinomot, amely az {xi } alappontokban felveszi az {fi } értékeket. Most, amikor Ln vagy Nn alakban ezzel elkészültünk, az eredményt úgyis értelmezhetjük, hogy van egy f függvény, amely deniált az [a, b] intervallumon, ahol a ≤ min xi , b ≥ max xi , 0≤i≤n

0≤i≤n

© Stoyan Gisbert

© Typotex Kiadó

6.2. A LAGRANGE-INTERPOLÁCIÓ

121

és amely az interpolációs feladat fi értékeit adja: f (xi ) = fi , i = 0, 1, . . . , n, és ezt a függvényt approximáltuk az Ln polinommal. Ekkor az a kérdés merül fel, vajon Ln (x) mennyire tér el f (x)-t®l? Ez a kérdés fontos, mert a Lagrange-polinom által adott approximáció az alapja több numerikus eljárásnak (mint numerikus integrálás, ld. a 8. fejezetet, és közönséges dierenciálegyenletek megoldása, ld. a 9. fejezetet). Amennyiben az f függvény n + 1-szer folytonosan dierenciálható, akkor a válasz megadásában segít a Taylor-sorfejtés:

f (x) = f (a) + (x − a)f 0 (a) + +

(x − a)2 (x − a)n (n) f ”(a) + . . . + f (a) 2 n!

(x − a)n+1 (n+1) f (a + (x − a)ϑ(x)), (n + 1)!

ahol ϑ olyan folytonos függvény, amely az [a, b] intervallumot (0, 1)-be képezi. Ezen sorfejtés jobb oldalán áll az n-edfokú Taylor-polinom és a hibatag. Ezt a polinomot sokféleképpen lehet felírni, pl. az (x0 , f (x0 )), . . . , (xn , f (xn )) adatoknak a segítségével, azaz Ln (f, x) segítségével is. Ekkor a hibatagot is célszer¶ átírni a következ®képpen:

f (x) = Ln (f, x) +

f (n+1) (ζn+1 (x)) ωn+1 (x), (n + 1)!

(6.25)

ahol ωn+1 deníciója (6.14)-nek felel meg és ahol ζn+1 (x) = ζn+1 (x0 , . . . , xn , x) eleget tesz a

a ≤ min(x, min xi )) < ζn+1 (x) < max(x, max xi )) ≤ b 0≤i≤n

0≤i≤n

(6.26)

feltételeknek. Ahogyan elvárható, (6.25)-ben az eltérés f és Ln között egyrészt az alappontokban nulla, másrészt akkor azonosan nulla, amikor maga f egy legfeljebb n-edfokú polinom. A fontos (6.25) hibaképlet közvetlenül ritkán hasznos, de gyakrabban rendelkezünk az n + 1-edik deriváltnak egy becslésével,

max |f (n+1) (x)| ≤ Mn+1 ,

x∈[a,b]

és akkor ennek segítségével az eltérést tudjuk becsülni:

|f (x) − Ln (f, x)| ≤

Mn+1 (b − a)n+1 , x ∈ [a, b], (n + 1)!

(6.27)

mert x ∈ [a, b] esetén ωn+1 (x) minden x − xi szorzójában xi legalább a és x legfeljebb b. Így igaz |ωn+1 (x)| ≤ (b − a)n+1 .

© Stoyan Gisbert

© Typotex Kiadó

122

FEJEZET 6. INTERPOLÁCIÓ

Ezen becslés alkalmazására mutatunk egy példát: ha a sin függvényt az [a, b] intervallumon Lagrange-féle polinommal interpoláljuk, akkor az eltérésre (6.25) alapján azt kapjuk, hogy

| sin(x) − Ln (sin, x)| ≤

(b − a)n+1 , x ∈ [a, b], (n + 1)!

hiszen ezen f függvény n + 1-edik deriváltja n-t®l függ®en sin(x), cos(x), − sin(x) vagy − cos(x), de mindig érvényes |f (n+1) | ≤ 1. Másképpen is ki lehet fejezni az f − Ln hibát (6.6) alapján: # " n n X Y fi f (x) Q + f (x) −Ln (x) = (x − xj ) Qn (x − x) (x − x ) i j j6=i (xi − xj ) j=0 i=0 j=0

= ωn+1 (x) · [x0 , . . . , xn , x]f, felhasználva a (6.17)(6.19) képleteket is. Az el®z® képlet (6.25)-tel együtt azt jelenti, hogy

[x0 , . . . , xn , x]f =

f (n+1) (ζn+1 (x)) f (n+1) (ζn+1 (x0 , . . . , xn , x)) = . (n + 1)! (n + 1)!

(6.28)

Amikor itt n = 0, akkor ebben a relációban felismerjük az analízis középérték tételét: f (x) − f (x0 ) = f 0 (ζ1 (x)). [x0 , x]f = x − x0 Ha csupán ez utóbbit ismernénk, akkor viszont már a másodrend¶ osztott dierenciáknál (ld. (6.12) és (6.19)) sem jutnánk tovább, mint idáig: ½ ¾ f (x) − f (x1 ) f (x1 ) − f (x0 ) 1 − [x0 , x1 , x]f = x − x0 x − x1 x1 − x0 1 {f 0 (ζ1 (x1 , x)) − f 0 (ζ1 (x0 , x1 ))} , = x − x0 holott (6.28) szerint

[x0 , x1 , x]f =

f 00 (ζ2 (x0 , x1 , x)) . 2

A (6.28) akkor hasznos, ha egy interpolációs feladat megoldása után beérkezik egy új (xn+1 , f (xn+1 )) adat, xn+1 6= xi , i = 0, 1, . . . , n. Ekkor az új adattal folytatva a dierenciasémát, az [x0 , . . . , xn , xn+1 ]f osz(n+1) (ζ n+1 (x)) tott dierenciát számítjuk ki és ezzel (6.28) szerint a hibatagbeli f (n+1)!

© Stoyan Gisbert

© Typotex Kiadó

6.3. AZ HERMITE-FÉLE INTERPOLÁCIÓ

123

kifejezésnek egy értékét. Ezt megszororzva ωn+1 -gyel kapjuk a (6.24) sorozat következ® Nn+1 tagjához vezet® bn+1 ωn+1 polinomot, amely benyomást ad arról, mekkora lehet az interpoláció hibája általában (ezzel gyakorlatilag az Nn+1 polinomot pontos f -nek tekintjük). A bn+1 ωn+1 polinom a valódi hibát leginkább az új pont környezetében adja vissza. Befejezésül meg kell említenünk a Lagrange-interpoláció értékeléséhez, hogy azt nagy n számokra nem tudjuk javasolni. Ugyanis bár felveszi a megadott értékeket, de az alappontok között oszcillálni szokott (ami a bázispolinomok oszcillációjának következménye, ld. a 6.2 ábrát), és különösen a széls® alappontok közelében ez zavaró.

6.3. Az Hermite-féle interpoláció Vizsgáljunk most egy (6.22),(6.23)-nál általánosabb problémát, az Hermiteféle interpolációs feladat ot. Ez abból áll, hogy keressünk olyan H polinomot, amely eleget tesz a következ® feltételeknek:

i = 0, 1, . . . , n :

H (j) (xi ) = fij , j = 0, 1, . . . , mi − 1,

(6.29)

ahol az xi -k és fij -k megadott valós számok és az mi -k természetes számok; H (j) jelöli a H függvény j -edik deriváltját. Legyen érvényes (6.22) is. Ilyen feladat megoldása például akkor érdekes, amikor az f (xi ) függvényértékeken kívül néhány alappontra ismerjük a derivált értékeit is, ld. a 6.4 ábrát. Az Hermite-féle interpolációs polinom hasznos a 8., ill. 9. fejezetben tárgyalásra kerül® numerikus integrálásnál, ill. a dierenciálegyenleteknél. P Legyen m := ni=0 mi a (6.29)-ben szerepl® feltételek száma. Ekkor létezik az Hermite-féle interpolációs feladatnak az egyértelm¶ megoldása Pm−1 -ben, a legfeljebb m − 1-edfokú polinomok halmazában. Ezt pontosan úgy lehet belátni, mint a Lagrange-féle feladat esetén, az algebra f®tétele alapján, csak most a polinomnak többszörös gyöke lehet: Tegyük fel ugyanis, hogy H1 és H2 két olyan (legfeljebb m − 1-edfokú) polinom, amely teljesíti a (6.29) feltételeket. Akkor a h = H1 − H2 ∈ Pm−1 polinomnak az xi az mi -szeres gyöke. Ha pl. mi = 2, akkor nemcsak h(xi ) = H1 (xi ) − H2 (xi ) = 0, hanem még h0 (xi ) = H10 (xi ) − H20 (xi ) = 0 is teljesül, hiszen ekkor H1 és H2 deriváltja is egyenl® xi -ben. Összesen m gyök van (multiplicitással számítva), de h fokszáma legfeljebb m−1  tehát h(x) ≡ 0. Ez azt jelenti, hogy több mint egy megoldás nem lehetséges. Közben viszont most is a (6.29),(6.22) feladat ekvivalens egy lineáris egyenletrendszerrel:

© Stoyan Gisbert

© Typotex Kiadó

124

FEJEZET 6. INTERPOLÁCIÓ

y o o o

x1

x2

x3

x

6.4. ábra. Hermite-féle interpolációs feladat, amikor az xi pontokban adott a függvényérték és az els® derivált Keressük a megoldást

Hm−1 (x) =

m−1 X

ak xk

k=0

alakban, egyel®re ismeretlen ak együtthatókkal. Akkor, ha adott egy függvényérték xi -ben, úgy mint korábban kapjuk a

Hm−1 (xi ) =

m X

ak xki = fi0

k=0

egyenletet, amely lineáris a keresett ak -kban. Ha most ezenkívül az els® derivált is adott xi -ben, akkor ez megint lineáris egyenletet jelent az ak -kban: 0 Hm−1 (xi )

=

m X

kak xk−1 = fi1 . i

k=1

Ha netán adott még a 2. derivált is, akkor kapjuk a 00 Hm−1 (xi )

=

m X

k(k − 1)ak xk−2 = fi2 i

k=2

egyenletet, stb. Összefoglalva tehát: olyan lineáris egyenletrendszerrel állunk szemben, amelynek mindig (függetlenül az fij számoktól) legfeljebb egy megoldása van. Akkor viszont pontosan egy megoldása van.

© Stoyan Gisbert

© Typotex Kiadó

6.3. AZ HERMITE-FÉLE INTERPOLÁCIÓ

125

Az Hermite-féle interpolációs feladat megoldásában segítségünkre lesz a Lagrange-féle interpolációs polinom, amelyet a Newton-féle alakban a dierenciasémából nyerünk. Ehhez azt képzeljük el, hogy az adott fij értékek valamilyen elegend®en sokszor dierenciálható f függvényb®l kiszámíthatóak: fi0 = f (xi ), fij = f (j) (xi ), j = 1, . . . , mi − 1. Most az eljárás megértéséhez kezdjük egy gondolatkísérlettel: Ha valamelyik i-re mi −1 > 0, akkor az xi alappontot mi −1 olyan xik ponttal egészítjük ki, amelynek távolsága xi -t®l kε, k = 1, . . . , mi − 1, ahol ε > 0 és elég kicsi, úgy hogy az összes xi és xik pont páronként különböz® lesz. i −1 Ezután az {(xi , f (xi ) = fi0 )}ni=0 és az {(xik , f (xik ))}i=n,k=m adatokból hai=0,k=1 gyományos módon konstruáljuk a dierenciasémát és fels® átlójáról olvassuk le a Newton-féle polinom bk = bk (ε) együtthatóit, majd abból a korábban tárgyalt módon kapjuk magát az Nm−1 (ε, x) interpolációs polinomot. Most menjen ε nullához. Ekkor gyeljük meg, mi lesz a dierenciasémában álló egyes osztott dierenciákból (6.26) és (6.28) szerint:

1 lim[xi , xi1 ]f = f 0 (xi ), lim[xi , xi1 , xi2 ]f = f 00 (xi ), ε→0 ε→0 2 stb. De az Hermite-féle feladat éppen az f 0 (xi ) = fi1 , ill. f 00 (xi ) = fi2 stb. számokat tartalmazta, ha mi = 2, ill. mi = 3 stb. Ennek alapján limε→0 Nm−1 (ε, x) = Hm−1 (x). Ezzel befejeztük a gondolatkísérletet. Most elmondhatjuk a Hm−1 interpolációs polinom közvetlen konstrukcióját: A hagyományos dierenciasémában minden xi alappontot mi -szer szerepeltetünk. Ahol annak 3. oszlopában (amelyben az [xi , xi+1 ]f els®rend¶ osztott dierenciák állnak) ezután értelmetlen 0/0 kifejezés adódna, ott azt írjuk, hogy fi1 . Ahol annak 4. oszlopában (amelyben az [xi−1 , xi , xi+1 ]f másodrend¶ osztott dierenciák állnak) is értelmetlen 0/0 kifejezés adódna, ott azt írjuk, hogy 21 fi2 , és így tovább. Az egyéb helyeken a korábbi módon számolunk. Példa: Adott

(0, 0, 0) = (x0 , f00 = f (0), f01 = f 0 (0)), (1, 1, 3, 6) = (x1 , f10 = f (1), f11 = f 0 (1), f12 = f 00 (1)), tehát itt m0 = 2, m1 = 3, és keresett az a legfeljebb negyedfokú polinom, amely ezeket az adatokat interpolálja. Megoldás: El®ször csak az ismételt alappontokat mutatjuk és azokat a helyeket, ahol egy 0/0 kifejezés adódna:

© Stoyan Gisbert

© Typotex Kiadó

126

FEJEZET 6. INTERPOLÁCIÓ xi 0

fi 0

0

0

1

1

1

1

1

1

0/0 * 0/0 0/0

* * 0/0

*

*

*

, majd helyesen kitöltve:

xi 0

fi 0

0

0

1

1

1

1

1

1

0 1 3 3

1 2 6 2

1 1

0

Innen a hagyományos módon olvassuk le a bk együtthatókat:

0, 0, 1, 1, 0 és állítjuk össze az interpolációs polinomot:

H4 = 0 + 0 ∗ x + x2 + x2 (x − 1) + 0 ∗ x2 (x − 1)2 = x3 . Az interpolációs polinom csak harmadfokú lett, de teljesíti az összes interpolációs feltételt. Tehát ® az egyetlen megoldás. Az elképzelt határátmenet alapján egy m-szer dierenciálható f függvény és az Hermite-interpoláció eltérésére kapjuk, hogy

f (x) − Hm−1 (x) =

f (m) (ζm (x)) ω m (x), ζm (x) ∈ (a, b), m!

ahol most

ω m (x) =

n Y

(6.30)

(x − xi )mi .

i=0

Innen látjuk, hogy (6.27) mintájára érvényes

|f (x) − Hm−1 (x)| ≤

Mm (b − a)m , x ∈ [a, b], m!

(6.31)

ha maxx∈[a,b] |f (m) (x)| ≤ Mm . Az Hermite-féle polinom lokálisan jobb approximációt ad, de a széls® alappontok közelében, a polinom magasabb fokszáma miatt, még er®sebb kilengésekre kell számítanunk, mint a Lagrange-féle interpoláció esetén.

6.4. A szakaszonkénti polinomiális interpoláció Az el®z®ekben láttuk, hogy könnyen el®állítható, de nagyobb pontszámra nem problémamentes a polinomiális interpoláció. A széls® alappontok között ez az interpoláció gyakran rossz eredményeket ad.

© Stoyan Gisbert

© Typotex Kiadó

6.4. A SZAKASZONKÉNTI POLINOMIÁLIS INTERPOLÁCIÓ

y

127

1,25

1

0,75

0,5

0,25

0

0

0,25

0,5

0,75

1 x

-0,25

6.5. ábra. Töröttvonal interpoláció és Lagrange-interpoláció a (0, 0), ( 61 , 0), ( 13 , 0), ( 21 , 0), ( 32 , 1), ( 65 , 1), (1, 1) adatokhoz A legegyszer¶bb kiút ebb®l a helyzetb®l a szakaszonkénti polinomiális interpoláció. Legyen

a = x0 < x1 < · · · < xn−1 < xn = b,

hi := xi+1 − xi , h := max hi , 0≤i≤n−1

az intervallum felosztása szakaszokra. Ha csak az {f (xi )}ni=0 függvényértékek állnak a rendelkezésünkre, akkor minden [xi−1 , xi ] szakaszra készítjük az Li,1 els®fokú Lagrange-interpolációt. Így kapjuk a töröttvonal-interpolációt. (6.27) alapján ennek hibája

|f (x) − Li1 (x)| ≤

M2 2 · h , x ∈ [xi−1 , xi ], 2

(6.32)

ha f kétszer folytonosan deriválható az [a, b] intervallumon. Amennyiben magasabbrend¶ interpolációt akarunk kapni, xi−1 -ben és xi ben megfelel® számban kell deriváltak értékeivel rendelkeznünk. Ezekb®l a szakaszonkénti Hermite-interpolációt szerkeszthetjük. El®nyös a minden szakaszon páratlan, mondjuk (2p + 1)-edfokú Hermiteinterpoláció, amelyhez úgy jutunk, hogy minden xi pontban az f függvény értékét és els® p deriváltját adjuk meg. Ennek eredménye legyen Hi,2p+1 , i = 1, . . . , n.

© Stoyan Gisbert

© Typotex Kiadó

128

FEJEZET 6. INTERPOLÁCIÓ

Ekkor a (6.31) becslés azt mutatja, hogy a rögzített m = 2p + 2 mellett egyre kisebb (h hosszúságú) részintervallumok esetén nincs problémánk azzal, hogy tetsz®legesen kicsi legyen az f és az interpoláció közötti eltérés:

|f (x) − Hi,2p+1 (x)| ≤

M2p+2 · h2p+2 , x ∈ [xi−1 , xi ]. (2p + 2)!

Tehát h-ban (2p + 2)-edrend¶ lesz ezen szakaszonkénti Hermite-féle interpoláció hibája. A Hi,2p+1 interpolációk minden i-re vett összessége olyan függvényt deniál az [a, b] intervallumon, amelynek els® p deriváltja folytonos lesz, de a p + 1-edik deriváltja általában már nem folytonos. Példa: Legyen p = 1, azaz minden i-re megadjuk f (xi )-t és f 0 (xi )-t. Ezekb®l az értékekb®l szakaszonként a Hi,3 (x) harmadfokú Hermite-féle interpolációkat konstruálhatjuk. Az el®z®ek szerint ezeknek hibája O(h4 ) lesz, ha f négyszer folytonosan dierenciálható az [a, b] intervallumon. Viszont van még egy másik ötlet is a szakaszonkénti polinomiális interpolációra, amely csupán függvényértékeket használ, de ennek ellenére is azonos fokszámra több dierenciálhatóságot kínál, mint a szakaszonkénti Hermiteinterpoláció: Az egész [a, b] intervallumra egyszerre készítjük a szakaszonkénti interpolációt, amely g -edfokú lesz minden egyes [xi−1 , xi ] szakaszban. Mivel n szakaszunk van, (g + 1)n szabad paraméterrel rendelkezünk. Minden alappontban követeljük az interpolációs feltételeket (ez n + 1 egyenlet), valamint minden bels® pontban (x1 , . . . , xn−1 ) azokat a feltételeket, hogy a szakaszonkénti interpoláció és els® d deriváltja folytonos legyen (ez összesen (d + 1)(n − 1) egyenlet). Mind ezek a feltételek lineáris egyenletekre vezetnek (amire visszatérünk). A összes lineáris egyenlet rendszerének megoldhatósága érdekében szükséges, hogy ne legyen kevesebb szabad paraméter, mint feltétel, azaz

(g + 1)n ≥ n + 1 + (d + 1)(n − 1) = (d + 2)n − d. Ezen egyenl®tlenség legkézenfekv®bb megoldása d = g − 1. Ekkor még d-vel több szabad paraméter van, mint ahány feltétel, így lehet®ség marad d további feltételre. Ezeket célszer¶ az x0 és xn perempontok-ban felhasználni. Most nézzünk két példát arra, hogy a folytonosság követelése mit jelent. Legyen g = 3, ekkor az i-edik kiszámítandó polinomot a (i)

(i)

(i)

(i)

(i)

p3 (x) := a3 x3 + a2 x2 + a1 x + a0 , x ∈ [xi−1 , xi ], 1 ≤ i ≤ n, (i)

(i+1)

alakban keressük. Ezután nem a p3 (xi ) = p3 (xi ) folytonossági feltételeket írjuk fel a bels® xi pontokban (1 ≤ i ≤ n − 1), hanem minden [xi−1 , xi ] szakaszra (1 ≤ i ≤ n) az interpolációs feltételeket: (i)

(i)

(i)

(i)

(i)

(i)

(i)

(i)

f (xi−1 ) = a3 x3i−1 +a2 x2i−1 +a1 xi−1 +a0 , f (xi ) = a3 x3i +a2 x2i +a1 xi +a0 .

© Stoyan Gisbert

© Typotex Kiadó

6.4. A SZAKASZONKÉNTI POLINOMIÁLIS INTERPOLÁCIÓ

129

(Ez 2n feltétel és ugyanannyit ér, mint az n + 1 interpolációs feltétel és az n−1 folytonossági feltétel.) Az együtthatókra nézve ezek lineáris egyenletek, de olyanok, amelyek a két szomszédos i-edik és i+1-edik szakasz együtthatóit nem kötik össze. Az els® deriváltnak a folytonossága viszont azt jelenti, hogy (i)

(i+1) 0

(p3 )0 (xi ) = (p3

) (xi ), 1 ≤ i ≤ n − 1,

ill., kifejtett alakban: (i)

(i)

(i)

(i+1) 2 xi

3a3 x2i + 2a2 xi + a1 = 3a3

(i+1)

+ 2a2

(i+1)

xi + a1

.

Ezek megint lineáris feltételek az ismeretlen együtthatókra, de most olyanok, amelyek az egyes szakaszok között kapcsolatokat teremtenek. Ez a spline-interpoláció. Alapötlete tehát az, hogy a függvényértékek megadása után nem deriváltak el®írásával hozzuk létre a szakaszonkénti magasabbfokú interpolációt, hanem folytonossági követelményekkel teszünk szert megfelel® számú feltételre. A spline-interpolációnál még a g − 1 = d-edik derivált is folytonos lesz, és g > 1 esetén a szabad paraméterek meghatározásához speciális egyenletrendszert kell megoldani. A lineáris rendszer mérete (g + 1)n lesz, de soronként kevés nemnulla együtthatója van, és az derül ki, hogy a rendszer megoldása végül is az n-ben lineáris m¶veletigénnyel állítható el®. A töröttvonal interpolációt is ideszámíthatjuk (g = 1, d = 0). Egyszer¶sége mellett további el®nye, hogy megtartja a nemnegativitást, a konvexitást is. Els®fokú spline-interpolációnak is hívhatjuk. Közkedvelt a harmadfokú spline-interpoláció, g = 3. Ekkor d = 2, azaz marad 2 feltétel. Egyet-egyet x0 -ban és xn -ben használhatunk fel. A harmadfokú spline-interpolációhoz tartozó lineáris rendszer tridiagonális alakra hozható, ha szakaszonként olyan Hermite-interpolációs feladatból indulunk ki, amelynek mindkét alappontja kétszeres: az adatai (xi−1 , fi−1 , yi−1 ), (xi , fi , yi ) alakúak, ahol az (ismeretlen) yi együtthatók a deriváltértékeknek felelnek meg. Ezáltal már biztosított, hogy ez a szakaszonkénti Hermite-interpoláció és els® deriváltja folytonos legyen az egész [a, b] intervallumon. De az yi ket úgy választhatjuk meg egyértelm¶en, hogy a szakaszonkénti interpoláció második deriváltja is folytonos legyen. Ez a követelmény adja ugyanis a következ® egyenleteket:

y0 = f 0 (x0 ), i = 1, 2, . . . , n − 1 : hi yi−1 + 2(hi + hi−1 )yi + hi−1 yi+1 = 3{hi [xi−1 , xi ]f + hi−1 [xi , xi+1 ]f }, yn = f 0 (xn ),

© Stoyan Gisbert

© Typotex Kiadó

130

FEJEZET 6. INTERPOLÁCIÓ

és ez a rendszer megoldható a (3.39)(3.41) algoritmussal, mert a (3.37)(3.38) feltételei teljesülnek. Ha az f 0 (x0 ), f 0 (xn ) értékek nem állnak rendelkezésünkre, akkor az els® ill. utolsó négy alapponthoz a (legfeljebb harmadfokú) Lagrange-interpolációt számítjuk ki, majd ezt lederiválva és x = x0 -t, ill. x = xn -t behelyettesítve kapjuk az y0 , ill. yn kifejezését az els®, ill. utolsó négy függvényérték segítségével. Az így kiszámított szakaszonkénti polinomiális függvénynek, a splinenak konstrukció szerint tehát még a második deriváltja is folytonos lesz, de a szakaszonkénti harmadfokú Hermite-interpolációnak a második deriváltja legtöbbször szakadásos. Általában a szakaszonkénti 2p + 1-edfokú Hermite-interpolációnak a pedik deriváltja folytonos, míg egy g = 2p + 1-edfokú spline-interpolációnak még a g − 1 = 2p-edik deriváltja is folytonos.

6.5. Feladatok 1. Milyen interpolációs polinom illeszkedik a következ® adatokra: (0,0), (1,1), (2,8), (3,27) ? 2. Határozzuk meg azt a Lagrange-féle interpolációs polinomot, amely illeszkedik a következ® adatokra: (0,4), (2,24), (3,79), (-2,-16), (1,5) 3. Oldjuk meg a következ® Lagrange-féle interpolációs feladatot: (-1,-5), (2,25), (3,215), (0,-1), (-2,45). Az interpolációs polinom kiszámítása után tegyük hozzá még ezt az adatot is: (-3,305) ! 4. Hány m¶veletbe kerül a (6.16) Newton-féle polinom együtthatóinak kiszámítása, ha (6.15) alapján dolgozunk, a közbüls® Newton-interpolációk behelyettesítési értékeit az általánosított Horner-sémával kapjuk meg és az ωk -k behelyettesítési értékeit a (6.14) deníciónak megfelel®en? 5. Oldjuk meg a következ® Lagrange-féle interpolációs feladatot: (-1,10), (0,1), (1,-2), (2,-23). Amikor ez sikerült, írjuk még el® x = 2-ben az 1 deriváltértéket és számítsuk ki a megfelel® Hermite-interpolációt!

© Stoyan Gisbert

© Typotex Kiadó

6.5. FELADATOK

131

6. Melyik Hermite-féle interpolációs polinom illeszkedik a következ® adatokra: (1,4), (3,8,0), (4,6), (7,2) ? 7. Határozzuk meg azt az Hermite-féle interpolációs polinomot, amely illeszkedik a következ® adatokra: (0,0,0), (1,1,3,6). 8. Adottak a következ® n0 , . . . , n5 számok, mint egy végtelen {ni } sorozat néhány els® tagja: 1,3,1,19,105,331 Hogyan folytatódhat a sorozat? 9. Javítsuk a töröttvonal interpoláció (6.32)-ben adott hibabecslését a következ®képpen: Írjuk fel (6.25)-öt arra az esetre, hogy csak 2 interpolációs alappont van, xi−1 és xi . Ezután a hozzátartozó ω2,i (x) := (x − xi−1 )(x − xi ) polinom abszolútértékének maximumát határozzuk meg [xi−1 , xi ]-ben és fejezzük ki hi−1 := xi −xi−1 segítségével. Végül |f 00 (ζ2 (x))|-et becsüljük felülr®l M2 -vel. ¤´»

© Stoyan Gisbert

© Typotex Kiadó

7. fejezet Nemlineáris egyenletek és egyenletrendszerek 1. Legyen a 6= 0. A p(x) := ax2 + bx + c másodfokú polinom gyökeinek képletét ismerjük: p(x) = 0, ha x = x1,2 =

o √ 1 n −b ± b2 − 4ac . 2a

A harmadfokú (és annál inkább a negyedfokú) polinom gyökeinek képlete már igen bonyolult lehet, ld. a példát a 86. oldalon. Ötödfokú polinomok esetén nem garantált, hogy gyökeit véges sok gyökjellel ki lehet fejezni. Ekkor csak numerikus módszerek segítségével tudunk közelít® eredményt elérni.

2. Már a 4. fejezetben foglalkoztunk többváltozós függvények parciális

deriváltjaival. Ez a téma a nemlineáris egyenletek megoldása kapcsán újra fontos. Legyen például f (x, y) = x · sin y + cos(x · y). Ekkor

∂f (x, y) ∂f (x, y) = sin y − sin(x · y) · y, = x · cos y − sin(x · y) · x. ∂x ∂y

A természettudományos, technológiai vagy gazdasági folyamatok matematikai modelljei gyakran nem lineárisak. Nemlineáris feladatok a matematikán belül is merülnek fel, ilyen pl. egy általánosabb függvény (akár egy magasabb fokszámú polinom) gyökeinek meghatározása. Mint ahogyan már a polinomok esete is mutatja: a nemlineáris egyenleteknek gyakran nem egyetlen egy gyöke van. És nem ritka 133

© Stoyan Gisbert

© Typotex Kiadó

134

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

eset, hogy az üggyel-bajjal kiszámított megoldásunkra azt mondja a felhasználó, hogy ez neki nem kell, próbáljunk mást találni.

7.1. Felezési módszer, egyszer¶ iterációk Legyen adott az f : IR → IR függvény; tegyük fel, hogy ez folytonos az [a, b] intervallumon, b > a. Amennyiben a és b között f -ben el®jelváltás következik be, pl. f (a) < 0, f (b) > 0, akkor az

f (x) = 0

(7.1)

egyenletnek van gyöke (a, b)-ben. Az ilyen gyököt eléggé hatékonyan határozhatjuk meg a felezési algoritmus sal: Adott az ε pontosság és a felezések maximális száma maxit, feltesszük, hogy érvényes az f (a) · f (b) < 0 egyenl®tlenség. 1. m := 0, δm := |b − a|, xm := a, ym := b 2. zm := 21 (xm + ym ) 3. ? f (xm ) · f (zm ) < 0 ? [xm+1 := xm , ym+1 := zm , → 6.] 4. ? f (zm ) · f (ym ) < 0 ? [xm+1 := zm , ym+1 := ym , → 6.] 5. stop [eredmények: zm , f (zm )] 6. m := m + 1, δm := δm−1 /2 7. ? m = maxit ? [stop, információ: m, zm , f (zm ), δm ] 8. ? δm > 2ε (1 + |xm | + |ym |)? [→ 2.] 9. stop [eredmények: m, 21 (xm + ym ), f ( 21 (xm + ym )), δm ] Ezen algoritmus 8. lépésében vegyes leállási kritériumot írtunk le: kicsi |xm | + |ym | érték esetén ε az abszolút pontosság ellen®rzésére szolgál, nagy értéknél viszont relatív pontosságot biztosít. A fenti algoritmus gyenge pontja a kiindulási helyzet megteremtése. Azt tehetjük, hogy kiválasztunk több pontot az [a, b] intervallumban, mindegyikben kiszámítjuk a függvényt és az el®jelváltási helyeket megkeressük. Vagy a képerny®re kivetíthetjük az f (x) grakonját, és ott olvassuk le a gyököket; az ezután hívott gyökmeghatározási eljárás mindössze a leolvasott érték pontosítását szolgálja. A módszer másik hátránya, hogy akkor is csak folyamatosan közelít a megoldáshoz, amikor f az x lineáris függvénye, tehát amikor a direkt megoldás azonnal elkészíthet® lenne. A felezési algoritmus minden lépésében az (xm , ym ) bizonytalansági intervallumot a felére csökkentjük. Tehát m lépés után annak hossza δm = |b − a| · 2−m , vagyis az 2ε (1 + |a| + |b|) pontosság eléréséhez szükséges lépésszám logaritmikusan függ ε-tól.

© Stoyan Gisbert

© Typotex Kiadó

7.1. FELEZÉSI MÓDSZER, EGYSZER– ITERÁCIÓK

135

Legyen most f : IRn → IRn , tehát f is vektor és x argumentuma is vektor. Az f (x) = 0 egyenletrendszer megoldásait ekkor pl. mint az x → g(x) := x − ωf (x) leképezés xpontjai t foghatjuk fel, ahol ω 6= 0 alkalmasan kiválasztott paraméter. A "xpont" szó arra utal, hogy a g leképezés alatt változatlan marad az ilyen pont: g(x) = x. Ha ez teljesül, akkor x = g(x) = x − ωf (x), azaz f (x) = 0. Ilyen xpont feladatok megoldhatóságáról ismert xpont tételek szólnak, amelyekre példa a Banach-féle xpont tétel. Ez a tétel a számunkra érdekes IRn -ben is érvényes: Amennyiben valamilyen normában teljesül

kg(x) − g(y)k ≤ qkx − yk minden x, y ∈ IRn -re,

(7.2)

és itt 0 ≤ q < 1, akkor a g(x) = x egyenlet megoldását kapjuk az

k = 0, 1, . . . : x(k+1) = g(x(k) ) = x(k) − ωf (x(k) )

(7.3)

iteráció segítségével, tetsz®leges x(0) kezdetivektorból kiindulva: az {x(k) }∞ k=0 sorozat konvergál az egyenlet megoldásához, tehát x(k) egyre közelebb kerül az x∗ -gal jelölt megoldáshoz  és megoldás ilyenkor létezik és csak egy lehet. A fenti iteráció el®nye, hogy csak behelyettesítést követel. Neve egyszer¶ vagy xpont iteráció. A (7.2) feltétel egy folytonossági tulajdonságot jelent. Ha alkalmas L konstanssal érvényes

kg(x) − g(y)k ≤ Lkx − yk minden x, y ∈ IRn -re, akkor azt mondjuk, hogy g Lipschitz-folytonos és L a Lipschitz-állandója. Eszerint a Banach-féle xpont tétel azt követeli, hogy a g Lipschitz-állandója egynél kisebb legyen: L = q < 1. Példa: Legyen n = 1 és x 6= y . Ekkor a középérték tétel szerint

g(x) − g(y) = g 0 (y + θ · (x − y)), θ = θ(x, y) ∈ (0, 1), x−y így g(x) = x − ωf (x) miatt g 0 (x) = 1 − ωf 0 (x) és

g(x) − g(y) = g 0 (y + θ · (x − y))(x − y) = (1 − ωf 0 (y + θ · (x − y))) (x − y). Most legyen ismert, hogy f els® deriváltja nem vált el®jelet és korlátos, pl.

0 < m1 ≤ f 0 (x) ≤ M1 minden x-re.

(7.4)

© Stoyan Gisbert

© Typotex Kiadó

136

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

Ekkor ω -t pozitívnak választva

1 − ωM1 ≤ 1 − ωf 0 (y + θ · (x − y)) ≤ 1 − ωm1 < 1 lesz. Így elegend® az, hogy

ω ∈ (0,

1 2 ), pl. ω = M1 M1

(7.5)

legyen, mert akkor

−1 < 1 − ωM1 ≤ 1 − ωf 0 (y + θ(x − y) ≤ 1 − ωm1 < 1 és a xpont iteráció konvergál: teljesül (7.2), ahol ekkor

q = max (|1 − ωm1 | , |1 − ωM1 |) < 1. Az egyszer¶ iteráció konvergenciáját lineáris nak nevezzük és a konvergenciarend je 1, mert a hiba (az x∗ pontos megoldás és x(k) közelítésünk eltérése) minden lépésben az el®z® hibának legalább q -ad részére csökken: Kivonva a két x∗ = g(x∗ ), x(k) = g(x(k−1) ) relációt egymásból, kapjuk x∗ − x(k) = g(x∗ ) − g(x(k−1) ), tehát

|x∗ − x(k) | ≤ q|x∗ − x(k−1) |,

(7.6)

(7.2) alapján. A felezési algoritmus is lineárisan konvergál, és gyakran gyorsabb a xpont iterációnál (ha q > 21 ). Viszont a xpont iteráció nem tételezi fel az információt az el®jelváltásról, és tetsz®leges kezdetivektorral konvergál. Ez utóbbi fontos tulajdonságot a nemlineáris egyenletekkel kapcsolatban szokás úgy említeni, hogy a módszer globálisan konvergens.

7.2. A Newton-módszer Legyen n = 1: a nemlineáris rendszerekkel kés®bb foglalkozunk. A Newton-módszert akkor kapjuk, ha a (7.1) egyenlet gyökének x(0) közelítéséb®l kiindulva olyan δx javítást szándékozunk meghatározni, hogy x(0) + δx már gyök legyen. Ilyenkor f (x) kétszeres folytonos dierenciálhatóságát feltételezve, a hibatagos Taylor-polinom a

0 = f (x(0) + δx) = f (x(0) ) + f 0 (x(0) )δx +

δx2 00 (0) f (x + θδx) 2

(7.7)

© Stoyan Gisbert

© Typotex Kiadó

7.2. A NEWTON-MÓDSZER

137

egyenl®séget adja. A másodrend¶ tag elhanyagolása után, x(1) := x(0) + δx jelöléssel, a 0 = f (x(0) ) + f 0 (x(0) )(x(1) − x(0) ) (7.8) egyenletet kapjuk. Az elhanyagolás miatt most már nem biztos, hogy ez az x(1) az f gyöke lesz, de azt reméljük, hogy jobban közelíti a gyököt, mint x(0) . Amennyiben f 0 (x(0) ) 6= 0, akkor (7.8)-ból kiszámíthatjuk x(1) -et:

x(1) = x(0) −

f (x(0) ) . f 0 (x(0) )

(7.9)

Folytatva értelemszer¶en, a következ® alapvet® iterációs eljárás keletkezik:

x(0) adott, k = 0, 1, · · · : x(k+1) = x(k) −

f (x(k) ) . f 0 (x(k) )

(7.10)

Ez a Newton-módszer. Tudnivaló a Newton-módszernek egy másik levezetése is: Helyettesítsük az f függvényt lokálisan, x(0) környezetében, az érint®jével! Az érint®je x(0) -ban az f (x(0) ) függvényértéket veszi fel, meredeksége f 0 (x(0) )  ami egy Hermiteféle interpolációs feladat. Ennek megoldása már a gimnáziumból ismert:

y = f (x(0) ) + f 0 (x(0) )(x − x(0) ). Most ezen egyenes x(1) gyökét vesszük mint f gyökének jobb közelítését (ld. a 7.1 ábrát):

0 = f (x(0) ) + f 0 (x(0) )(x − x(0) ) ⇒ 0 = f (x(0) ) + f 0 (x(0) )(x(1) − x(0) ) ⇒ (7.9). Végül azt is mondhatjuk, hogy a Newton-módszer olyan egyszer¶ iteráció, amelyhez ω -t a k -adik lépésben x függvényében f 0 (x1(k) ) -nak választjuk, v.ö. (7.2)-vel és (7.5)-tel. A Newton-módszer konvergenciáját biztosítják az alábbi (elégséges) feltételek: 1. Legyen f kétszer folytonosan dierenciálható; 2. els® deriváltjára legyen igaz |f 0 (x)| ≥ m1 > 0; 3. második deriváltjára teljesüljön |f 00 (x)| ≤ M2 ; 4. az x(0) kiindulási közelítés legyen elég közel az x∗ gyökhöz:

|x(0) − x∗ |
0 és valamilyen x-re f (x) > 0 (ill. f (x) < 0), akkor visszafelé (ill. el®re) menve jutunk az egyetlen gyökhöz. De a harmadik és negyedik feltétel haszna egyel®re nem látszik. Legyen most fk := f (x(k) ), fk0 := f 0 (x(k) ), f∗ := f (x∗ ) = 0. Ekkor (7.10) alapján

fk fk0 f∗ − fk − fk0 (x∗ − x(k) ) = . fk0

x(k+1) − x∗ = x(k) − x∗ − = x(k) − x∗ −

fk − f∗ fk0

(7.12) (7.13)

A számlálóban álló kifejezést a 6. fejezetben tanultak segítségével alakíthatjuk át. Ehhez tekintjük azt az Hermite-féle interpolációs feladatot, hogy adott (x(k) , fk , fk0 ) és keressük az ezeket interpoláló legfeljebb els®fokú polinomot. Ennek megoldása

H1 (x) := fk + fk0 · (x − x(k) ), hibaképlete f (x) = H1 (x) + (x − x(k) )2

f 00 (ζ2 (x)) , 2

© Stoyan Gisbert

© Typotex Kiadó

7.2. A NEWTON-MÓDSZER

139

ld. (6.30). Behelyettesítve x = x∗ -ot, kapjuk f (x∗ ) = f∗ kívánt képletét:

f∗ = fk + fk0 (x∗ − x(k) ) + (x∗ − x(k) )2

f 00 (ζ2 (x∗ )) . 2

Ezzel folytathatjuk (7.13)-t:

x

(k+1)

(x∗ − x(k) )2 00 f∗ − fk − fk0 (x∗ − x(k) ) = f (ζ2 (x∗ )). −x = 0 0 fk 2fk ∗

(7.14)

Innen és a második és harmadik feltételb®l kapjuk, hogy

|x(k+1) − x∗ | ≤ C|x(k) − x∗ |2 , C :=

M2 . 2m1

(7.15)

Ez az eredmény minden k -ra, így k = 0-ra is igaz. Utóbbi esetben a negyedik feltétel alapján q := C|x(0) − x∗ | < 1, és ezzel következik

C|x(1) − x∗ | ≤ C 2 |x(0) − x∗ |2 = q 2 ≤ q < 1. Vagyis: az x(0) azon tulajdonsága, hogy C|x(0) − x∗ | ≤ q < 1, az tovább örökl®dött x(1) -re. Hasonlóan minden k -ra igaz C|x(k) − x∗ | ≤ q < 1. Akkor viszont (7.15)-tel együtt igaz

|x(k+1) − x∗ | ≤ q|x(k) − x∗ |, 0 ≤ q < 1. Ennek alapján

|x(k+1) − x∗ | ≤ q|x(k) − x∗ | ≤ q 2 |x(k−1) − x∗ | ≤ · · · ≤ q k+1 |x(0) − x∗ | → 0, (7.16) amikor k → ∞. De ez a konvergenciát jelenti. Bevezetve az εk := C|x(k) − x∗ | hibamennyiségeket, a pontosabb vizsgálat azt adja, hogy k εk ≤ ε20 , k ≥ 0. (7.17) Ez a kifejezés jobban mutatja, mennyire gyors a konvergencia, ha teljesül ε0 ≤ q < 1. A fenti 4 feltétel mellett csak egy gyök lehetséges, de általában több gyöke van f -nek. Ekkor a feltételek csak lokálisan kell, hogy teljesüljenek: a mindenkori x∗ gyöknek olyan környezetében, amely tartalmazza (7.19) által meghatározott intervallumot. Nézzünk néhány példát!

© Stoyan Gisbert

© Typotex Kiadó

140

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

1. Legyen f (x) = x3 − 2x − 5. Egy valós gyöke van f -nek, ld. 86. o. Mivel f (2) = −1, f (3) = 16, vegyük az x(0) = 2 kezdetiértéket. Összehasonlítás céljából a (7.3) iterációt is használjuk, ahol (7.5)-nek megfelel®en az 1 paramétert vesszük, mert a [2, 3] intervallumon a (7.4) korlátok ω = 25 m1 = 10, M1 = 25. A következ® x(k) közelítéseket kapjuk (sok számjeggyel számítva): Newton-módszer

egyszer¶ iteráció

x(0)

x(0) = 2

=2

x(1) = 2.1

x(1) = 2.04

x(2) = 2.094568...

x(2) = 2.06361...

x(3) = 2.09455148169...

x(3) = 2.07718...

x(4) = 2.094551481542326591496...

x(4) = 2.08486...

x(5) = 2.09455148154232659148238654057930296385741... x(5) = 2.08916...

Ezek az eredmények els®sorban a (7.15) becslést szemléltetik: a becslés jobb oldalán álló négyzet miatt négyzetes konvergenciá ról beszélünk ilyenkor, illetve azt mondjuk, hogy a Newton-módszer konvergenciarendje 2, és ezen négyzet hatása a fent aláhúzott helyes számjegyek számának minden lépésben történ® kétszerezésében tükröz®dik. Emiatt a gyors konvergencia miatt a Newton-módszer igen népszer¶  de gyakran a munka nagy része a megfelel® kezdetiérték megszerzésére megy rá. Közben az eredmények az egyszer¶ iteráció lineáris konvergenciáját is szemléltetik, ld. a (7.6) becslést. Itt 10 (ill. 20) iteráció után 3 (ill. 5) helyes számjegy van a vessz® után. 2. Legyen f (x) = x3 − x. Ekkor van két olyan kezdetiérték, amellyel beindítva a Newton-módszert az végtelen ciklusba kerül (ld. a 7.1 ábrán a vonalkázott parallelogramma jobb és bal sarokpontját az x-tenge√ lyen): ha x(0) = ± 55 , akkor x(1) = −x(0) lesz, így x(2) = x(0) stb. Ugyanis ekkor f (x(0) ) = − 54 x(0) , f 0 (x(0) ) = − 52 , és emiatt x(1) = x(0) − f (x(0) ) f 0 (x(0) )

= x(0) − 2x(0) , ld. (7.9). √



Ha viszont − 55 < x(0) < 55 , akkor ellen®rizni lehet, hogy a 7.1 ábra vonalkázott parallelogrammáján belül maradunk, s®t az {x(k) }∞ k=0 sorozat nullához tart, vagyis a gyökhöz. √



Ugyanakkor a [− 55 , 55 ] intervallumban érvényes −1 ≤ f 0 (x) ≤ − 52 és |f 00 (x)| ≤ √65 , tehát a (7.19) feltételünk szerint a konvergencia ga-

© Stoyan Gisbert

© Typotex Kiadó

7.2. A NEWTON-MÓDSZER rantálható, ha |x(0) |
1 ! Ekkor f (x(0) ) > 0, f 0 (x(0) ) > 0, tehát x(1) < x(0) , ld. (7.9). De ilyenkor f 00 (x(0) ) > 0 miatt az érint® a görbe alatt van (ld. (7.7) is), ami azt is jelenti, hogy az érint® gyöke jobbra lesz 1-t®l. Összefoglalva 1 < x(1) < x(0) , ld. a 7.1 ábra jobb szélét is. A továbbiakban is teljesül 1 < x(k+1) < x(k) . Vagyis, ekkor a konvergencia monoton (folyamatosan közeledünk jobbról a gyök felé), és nincs szükség a (7.19) feltételre, vagy arra, hogy a most végtelen [1, ∞) intervallumon legyen pl. |f 00 (x)| ≤ M2 . Mivel a függvény páratlan, x(0) ∈ (−∞, −1] esetén is monoton a konvergencia (folyamatosan közeledünk balról a gyök felé).

Foglaljuk össze: A nemlineáris egyenletek megoldásának alapvet® eszköze a Newton-módszer. Ennek képlete: x(0) adott, k = 0, 1, · · · : x(k+1) = x(k) −

f (x(k) ) . f 0 (x(k) )

(7.18)

A Newton-módszer nem konvergál mindig. A következ® feltételek garantálják a konvergenciát: 1. Legyen f kétszer folytonosan dierenciálható; 2. els® deriváltjára legyen igaz |f 0 (x)| ≥ m1 > 0; 3. második deriváltjára teljesüljön |f 00 (x)| ≤ M2 ; 4. az x(0) kiindulási közelítés legyen elég közel az x∗ gyökhöz:

|x(0) − x∗ |
1 esetén azt mutatja, hogy a Newton-módszer csak els® rendben, vagyis lineárisan konvergens.

© Stoyan Gisbert

© Typotex Kiadó

7.2. A NEWTON-MÓDSZER

143

Ha t ismert, akkor a Newton-eljárás következ® módosítása biztosítja megint a négyzetes konvergenciát: (k+1)

x0 adott, x

=x

(k)

f (x(k) ) − t 0 (k) , k = 0, 1, . . . . (f (x ))

(7.21)

(k)

) Newton-lépést hosszabbítani (7.21)-ben tehát az eredeti δx(k) = − (ff0(x (x(k) ))

kellett ahhoz, hogy javuljon a konvergencia. Általános esetben viszont nem el®nyös a lépés növelése, ellenkez®leg, ajánlatos a kicsinyítése: A lokális (de gyors) konvergencia ugyanis globálisra (de lassúra) változtatható, ha (7.21)-ben t nem egész, hanem elég kicsi pozitív szám. Ilyen t-t nyilván csak akkor fogunk választani, ha probléma van, egyébként arra törekszünk, hogy leggyakrabban t = 1 legyen. Ezt az eljárást, (7.21) kiegészítve egy t-választási stratégiával, csillapított Newton-módszer nek hívjuk. Ennek algoritmusát a 7.3.1 pontban adjuk meg rendszerek esetére.

7.2.2. A szel®módszer A Newton-módszer alkalmazásának egyik gondja a derivált kiszámítása. Általában a legegyszer¶bb az, ha a deriváltat dierenciaképlettel helyettesítjük, tehát:

f 0 (x(k) ) ≈

f (x(k) + h) − f (x(k) ) =: Ak . h

(7.22)

Ezután (7.10) helyett az iteráció: (0)

adott x , x

(k+1)

=x

(k)

f (x(k) ) , m = 0, 1, . . . . − Ak

A bíztató itt az, hogyha ez az iteráció konvergál, akkor csakis f -nek egy gyökéhez tud konvergálni: Ha ugyanis x(k) → x(∞) , Ak → A∞ 6= 0, k → ∞, akkor érvényes

x

(∞)

=x

(∞)

f (x(∞) ) , tehát f (x(∞) ) = 0. − A∞

Amennyiben korábbi feltételünk teljesül és f kétszer folytonosan differenciálható, akkor a dierenciaképlet els® renddel approximálja a deriváltat,

1 |f 0 (x(k) ) − Ak | ≤ M2 |h|, M2 := max |f 00 (x)|. [a,b] 2

© Stoyan Gisbert

© Typotex Kiadó

144

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

y

1,5

1

0,5

0 -1

-0,5

0

0,5

x21 x1

x0 x

7.2. ábra. A szel®módszer szemléltetése: 2 szel® Ezenkívül, mivel a középérték tétel szerint Ak = f 0 (x(k) +ϑk h), a 2. feltételb®l következik |Ak | ≥ m1 > 0. A kézenfekv® lehet®ség az, hogy az [x(k−1) , x(k) ]f osztott dierenciát alkalmazzuk Ak gyanánt. Ez azért el®nyös, mert ebben az esetben nincs szükség külön f -érték kiszámítására:

x(0) és x(1) 6= x(0) adott, x(k+1) = x(k) −

f (x(k) ) , k = 1, 2, . . . . [x(k−1) , x(k) ]f

Szel®módszer nek hívjuk ezt az eljárást, ld. a 7.2 ábrát. Konvergenciáját vizsgáljuk úgy, mint a Newton-módszer esetén. Esetünkben (v.ö. (7.12)-vel)

fk − f∗ [x(k−1) , x(k) ]f f∗ − fk − [x(k−1) , x(k) ]f · (x∗ − x(k) ) . = [x(k−1) , x(k) ]f

x(k+1) − x∗ = x(k) − x∗ −

(7.23)

A számlálóban álló kifejezést most azon Lagrange-féle interpolációs feladat segítségével alakíthatjuk át, hogy adott (x(k−1) , fk−1 ) és (x(k) , fk ) és keresett az ezeket interpoláló legfeljebb els®fokú polinom:

L1 (x) = fk + [x(k−1) , x(k) ]f · (x − x(k) ).

© Stoyan Gisbert

© Typotex Kiadó

7.2. A NEWTON-MÓDSZER

145

Ennek hibaképlete

f (x) = L1 (x) +

f 00 (ζ2 (x)) (x − x(k) )(x − x(k−1) ), 2

ld. (6.25). Itt behelyettesítve x = x∗ -ot, kapjuk f (x∗ ) = f∗ kifejezését:

f∗ = fk + [x(k−1) , x(k) ]f · (x∗ − x(k) ) + (x∗ − x(k) )(x∗ − x(k−1) )

f 00 (ζ2 (x∗ )) . 2

Ezzel folytathatjuk (7.23)-t:

x(k+1) − x∗ =

(x∗ − x(k) )(x∗ − x(k−1) ) 00 f (ζ2 (x∗ )). (k−1) (k) 2[x , x ]f

Ezután a Newton-módszer második és harmadik konvergencia-feltételéb®l következik, hogy

|x(k+1) − x∗ | ≤ C|x(k) − x∗ ||x(k−1) − x∗ |, C :=

M2 . 2m1

Bevezetve az εk := C|x(k) −x∗ | hibamennyiségeket, az eredményünket röviden az εk+1 ≤ εk εk−1 alakban írhatjuk. Ha teljesül ε1 ≤ q < 1 és ε0 ≤ q < 1, akkor ε2 ≤ q 2 ≤ q < 1 következik és hasonlóan εk ≤ q < 1 minden k -ra. Visszatérve az εk+1 ≤ εk εk−1 egyenl®tlenséghez, kapjuk, hogy igaz εk+1 ≤ qεk , ami a konvergenciát jelenti úgy, mint a Newton-módszer esetén. A szel®módszer konvergencia feltételei tehát ugyanazok, mint a Newtonmódszer esetén, azzal az egy különbséggel, hogy most (7.19) mellett még a 1 feltételt is meg kell követelni. |x(1) − x∗ | < 2m M2 Ha mindkét feltétel teljesül, akkor δ := max(ε0 , ε1 ) ≤ q < 1, és ekkor bizonyítható, hogy k εk+1 ≤ δ κ , k ≥ −1, √ ahol κ := 21 (1 + 5) ≈ 1.618 . . . , az aranymetszetb®l ismert szám, a szel®módszer konvergenciarendje. A Newton-módszernek az ehhez hasonló (7.17) becslésében δ helyett ε0 áll és κ helyett 2. Tisztázzuk, vajon melyik módszer vezet gyorsabban egyenl® pontosságú eredményre? Ehhez vegyük gyelembe, hogy a Newton-módszer lépésenként egy függk−1 vényértéket és egy deriváltértéket követel és ezzel az el®z® ε20 hibakorlátot 2k ε0 -ra csökkenti. Közben a szel®módszer csak egy függvényértéket használ, k−1 k és ezzel a korábbi hibamértéket δ κ -r®l δ κ -ra csökkenti. Feltehetjük, hogy ε0 és δ egy nagyságrenden vannak, valamint azt, hogy a derivált kiszámítása ugyanannyi id®be kerül, mint a függvényérték. Ekkor egy Newton-lépés alatt

© Stoyan Gisbert

© Typotex Kiadó

146

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

két szel®módszer lépés végezhet® el, és ezalatt el®z®nek a hibakorlátja a 2 hatványkitev®vel, utóbbinak a κ2 hatványkitev®vel kisebb lett, ahol κ2 = 1 + κ ≈ 2.618 · · · > 2. Eszerint a szel®módszer egyértelm¶en gyorsabb - amit a gyakortlati számításnál is lehet tapasztalni. Befejezésül ehhez a ponthoz megjegyezzük, hogy harmadrend¶ módszereket csak n-edfokú polinomok gyökeinek meghatározására szoktak alkalmazni. Ilyen a Müller-módszer, amely abból áll, hogy három egymást követ® {x(k) , f (x(k) )} érték segítségével másodfokú interpolációt készítünk, és annak azon gyökét választjuk következ® közelítésnek, amely a legközelebb van az addig legjobb közelítéshez; ezután továbblépünk.

7.3. Egyenletrendszerek megoldása 7.3.1. A Newton-módszer Miután már az egyszer¶ iteráció kapcsán beszéltünk a nemlineáris egyenletrendszerek megoldásáról, most foglalkozzunk a Newton-módszerrel, amely gyakran hatékonyabb. Legyen tehát f olyan vektorfüggvény, amely az x ∈ IRn oszlopvektort az f (x) ∈ IRn oszlopvektorba képezi. Keresett az f (x) = 0 rendszernek egy megoldása. Példa:

n = 3 : x = (x1 , x2 , x3 )T , f (x) = (f1 (x), f2 (x), f3 (x))T , mégpedig

f1 (x) := −x21 + x3 + 3, f2 (x) := −x1 + 2x22 − x23 − 3, f3 (x) := x2 − 3x23 + 2.

(7.24)

Más szavakkal, a

−x21 + x3 + 3 = 0, −x1 + 2x22 − x23 − 3 = 0, x2 − 3x23 + 2 = 0

(7.25)

rendszert akarjuk megoldani. Kiderül, hogy 8 valós megoldása van, ezek között pl. 1) 2) 3)

x1 = −2.0, x2 = 1.0, x3 = 1.0, (7.26) x1 ≈ 2.030141344, x2 ≈ 1.773110967, x3 ≈ 1.121473876, (7.27) x1 ≈ −1.55175117, x2 ≈ −0.9483653595, x3 ≈ −0.592068307.

© Stoyan Gisbert

© Typotex Kiadó

7.3. EGYENLETRENDSZEREK MEGOLDÁSA

147

250*x^2+x-805*x^4+900*x^6-324*x^8-22 y -1

-0,5

0

0

0,5

1

x

-5

-10

-15

-20

7.3. ábra. A 7.25 rendszer megoldásait meghatározó polinom Ugyanis nem nehéz az egyenleteket egymásba helyettesítve x3 számára egy nyolcadfokú polinomot levezetni (ld. a 7.3 ábrát), amelynek gyökei adják a rendszer megoldásainak 3. koordinátáját, míg a 3. egyenlet adja a megfelel® 2. koordinátát és a 2. egyenlet az els®t. Most olyan általános f függvényt tekintünk, amely kétszer folytonosan dierenciálható. Ekkor formálisan ugyanúgy néz ki a hibatagos Taylorpolinom, mint az n = 1 esetben:

0 = f (x(0) + δx) = f (x(0) ) + f 0 (x(0) )δx + másodrend¶ tagok δx-ben, (7.28) de itt most f 0 valójában egy mátrix, az f vektorfüggvény J(x) Jacobi-mátrix a, azaz ∂fi . f 0 (x) = J(x) := (fij ), fij = ∂xj Vagyis: a Jacobi-mátrix i-edik sorában az fi (x) parciális deriváltjai állnak. A fenti példánk esetén azt kapjuk, hogy   −2x1 0 1 J(x) =  −1 4x2 −2x3  . (7.29) 0 1 −6x3 Elhanyagolva (7.28)-ban a másodrend¶ tagokat és átrendezve a kapott lineáris egyenletet, az x(0) javítását

x(1) = x(0) − (J(x(0) )−1 f (x(0) )

© Stoyan Gisbert

© Typotex Kiadó

148

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

adja, amennyiben J(x(0) ) reguláris. (Ha nem, akkor más x(0) -val próbálkozzunk.) Itt az inverz mátrixot valójában nem számítjuk ki, hanem f®elemválasztásos LU-felbontást készítünk, és ennek segítségével oldjuk meg a

J(x(0) )(x(1) − x(0) ) = −f (x(0) ) rendszert. Tovább javítva az x(1) -et, iterációt nyerünk, amelyet célszer¶ a következ®képpen szervezni:

x(0) adott, k = 0, 1, . . . : J(x(k) )δx(k) = −f (x(k) ),

x(k+1) = x(k) + δx(k) .

Az iteráció konvergenciáját lényegében ugyanaz a 4 feltétel biztosítja, mint az egydimenziós esetben. Például a második és negyedik feltétel alakja most

k(J(x))−1 k ≤ 1/m1 , ill. kx∗ − x(0) k
δx · kJkk∞ /nf k lenne, akkor

t>

δx · kJkk∞ δx δx · kJkk∞ , ≥ = nf k kJkk∞ kyk∞ kyk∞

ahol y az f k = f (x(k) ) = LU y = J(x(k) )y rendszer még ismeretlen megoldása (9. lépés), amelyre viszont mindig igaz

nf k = kf (x(k) )k∞ = kJ(x(k) )yk∞ ≤ kJ(x(k) )k∞ kyk∞ = kJkk∞ kyk∞ . De mivel (a 11. lépésben) t · y -nal fogunk lépni, ez váratlanul nagy, δx választásának ellentmondó lépés lenne: tkyk∞ > δx. A 15. lépésben azért csökkentjük a t paramétert, mert a 12. lépésbeli teszt (leereszkedési kritérium) nem teljesül. Itt azt használjuk, hogy a keresett x∗ gyök egyben az kf (x)k minimumát is kell, hogy adja. Amennyiben ez a kritérium teljesül, akkor a lépés sikeresnek min®sül, és ha ez próbálkozás nélkül megtörtént (` = 1), akkor óvatosan növeljük a t paramétert, míg el nem éri az 1 értéket (14. lépés). Sikertelenségnek vesszük, ha a t túl kicsi lett (8. lépés), vagy csökkentése az `-ciklusban nem hozott eredményt (ld. a 15. lépést)  vagy ha túl nagy az iterációk száma (a k -ciklus befejezése, 16. lépés). A csillapítás segítségével végeredményben a Newton-módszer gyors, de bizonytalan (lokális) konvergenciája lassú, de biztosra (globálisra) változtatható; megfelel® körülmények között viszont a csillapított módszer az eredetibe megy át (azaz t 1 lesz).

© Stoyan Gisbert

© Typotex Kiadó

150

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

Gyakran hasznos, ha a kapott (közelít®) megoldással újra kezdjük az algoritmust. A nemlineáris rendszerek tipikus tulajdonsága az, hogy több megoldása lehet. Emiatt a következ®t érdemes tenni: arra a tartományra, amelyben a gyököket várjuk, ráborítunk egy pontrácsot. Annak minden pontjából, mint kezdetivektorból, indítjuk a fenti algoritmust.

Tesztelési példa a (7.24) rendszer, amelyhez a (7.29) Jacobi-mátrix tar-

tozik. Legyen el®ször ε = 0.0001, δx = 1, maxit = 10, tehát a (7.27) gyök közeléb®l indulunk. Ekkor f (x(0) ) = (0, 2, 1)T , kf (x(0) )k∞ = 2,     −4 0 1 1 0 −4 (0)      0 1 0 J(x ) = −1 8 −2 = LU = 0.25 0 0.125 1 0 0 1 −6

x(0) = (2, 2, 1)T ,  0 1 8 −2.25  . 0 −5.71875

Ezután

δx(0) = (0.03278689, −0.21311475, 0.13114754)T , x(1) = (2.03278689, 1.78688525, 1.13114754)T , kf (x(1) )k∞ = 0.073636119, δx(1) = (−0.0026315528, −0.013716540, −0.0096237920)T , x(2) = (2.03015533, 1.77316871, 1.12152375)T , kf (x(2) )k∞ = 0.00028366955. és máris sikeresen fejez®dik be az algoritmus a 4. lépés tesztjével. A talált megoldás helyes számjegyeit aláhúztuk. Amennyiben pl. az x(0) = (0.5, 0.25, 0.25)T kezdetivektorral indítunk, akkor a Jacobi-mátrix szingularitása miatt a 7. lépésben fejez®dik be az algoritmus.

Második tesztfeladatként olyan esetet írunk le, amikor a t-stratégia m¶ködésbe kerül. Indítsuk az algoritmust az ε = 0.0001, δx = 1, maxit = 20, x(0) = (0, 1.4, 1)T értékekkel! Ekkor az `-ciklusig (10-15. lépés) eljutunk, és mivel a leereszkedési kritérium nem teljesül, ott hatszor ciklizálunk, a t-t mindig felezve. Ezután t = 0.015625 és x(1) = (−2.01125, 1.01875, 0.9375)T , kf (x(1) )k∞ = 0.38203125, amikor a leereszkedési kritérium teljesül. Ezzel a rendszer (7.26) megoldásának közelébe kerültünk, de nem tudjuk gyorsan elérni, mert a t kicsi. A következ®kben a k -ciklusban továbblépünk, mindig már ` = 1-re teljesítve a leereszkedési kritériumot és így minden fordulat során másfélszeresére növelve a t-t. Majd x(12) = (−2.00012640, 1.00019218, 0.99940784 és

© Stoyan Gisbert

© Typotex Kiadó

7.3. EGYENLETRENDSZEREK MEGOLDÁSA

151

kf (x(12) )k∞ = 0.00374409 kiszámítása után lesz t = 1, és ezután x(13) = −2.00000005, 1.00000001, 1.00000018)T , kf (x(13) )k∞ = 0.00000105, amikor is sikeresen kilépünk az algoritmusból.

7.3.3. A Jacobi-mátrix közelítésér®l A Newton-módszer minden lépésében ki kell számítani a Jacobi-mátrixot, vagyis n2 függvényértéket. Az alkalmazásokban ez gyakran problémát jelent azért, mert már az f kiszámítása sem analitikus képletekkel történik, hanem további program segítségével. Kézenfekv® ilyenkor dierenciaképletekkel dolgozni, mint már az egydimenziós esetben is. A (7.22) n-dimenziós megfelel®je így néz ki:

∂fi (x) fi (x + hej ) − fi (x) , ≈ ∂xj h

(7.30)

ahol ej a j -edik koordináta-egységvektor és h 6= 0 egy alkalmas lépéstávolság, amely esetleg j -t®l függ. Tehát (7.30)-ban

fi (x + hej ) = fi (x1 , x2 , . . . , xj−1 , xj + h, xj+1 , . . . , xn ). Itt x lehet a gyök mindenkori aktuális x(k) közelítése, ahol az fi -t úgyis ki kell számolni, de az x(k) + hej -beli értéket csak a derivált közelítése miatt kell el®állítani. Így összesen n2 kiegészít® behelyettesítési érték szükséges. Gyakori eset az, hogy a Jacobi-mátrix ritkamátrix, pl. sávos mátrix. Akkor lényegesen kevesebb függvényérték is elegend®.

7.3.4. A Broyden-módszer Itt tárgyaljuk a szel®módszer Broyden nevéhez f¶z®d® általánosítását, amelylyel akkor ajánlatos dolgozni, amikor a parciális deriváltak megszerzése nem problémamentes és n2 kiegészít® függvényérték kiszámítása túl nagy ráfordítás. E módszer csakis az amúgy is rendelkezésünkre álló f (x(k) ) vektorok segítségével közelíti meg a Jacobi-mátrixot. Az iteráció kezdetén a (7.30) dierencia-képletekkel egyszer számítjuk ki a Jacobi-mátrix A0 közelítését (vagy pedig csupán annak f®átlóját, vagy legyen A0 = I ). Ezzel kapjuk x(1) -et. A k -adik lépésben gyelembe vesszük a következ® információt:

x(k−1) , x(k) , f (x(k−1) ) =: fk−1 , f (x(k) ) =: fk , Ak−1 .

© Stoyan Gisbert

© Typotex Kiadó

152 Itt az

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

x(k) = x(k−1) − A−1 k−1 fk−1

(7.31)

relációból kaptuk a legújabb x(k) vektort, amelyr®l feltehetjük, hogy különbözik x(k−1) -t®l, mert egyébként fk−1 = 0 lenne, tehát már x(k−1) volna a keresett gyök. A célunk az Ak el®állítása, majd az x(k+1) = x(k) − (Ak )−1 fk kiszámítása. Ehhez követeljük azt, hogy az

lk (x) := fk + Ak (x − x(k) ) lineáris függvény nemcsak az (x(k) , fk ) pontot interpolálja (amit automatikusan megtesz), hanem az (x(k−1) , fk−1 ) pontot is:

lk (x(k−1) ) = fk + Ak (x(k−1) − x(k) ) = fk−1 , azaz

Ak v (k) = fk − fk−1 , v (k) := x(k) − x(k−1) .

(7.32)

Ez a feltétel az úgynevezett kvázi-Newton-egyenlet, amely az egydimenziós esetben a szel®módszert eredményezi: akkor fk , fk−1 , x(k−1) , x(k) számok és f −f (k−1) (7.32) szerint érvényes Ak = x(k)k −xk−1 , x(k) ]f . A többdimenziós (k−1) = [x esetben (7.32) kevés az Ak meghatározásához: Ak -nak n2 eleme van, viszont a kvázi-Newton-egyenlet n-dimenziós vektorokra vonatkozik és így csak n feltételt jelent. Egészítsük ki azzal a követeléssel, hogy Ak minél közelebb legyen Ak−1 hez a következ® értelemben:

(Ak − Ak−1 )y = 0 minden v (k) -ra ortogonális y vektorra.

(7.33)

Ilyen y vektorból n − 1 lineárisan független van: az egy (v (k) )T y = 0 ortogonalitási feltétellel szemben áll y -nak az n komponense. Az

Ak − Ak−1 = u(k) (v (k) )T , u(k) meghatározandó vektor, választással a (7.33) feltétel teljesül: Ha (v (k) )T y = 0, akkor (Ak − Ak−1 )y = u(k) (v (k) )T y = 0. Vegyük gyelembe, hogy az u(k) (v (k) )T diadikus szorzat n × n-es mátrixot ad, míg (v (k) )T y az euklideszi skalárszorzatnak egy másik írásmódja, eredménye tehát egy szám. Az u(k) meghatározására használjuk, hogy

(Ak − Ak−1 )v (k) = u(k) (v (k) )T v (k) = u(k) kv (k) k22 , és most (7.32)-b®l következik

(Ak − Ak−1 )v (k) = fk − fk−1 − Ak−1 v (k) = u(k) kv (k) k22 ,

© Stoyan Gisbert

© Typotex Kiadó

7.4. A GAUSS-NEWTON-MÓDSZER

153

ill. mivel (7.31) szerint Ak−1 v (k) = −fk−1 ,

u(k) =

fk kv (k) k22

.

Ezzel az u(k) vektor  és vele együtt az Ak mátrix meg vannak határozva. Az Ak mátrix birtokában kiszámítjuk az x(k+1) vektort, az f (x) = 0 nemlineáris rendszer keresett megoldásának következ® közelítését. A Broyden-módszer konvergenciarendjér®l említjük, hogy az 1 + 1/2n, ha a Newton-módszer feltételei teljesülnek. Egyébként nem feltétlenül igaz, hogy Ak → J(x∗ ), k → ∞. A Broyden-módszer lokális konvergenciáját próbálkozhatunk csillapítással globálissá tenni: x(k+1) = x(k) − tk (Ak )−1 fk .

7.4. A Gauss-Newton-módszer 7.4.1. Leírása A 4. fejezetben foglalkoztunk azzal, hogy lineáris modelleket illesztsünk mérési eredményekre, de a gyakorlatban gyakran merülnek fel nemlineáris modellek is. A 4.4. pont 5. feladata ¶ µ t − t0 F (t) = a + b cos 2π 365 modelljében (amelyet az ott közölt h®mérsékleti adatokra szeretnénk illeszteni) a t0 paraméter nemlineáris módon szerepel, mert nem küls® szorzóként áll, mint az a és b együtthatók, v.ö. (4.12)-vel. Emiatt meghatározását csak próbálkozással tudtuk közelít®leg megoldani. Ilyen esetekben hasznos a Gauss-Newton-módszer. Ennek leírásához abból indulunk ki, hogy keressünk egy x = (x1 , . . . , xn )T n-dimenziós paraméter vektort úgy, hogy az F (x, t) modell a legjobban illeszkedjen az adott {ti , fi }m i=1 mérési eredményekre abban az értelemben, hogy kicsi legyen az eltérés a G(x) := (F (x, t1 ), F (x, t2 ), . . . , F (x, tm ))T m-dimenziós vektorfüggvény és az f = (f1 , f2 , . . . , fm )T m-dimenziós vektor között. Itt n ≤ m, és tipikusan n sokkal kisebb m-nél. Ezért azzal kell számolnunk, hogy a G(x) = f rendszer túlhatározott és megoldhatatlan. A 4. és a jelenlegi fejezetben tanultak alapjan a következ®képpen járunk el: 1. kiindulva a keresett legjobb x paraméter vektor egy alkalmas x(0) közelítéséb®l, szervezünk egy iterációt, amelyben a mindenkori x(i) paraméter

© Stoyan Gisbert

© Typotex Kiadó

154

FEJEZET 7. NEMLINEÁRIS EGYENLETEK vektort javítjuk:

x(i+1) = x(i) + δx(i) , i = 1, 2, . . . ; 2. a nemlineáris G(x) = f rendszert lineáris közelítésével helyettesítjük az x(i) paraméter vektor közelében:

G(x(i) ) + Ji δx = f, Ji := J(x(i) ), ahol J(x) a G vektorfüggvény Jacobi-mátrixa; 3. ennek a lineáris, de általában túlhatározott rendszernek a megoldását a megfelel® Gauss-féle normálegyenletekb®l nyerjük: ¡ ¢ (JiT Ji )δx = JiT f − G(x(i) ) , Ji = J(x(i) ). Ezen n × n-méret¶ szimmetrikus rendszer megoldására használjuk a Cholesky-felbontást, és az így kapott δx = δx(i) vektor az iterációban kerül felhasználásra. A h®mérsékleti példában tehát n = 3, m = 12, x1 = a, x2 = b, x3 = t0 és ¶ µ t − x3 , Gi (x) = F (x, ti ), i = 1, 2, . . . , 12. F (x, t) = x1 + x2 cos 2π 365 Ennek alapján a Jacobi-mátrix i-edik sorának elemei: ¶ µ ¶ µ t i − x3 t i − x3 2π , ji3 := x2 sin 2π . ji1 := 1, ji2 := cos 2π 365 365 365

7.4.2. A Gauss-Newton-módszer algoritmusa, tesztfeladatok A fenti leírást kiegészítve egy csillapítási paraméterrel, kapjuk a GaussNewton-módszer következ® algoritmusá t: Adottak az n, m dimenziók, az x(0) kezdeti közelítés, egy ε pontosság, a maxit maximális iterációk száma, a mérési eredmények f vektora, a G(x) vektorfüggvényt és a Jacobi-mátrixát kiszámító eljárások. Keresett az olyan x paraméter vektor, amelyre kG(x) − f k22 minimális. 1. k := 0, t := 1 2. [g := G(x(k) ) − f, gn := kgk2 , ? k = 0 ? [ gn0 := gn ] 3. ? gn ≤ ε ∗ (1 + gn0) ? [stop: k . iteráció, x(k) paraméter vektor, g maradékvektor, gn normája ]

© Stoyan Gisbert

© Typotex Kiadó

7.4. A GAUSS-NEWTON-MÓDSZER

155

4. J := J(x(k) ), w := J T ∗ g 5. J T Jv = w megoldása Cholesky-felbontással, szingularitás esetén stop 6. ` := 1(1)5 7. [y := x(k) − tv , G(y) − f kiszámítása 8. ? kG(y) − f k2 < gn ? [ ? ` = 1 ? [ t := min(1, 1.2 ∗ t) ], → 11. ] 9. t = max(0.7 ∗ t, 10−3 ) ]` 10. [stop: sikertelen kiszállás az x(k) helyen, g maradékvektor, kgk2 normája ] 11. k := k + 1, x(k) := y , ? k < maxit ?, → 2. ] 12. [stop: maxit iteráció miatt kiszállás, x(k) paraméter vektor, g maradékvektor, kgk2 normája ]

Els® tesztfeladatként tekintjük a következ®t: a ti := −2 + 5 ∗ (i − 1)/(m − 1), i = 1, 2, . . . , 12 =: m helyeken és az (a, b, c, d, e)T = (0.2, 0.1, 2, 2, 1)T paraméter vektorral kiszámítjuk az

fi := Gi (x) = F (x, ti ) értékeket, ahol F (x, t) := a+b∗t+c∗exp(−d∗(t−e)2 ). Ezután elfelejtjük az eredeti paraméter vektort és igyekszünk azt meghatározni az (f1 , . . . , fm )T vektorból (ezzel rekonstruálva az F függvény pontos képletét), kiindulva a (0.1, 0.2, 1, 1, 1.5)T közelít® paraméter vektorból. Itt tehát n = 5, m = 12, x = (x1 , x2 , x3 , x4 , x5 )T = (a, b, c, d, e)T , azaz

F (x, t) = x1 +x2 ∗t+x3 ∗exp(−x4 ∗(t−x5 )2 ), Gi (x) = F (x, ti ), i = 1, 2, . . . , 12. Innen kapjuk a G(x) vektor Jacobi-mátrixának i-edik sorát:

J(x)i :=(1, ti , exp(−x4 ∗(ti − x5 )2 ), −x3 ∗(ti − x5 )2 ∗ exp(−x4 ∗(ti − x5 )2 ), 2 ∗ x3 ∗ x4 ∗ (ti − x5 ) ∗ exp(−x4 ∗ (ti − x5 )2 )). Az x(0) := (0.1, 0.2, 1, 1, 1.5)T nulladik közelítéssel beindítva a fenti algoritmust, találjuk (a vessz® után hat jegyre kerekítve)

g(x(0) ) = (−0.299995, −0.254456, −0.208195, −0.162662, −0.181508, − 0.545378, −1.200423, −0.950147, 0.155423, 0.629291, 0.472918, 0.304728)T , amelynek normája gn = 1.906672. A J mátrix 60 eleme helyett csak a 8. sorát közöljük:

J(x(0) )8 = (1, 1.181818, 0.903716, −0.091492, −0.575092),

© Stoyan Gisbert

© Typotex Kiadó

156

FEJEZET 7. NEMLINEÁRIS EGYENLETEK

viszont a (J T J)(x(0) ) mátrixot teljes egészében: 

 12 6 3.874168 −1.845999 −0.101916  6 32.545455 5.760294 −2.556057 3.539124    T (0)  5.760294 2.756801 −0.687433 −0.001923 (J J)(x ) =  3.874168 . −1.845999 −2.556057 −0.687433 0.509667 0.007435  −0.101916 3.539124 −0.001923 0.007435 2.749734

Ezután kapjuk a w vektort:

w = (2.240403, −2.900298, 0.865987, −0.300277, −2.903115)T , és a (J T J)(x(0) )v = w rendszer megoldását:

v = (0.098065, −0.061251, 0.259491, −0.176973, −0.972651)T . Ehhez tartozik az

x(1) = (0.198065, 0.138749, 1.259491, 0.823027, 0.527349)T els® közelítés, és beindul a második iteráció. Ennek, valamint a következ® iterációk eredményét az alábbi táblázatban foglaljuk össze (ld. a 7.4. ábrát is): iter 2 3 4 5 6 7 8

gn 1.482564 1.155566 1.103511 0.506068 0.134831 0.006891 0.000019

x1 = a 0.186724 0.342548 0.197415 0.210206 0.200181 0.200001 0.2

x2 = b 0.044118 0.209447 0.095760 0.109477 0.099820 0.100001 0.1

x3 = c 1.403366 1.396324 1.748663 1.924154 1.996581 1.999989 2.0

x4 = d 0.828971 1.665572 1.438514 1.905157 1.994197 1.999984 2.0

x5 = e 1.316018 0.734403 1.108142 0.972508 1.001470 0.999996 1.0

A táblázatban közölt gn valójában mindig az el®z® x-vektorhoz tartozik, ld. az algoritmust. Az utolsó sorban kapott pontos eredménynek gn = 0 felel meg. Figyelemre méltó a vége felé lényegesen felgyorsuló konvergencia. Itt ismertük a jó modellt; ha a modell alkalmatlan, akkor a Gauss-Newton algoritmus nem kell, hogy konvergáljon.

Második tesztfeladat a h®mérsékleti példa, ahol a végs® eredmény: x1 = a = 10.12507951, x2 = b = −11.25764305, x3 = t0 = 14.27828254, (7.34) v.ö. a 79. oldallal.

© Stoyan Gisbert

© Typotex Kiadó

7.5. FELADATOK

157

y 2

1,5

elso es utolso kozelites 1

0,5

0 -1,25

0

1,25

2,5 x

7.4. ábra. Fels® görbe: az 1. tesztfeladat keresett görbéje (és az algoritmus eredménye), alsó görbe: els® közelítés

7.5. Feladatok 1. A felezési módszer néha felgyorsítható azzal, hogy beiktatunk egy olyan lépést, amelyben (ha közben pl. f (xm ) < 0, f (ym ) > 0) következ®nek nem 21 (xm + ym )-nél folytatjuk a számítást, hanem az (xm , f (xm )) és (ym , f (ym )) pontokat összeköt® egyenes zm gyökével. Adjuk meg zm képletét! 2. Milyen x(0) kezdetiértékb®l beindítva kerül végtelen ciklusba az f = x3 − 2x függvényen a Newton-módszer? 3. Alkalmazzuk a Newton-módszert az f (x) := x2 − a függvényre, ahol a > 0, és írjuk fel azt, hogyan függ össze az x(k) − x∗ és az x(k+1) − x∗ hiba ebben a konkrét esetben! 4. A következ® vektorfüggvény Jacobi-mátrixát számítsuk ki:

n = 3,

f := (f1 , f2 , f3 )T , f1 (x) := sin(x1 ∗ x2 ) + x43 , √ f2 (x) := cos(x1 ) ∗ sin(x3 ), f3 (x) := x21 − 1 + x2 ∗ x3 .

5. Találjunk még egy (egészen más, mint a (7.34)-beli t0 értékkel jellemzett) megoldást a 4.4. pont 5. feladatára!

© Stoyan Gisbert

© Typotex Kiadó

8. fejezet Közelít® integrálás Emlékezzünk néhány alapvet® függvény határozott integráljára: Z

b a

·

¸b

xk+1 x dx = k+1 k

Z

= a

β

sin x dx = [− cos x]βα = cos α − cos β,

α

Z

bk+1 − ak+1 b−a k = (b +abk−1 +. . .+ak−1 b+ak ). k+1 k+1

β α

Z

cos x dx = [sin x]βα = sin β − sin α, x

1

Z

1 dt = ln x, t

x 0

et dt = ex − 1.

Továbbá, az integrál néhány fontos tulajdonsága: az integrál additív: ha f = f1 + f2 az [a, b] intervallumon deniált Riemann-integrálható függvények, akkor

Z

Z

b a

f (x) dx =

Z

b a

f1 (x) dx +

b a

f2 (x) dx;

az integrál homogén: ha f = αf1 , ahol α konstans, akkor

Z

Z

b a

f (x) dx = α

b a

f1 (x) dx.

159

© Stoyan Gisbert

© Typotex Kiadó

160

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS Az integrál egy görbe alatti terület, konkrétan az

Z

b

I(f ) := a

f (x) dx

az y = f (x) valós függvény alatti (és az y = 0, x = a és x = b > a egyenesek közötti) terület. Ha f kétváltozós függvény, akkor az

Z bZ

d

I(f ) := a

c

f (x, y) dx dy

kétszeres integrál a z = f (x, y) felület alatti, valamint az x, y -sík a ≤ x ≤ b, c ≤ y ≤ d téglalapja feletti térfogat. Fontos tudni, hogy nem minden integrál fejezhet® ki elemi vagy ismert transzcendens függvények segítségével. Inkább fordítva: integrálok segítségével lehet függvényeket deniálni, pl. ha a fels® határ egy változó. Ilyen a statisztikában fontos hibaintegrál, Z x 2 2 √ e−z dz. Φ(x) := π 0 Ekkor hasznos az integrál numerikus közelítése, de akkor is, amikor a törzsfüggvény ugyan ismert, de bonyolult. Egy gyakorlatilag fontos feladat, amely integrálok kiszámításával kapcsolatos, az autópályaépítés. Rendelkezünk az autópálya nyomvonala mentén a föld felületének sok magassági értékével (pl. egy rács (xi , yi ) pontjaiban). Akkor annak érdekében, hogy ne legyenek hirtelen emelkedések vagy lejtések, valamint hogy ne kelljen az építés során nagy távolságokra talajt szállítani, ki kell számítani mennyi föld kell egy völgyben, amelyet gáton fog keresztezni az autópálya, és mennyi föld nyerhet® a völgy el®tti hegyb®l, amelybe részben süllyesztjük az autópályát. Ebben az esetben az f függvény ismeretlen, csak f (xi , yi ) értékeink vannak, így eleve csak numerikusan közelíthet® az integrál.

8.1. Elemi kvadratúraképletek A Riemann-féle értelmezés szerint az integrál annak az

Sn (f ; a, b) :=

n X i=1

∆xi f (xi ), ∆xi := xi − xi−1 , xi ∈ [xi−1 , xi ], i = 1, 2, . . . , n, (8.1)

© Stoyan Gisbert

© Typotex Kiadó

8.1. ELEMI KVADRATÚRAKÉPLETEK

161

y

y f(x)

111111111111 000000000000 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 a111111111111 (a+b)/2 b

f(x)

x

111111111111 000000000000 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111

a

b

x

8.1. ábra. A középpont szabály  és a trapézformula összegnek a limn→∞ Sn (f ) határértéke, amikor itt az xi pontok az [a, b] intervallumnak egy n-t®l függ® felosztását képezik: a = x0 < x1 < . . . < xn = b. Ehhez hasonlóan az I(f ) közelítését az

In (f ) :=

n X

ai f (xi ),

xi ∈ [a, b],

(8.2)

i=1

összeg alakjában fogjuk keresni, ami akkor is kézenfekv®, amikor f adott valós függvény, ill. amikor éppen csak az xi pontokban ismert a függvény. Itt az ai számokat súlyok nak hívjuk (összehasonlítva (8.1)-gyel az [a, b] intervallum kis szakaszaira gondolhatunk), az xi -ket alappontok nak  amelyeket mindig [a, b]-belinek tételezünk fel; és In (f ) = In (f, a1 , x1 , . . . , an , xn ) a kvadratúraképlet, amelynek 2n+1 szabad paramétere van tehát: n, az alappontok és a súlyok. A rövidség kedvéért a képletet általában csak In (f )-fel vagy In -nel jelöljük. Néhány a geometriai interpretációból adódó egyszer¶ kvadratúra képlet: 1. n = 1: A középpont szabály avagy érint®formula: ¶ µ Z b a+b . f (x) dx ≈ I1 (f ) := (b − a)f 2 a 2. n = 2: A trapézformula: Z b b−a [f (a) + f (b)]. f (x) dx ≈ I2 (f ) := 2 a 3. n = 3: A Simpson-formula: ¶ µ Z b b−a a+b [f (a) + 4f + f (b)]. f (x) dx ≈ I3 (f ) := 6 2 a

(8.3)

(8.4)

© Stoyan Gisbert

© Typotex Kiadó

162

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

y f(x)

111111111111 000000000000 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111

a

(a+b)/2

b

x

8.2. ábra. A Simpson-képlet A Simpson-képlet egy igen gyakran használt képlet. Még n = 1-hez említjük a bal-, ill. jobboldali téglalapképletet: Z b Z b f (x) dx ≈ I1 (f ) := (b − a)f (a), ill. f (x) dx ≈ I1 (f ) := (b − a)f (b). a

a

Már az ilyen kvadratúraképletek programban való tesztelésének a szempontjából is érdemes megkérdezni, vajon milyen egyszer¶ függvények esetén kapjuk meg az integrál közelítése helyett annak pontos értékét? Itt mindenekel®tt polinomokra gondolunk, hiszen azoknak integráljai jól ismertek. Rendre ellen®rizhet® a következ®: csak konstans függvény esetén pontos a (bal- vagy jobboldali) téglalap szabály. Csak lineáris függvény esetén pontos a középpont szabály és a trapézformula. Végül a Simpson-képlet pontos a legfeljebb harmadfokú polinomok esetén. Ezek közül az állítások közül a legtöbb már a képletet szemléltet® rajzból is belátható. Kett® esetet ellen®rizünk: a) középpont szabály: Legyen f (x) = c0 + c1 x + c2 x2 , ekkor

I(f ) = [c0 x +

c1 2 c2 3 b c1 c2 x + x ]a = (b − a)[c0 + (b + a) + (b2 + ab + a2 )]. 2 3 2 3

Ugyanakkor a középpont szabály szerint à µ ¶2 ! a+b a+b + c2 , I1 (f ) = (b − a) c0 + c1 2 2 tehát az eltérés

I(f ) − I1 (f ) = (b − a)

c2 2 c2 (b − a)3 (b − 2ab + a2 ) = , 12 12

© Stoyan Gisbert

© Typotex Kiadó

8.2. INTERPOLÁCIÓS KVADRATÚRAKÉPLETEK

163

ami csak akkor nulla, ha c2 = 0. b) Simpson-képlet: Az el®z® f -fel számolva kapjuk

à µ ¶2 ! a+b b − a³ a+b 2 c0 + c1 a + c2 a + 4 c0 + c1 + c2 I2 (f ) = 6 2 2 ´ +c0 + c1 b + c2 b2 =

¢ b−a¡ 6c0 + 3(a + b)c1 + c2 (a2 + (a + b)2 + c2 b2 ) = I(f ). 6

Ezzel már igazoltuk, hogy a Simpson-képlet pontos a másodfokú polinomok)(x − b) ra. Ezután úgy érvelünk, hogy a speciális p3 (x) := (x − a)(x − a+b 2 harmadfokú polinom elt¶nik az I2 (f ) képlet alappontjaiban, tehát a kvadratúraképlet nem is veszi észre: I2 (p3 ) = 0, I2 (f + αp3 ) = I2 (f ) + I2 (αp3 ) = I2 (f ), ahol α tetsz®leges valós szám. Ugyanakkor szimmetria miatt I(p3 ) = 0 is igaz, vagyis I(f + αp3 ) = I(f ) = I2 (f ). Ezután elég rámutatni, hogy tetsz®leges harmadfokú polinom felírható f + αp3 alakban, és ezzel beláttuk az állítást. Az el®z® érvelésben az I integrálok és az In kvadratúraképletek két közös tulajdonságát használtuk fel: úgy, mint az integrál, a kvadratúraképlet is additív és homogén: ha f = f1 + f2 függvények, akkor In (f ) = In (f1 ) + In (f2 ), és ha f = αf1 , ahol α konstans, akkor In (f ) = αIn (f1 ).

8.2. Interpolációs kvadratúraképletek Az

Rb

f (x) dx integrál közelít® kiszámítására a következ® út kínálkozik: a f -et helyettesítjük az xi ∈ [a, b] pontokra (i = 1, . . . , n) támaszkodó interpolációs polinommal, tehát az Ln−1 Lagrange-féle interpolációs polinommal, majd pontosan számítjuk ki Ln−1 integrálját. Ezzel kapunk egy (8.2) alakú kvadratúraképletet. Valóban, az {xi , f (xi )}ni=1 adatok megadása után a Lagrange-féle interpolációs polinom meg van határozva: Ln−1 (x) =

n X i=1

(n) f (xi )qi (x)

=

n X i=1

n Y x − xj , f (xi ) xi − xj j=1 j6=i

ld. a 6.2. pont (6.6) relációját. Ha itt n = 1, akkor Ln−1 (x) = f (x1 ) értelemszer¶en.

© Stoyan Gisbert

© Typotex Kiadó

164

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

Ezt integrálva az [a, b] intervallumon következik (megint az integrál additívitását és homogenitását használva)

I(f ) ≈ I(Ln−1 (f )) =

f (xi )ai =: In (f ),

i=1

Z ahol ai := I(qi ) =

n X

b a

qi (x) dx, qi (x) =

n Y x − xj . x − x i j j=1 j6=i

A legegyszer¶bb eset az, hogy csak egy pont van: x1 , és f -et helyettesítjük az f (x1 ) konstanssal. Ekkor kapjuk a baloldali, jobboldali téglalap szabályt, . ill. a középpont szabályt aszerint, hogy x1 = a, x1 = b, ill. x1 = a+b 2 Következ®nek vehetünk két pontot, és ekkor kézenfekv® az x1 = a, x2 = b választás. Ekkor keletkezik a (8.3) trapézszabály. Folytatva a sorozatot n ≥ 3-mal és egyenl® távolságra lév® alappontokat b−a , i = 0, . . . , n − 1), kapjuk az úgynevezett Newtonválasztva: (xi := a + i n−1 Cotes-féle képlet eket. Ezek közül az n = 3-nak megfelel® képletet már ismerjük: ez a (8.4) Simpson-szabály, és az n = 2-nek megfelel® trapézszabályt is a NewtonCotes-képletekhez lehet sorolni. Az interpolációs polinomokkal együtt tanultuk azoknak hibaképletét (ld. (6.25) a 6.2 pontban) is:

f (x) = Ln−1 (f, x) +

f (n) (ζn (x)) ωn (x). n!

Az egész hibaképletet most integráljuk:

Z

b a

1 I(f (n) (ζn )ωn ). n!

f (x) dx = I(f ) = I(Ln−1 (f )) +

Így a Newton-Cotes-féle formula Rn (f ) képlethibájára következik

1 Rn (f ; a, b) = Rn (f ) := I(f ) − In (f ) = n!

Z

b a

f (n) (ζn (x))ωn (x) dx.

(8.5)

Innen a következ®t olvassuk le: ha f legfeljebb n − 1-edfokú polinom, akkor f (n) (x) ≡ 0, és így Rn (f ) = 0, tehát az n alappontra épül® Newton-Cotes-féle képlet pontos. Ez éppen azt jelenti, hogy tervünk sikerült: ha f ilyen, akkor egybeesik Lagrange-féle interpolációs polinomjával, és akkor nincs hiba. De azt is értjük a (8.5) képletb®l, hogy miért kapható a középpont szabály esetén a konstans f mellett még a lineáris f integrálja is hiba nélkül, holott

© Stoyan Gisbert

© Typotex Kiadó

8.3. ÖSSZETETT KVADRATÚRAKÉPLETEK

165

akkor n = 1 és f deriváltja konstans: f 0 (x) = c1 , de nem feltétlenül nulla. és Ekkor ugyanis ω1 (x) = x − b+a 2 ¶ · 2 ¸b Z b µ x b+a b+a dx = c1 −x R1 (f ) = c1 x − 2 2 2 a a b+a b+a − ) = 0. = c1 (b − a)( 2 2 Itt még a (6.27) becslésre is érdemes emlékeztetnünk, amely szerint x ∈ [a, b] esetén |ωn (x)| ≤ (b − a)n . Ezt hasznosítjuk az alábbi, (8.5)-b®l következ® becslésben: Z b 1 1 (n) max |f (x)| |ωn (x)| dx ≤ max |f (n) (x)|(b − a)n+1 , |Rn (f ; a, b)| ≤ n! a≤x≤b n! a≤x≤b a (8.6) amelyben azt is felhasználtuk, hogy (6.26) szerint a < ζn (x) < b. Ezen becslés alkalmazása pl. a trapézszabályra azt adja, hogy

|R2 (f )| ≤

1 max |f 00 (x)|(b − a)3 . 2 a≤x≤b

8.3. Összetett kvadratúraképletek 8.3.1. Összetett képletek konstrukciója Az el®z®kben tárgyalt alacsonyrend¶ formulákat úgy szokták hasznosítani, hogy nem az [a, b] intervallumra, hanem ezen intervallum részintervallumaira alkalmazzák. Ennek hátterében a 6.4-beli felismerés áll, amely szerint jobb, ha szakaszonkénti polinomiális interpolációval dolgozunk. Az összetett kvadratúraképletek leírásához a kiindulási kvadratúraképletet a következ® standard alakban tételezzük fel: Z 1 n X In (F ; 0, 1) := αi F (ti ) ≈ F (t) dt, (8.7) i=1

0

tehát a [0, 1] intervallumra vonatkozólag. Ezután els®nek érdemes azzal a kérdéssel foglalkoznunk, hogyan transzformálódik akár az integrál, akár a kvadratúraképlet egy másik intervallumra? A [0, 1] intervallum leképezhet® az x = a + t(b − a) transzformációval a [a, b] intervallumra: ha itt t = 0, akkor x = a lesz, ha t = 1, akkor x = b. . Ezeket a relációkat most arra A transzformáció inverze ekkor: t = x−a b−a alkalmazzuk, hogy tisztázzuk: a (8.1) Riemann-féle összeget hogyan kell más intervallumra felírni, pl. a [0, 1] intervallumra?

© Stoyan Gisbert

© Typotex Kiadó

166

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS Az inverz transzformációval kapjuk a [0, 1] intervallum felosztását:

ti :=

xi − a , i = 1, . . . , n. b−a

Ezután világos, hogy a [0, 1]-beli felosztás intervallumainak mi a szélessége:

∆ti := ti − ti−1 =

∆xi xi − a − (xi−1 − a) = . b−a b−a

Az új függvényt az eredeti transzformáció adja: F (t) := f (x(t)) = f (a + t(b − a)), és végül az inverz transzformáció azokat a ti pontokat is deniálja, amelyekben az F függvényt ki fogjuk értékelni:

F (ti ) = f (xi ), ha ti :=

xi − a , i = 1, . . . , n. b−a

Ezzel megkaptuk a Riemann-összeg [0, 1]-re vonatkozó alakját:

Sn (F ; 0, 1) :=

n X

∆ti F (ti ),

∆ti := ti − ti−1 , ti ∈ [ti−1 , ti ].

i=1

Amennyiben ez utóbbi a kiindulási pont, akkor pedig

), f (x) = F (t(x)) = F ( x−a b−a

x := a + t(b − a),

xi := a + ti (b − a), xi := a + ti (b − a), ∆xi := (b − a)∆ti , i = 1, . . . , n, adja a transzformációt az Sn (f ; a, b) összegre. Pontosan így kapjuk a (8.7) standard képlet transzformációját az általános [a, b] intervallumra:

In (f ; a, b) :=

n X i=1

Z

µ

b

ai f (xi ) ≈ a

f (x) dx, f (x) := F (t(x)) = F

x−a b−a

¶ ,

xi := a + ti (b − a), ai := (b − a)αi , i = 1, . . . , n, mert αi felel meg a ∆ti -nek és ∆xi az ai -nek. A Riemann-féle összegek transzformációja viszont (a határátmenet révén) még az integrálok transzformációját is maga után vonja: ¶ µ Z 1 Z b dx x−a x=a+t(b−a) , f (x) = F (t(x)) = F F (t) dt f (x) = b−a b−a 0 a Z b 1 f (x) dx. = b−a a

© Stoyan Gisbert

© Typotex Kiadó

8.3. ÖSSZETETT KVADRATÚRAKÉPLETEK

167

1 b−a

szorzó nélkül nem lehet helyes az el®z® összefüggés, mert ha F (t) ≡ 1, R1 Rb akkor f (x) ≡ 1 következik, és ekkor 0 F (t) dt = 1, a f (x) dx = b − a. Rb A látottakat most az I(f ; a, b) := a f (x) dx integrál összetett kvadratúraképlet segítségével történ® közelít® kiszámítására fogjuk alkalmazni. Ehhez felosztjuk az [a, b] intervallumot egyenletesen m részintervallumra: Az

a = x0 < x1 < · · · < xm = b, xj − xj−1 =: h, h :=

b−a , m

ennek megfelel®en az integrált is felbontjuk: m Z xj m Z 1 X t = (x − xj−1 )/h X I(f ; a, b) = f (x) dx h Fj (t) dt = 0 j=1 xj−1 j=1

=

m X

hI(Fj ; 0, 1),

Fj (t) := f (xj−1 + th) = f (x),

j=1

ahol R xj a h szorzó kompenzálja azt, hogy a t = t(x) transzformáció el®tti f (x) dx integrál értéke f ≡ 1 esetén éppen h, a transzformáció utáni Rx1j−1 Fj (t) dt értéke h nélkül viszont 1 lenne. 0 Most annyi maradt hátra, hogy az I(Fj ; 0, 1) integrálok közelítésére a standard kvadratúraképletet bevetjük: Z 1 n n X X I(Fj ; 0, 1) = f (xj−1 + th) dt ≈ αi Fj (ti ) = αi f (xij ), 0

i=1

i=1

ahol xij := xj−1 + ti h. Ezzel megkaptuk a (8.7)-hez tartozó összetett képlet et az [a, b] intervallumon: Z b m m n X X X f (x) dx. Im×n (f ) := hIn (Fj ; 0, 1) = h αi f (xij ) ≈ j=1

j=1

i=1

a

Példa 1: az összetett trapézszabály: ¶ µ m X f (xj−1 ) + f (xj ) Im×2 (f ) = hI2 (Fj ; 0, 1) = h 2 j=1 j=1 ¸ · m−1 X 1 b−a 1 . = h f (a) + f (a + jh) + f (b) , h := 2 2 m j=1 m X

(8.8)

Ezt a képletet úgy is lehet származtatni, hogy elkészítjük az f lineáris interpolációját minden [xj−1 , xj ] intervallumban, tehát az egész [a, b] intervallumra

© Stoyan Gisbert

© Typotex Kiadó

168

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

nézve éppen az f els®fokú spline-nal való approximációját használjuk  majd ezt integráljuk. Példa 2: az összetett Simpson-képlet, amelyben az xj−1/2 := xj−12+xj jelölést használjuk:

Im×3 (f ) =

m X

hI3 (Fj ; 0, 1) =

j=1

m X ¢ h¡ f (xj−1 ) + 4f (xj−1/2 ) + f (xj ) 6 j=1

· ¸ m m−1 X X h 1 f (a) + 2 = f (a + jh) + 4 f (a + (j − )h) + f (b) (8.9) . 6 2 j=1 j=1

8.3.2. Összetett képletek konvergenciája A következ®kben az Im×n (f ) összetett kvadratúraképletek konvergenciáját vizsgáljuk m → ∞ esetén. Ehhez Im×n (f ) képletében felcseréljük az összegzések sorrendjét: m n n m n X X X X X (i) Im×n (f ) = h αi f (xij ) = αi hf (xij ) =: αi Sm , j=1

i=1

i=1

j=1

i=1

ahol (i) Sm

=

m X

hf (xij ), h =

j=1

b−a , xij = xj−1 + ti h, i = 1, . . . , n, m

speciális Sm (f ; a, b)-féle Riemann-összegek, tehát Riemann-integrálható f függvény esetén minden i-re érvényes Z b (i) f (x) dx. lim Sm = m→∞

Ezért

a

Z

b

lim Im×n (f ) =

m→∞

a

f (x) dx

n X

αi .

i=1

Pn

Mi ez a i=1 αi szorzó? Ezt akkor kapjuk a (8.7) standard kvadratúraképletb®l, ha ott F ≡ 1. Ha ebben az esetbenRa standard képlet P pontos eredményt 1 ad (ami egy természetes elvárás), azaz 0 dt = 1 = ni=1 αi , akkor a szorzó értéke 1 és ezzel következik, hogy Z b lim Im×n (f ) = f (x) dx. m→∞

a

© Stoyan Gisbert

© Typotex Kiadó

8.3. ÖSSZETETT KVADRATÚRAKÉPLETEK

169

Ebb®l azt látjuk, hogy az összetett kvadratúraképletek minimális elégséges feltételek mellett biztosítják a konvergenciát: ha m → ∞, az In (F, 0, 1) standard képlet pontos eredményt ad konstans függvényen, és ha f Riemann-integrálható függvény, akkor az Im×n (f ) összetett kvadratúraképlet konvergál I(f ; a, b)-hez, az integrál pontos értékéhez. A fenti elégséges konvergencia feltételek megállapítását (amely konvergencia tetsz®legesen lassú is lehet) érdemes kiegészíteni azzal, hogy h hatványaival jellemezhet® lehet a konvergencia, ha f megfelel® számban dierenciálható. Ehhez a (8.6) becslés hasznos, amelyben ilyenkor n (a használt Lagrange-interpoláció alappontjainak száma) helyett azon polinomok legkisebb d fokszámát célszer¶ írni, amelyre biztos, hogy már nem mindig pontos a standard kvadratúraképlet (tehát pl. n = d = 2 a trapézszabály és n = 3, d = 4 a Simpson-képlet esetén). Az I(f ; a, b) és Im×n (f ) közti eltérés vizsgálatát a következ®képpen kezdjük: ÃZ ! m n xj X X I(f ; a, b) − Im×n (f ) = f (x) dx − h αi f (xj−1 + ti h)

=

j=1 m X

xj−1

i=1

Rd (f, xj−1 , xj ).

j=1

A kapott összeget (8.6) segítségével értelemszer¶en becsüljük, feltételezve, hogy f d-szer folytonosan dierenciálható: m m X X 1 max |f (d) (x)|hd+1 |I(f ; a, b) − Im×n (f )| ≤ |Rd (f, xj−1 , xj )| ≤ xj−1 ≤x≤xj d! j=1 j=1



m X 1 1 max |f (d) (x)| hd+1 = Md (b − a)hd , d! a≤x≤b d! j=1

mert mh = b − a. Itt újra az Md := maxa≤x≤b |f (d) (x)| jelölést használtuk. Ha maxa≤x≤b |f (d) (x)| pontos kiszámítása körülményes, akkor Md gyanánt e maximumnak egy fels® becslése is megteszi. Eredményünk alkalmazása az összetett trapézszabályra, ill. Simpson-képletre azt adja, hogy kétszer (ill. négyszer) folytonosan dierenciálható f esetén h2 (8.10) |I(f ; a, b) − Im×2 (f )| ≤ (b − a)M2 , 2 h4 |I(f ; a, b) − Im×3 (f )| ≤ (b − a)M4 . 24

© Stoyan Gisbert

© Typotex Kiadó

170

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

Vagyis: az összetett trapézszabály, ill. Simpson-képlet h-ban másod-, ill. negyedrend¶. Ezek az eredmények a következ® esetben hasznosak: f olyan függvény, hogy annak 2. vagy 4. deriváltja kiszámítható és abszolútértékének maximuma [a, b]-ben becsülhet®, viszont f integrálja bonyolult vagy ismeretlen. Ekkor a fenti becslések segítségével kiszámítható egy olyan h, amely egy adott ε pontosságot garantál.

Példa: Számítsuk ki az Z

1 0

1 dx 1 + x4

integrált ε = 10−4 pontossággal az összetett trapézszabálynak a segítségével! Itt

1 −4x3 0 = , f (x) , a = 0, b = 1, 1 + x4 (1 + x4 )2 −12x2 + 20x6 −12x2 (1 + x4 ) − 2 · 4x3 · (−4x3 ) = . f 00 (x) = (1 + x4 )3 (1 + x4 )3 f (x) =

Mivel 0 ≤ x ≤ 1, így 1 ≤ 1 + x4 ≤ 2, és g(x) := −12x2 + 20x6 = 4x2 (5x4 − 3) az intervallum szélén a 0, ill. 8 értéket veszi fel, de az intervallum belsejében van minimuma, ahol g 0 (x) = −24x + 120x5 = 0, azaz ahol x4 = 51 . Ott g(x) = √45 (1 − 3) = − √85 , ami szerint a minimum abszolútértéke a maximum értékét nem éri el. Összefoglalva |f 00 (x)| ≤ 8 =: M2 .

Most fordulhatunk a (8.10) becsléshez, amely szerint az összetett trapéz2 szabály hibája nem nagyobb, mint h2 (b − a)M2 = 4h2 . Ezért, ha 4h2 ≤ ε = 10−4 , akkor |I(f ; a, b) − Im×2 (f )| ≤ 4h2 ≤ ε miatt a kívánt pontosság 1 , vagyis m = h1 = 200 elegend®. garantált. Innen kapjuk, hogy h ≤ 200 A tényleges számítás ekkor azt adja, hogy I200×2 = 0.866970904, míg I(f ) = 0.8669729873 a pontos eredmény 10 számjegyre, tehát a valódi hiba ≈ 2 · 10−6 .

© Stoyan Gisbert

© Typotex Kiadó

8.4. GYAKORLATI SZEMPONTOK

171

Foglaljuk össze a legfontosabb tudnivalókat: Az elemi In kvadratúraképletek (téglalap-, középpont-, trapéz-, Simpsonszabály), azzal jelemezhet®k, hogy: - hány alappontot használnak (ez az n szám); - hányadfokú polinom integrálját adják pontosan (ez a d szám). Ezeket a képleteket Im×n összetett formában használjuk, felbontva az [a, b] intervallumot m részintervallumra. Az Im×n összetett képletek konvergálnak: Im×n → I(f ), ha teljesülnek az alábbi feltételek: - a részintervallumok m száma tart végtelenhez; - a kiindulási In kvadratúraképlet pontosan adja a konstans függvények integrálját; - az f integrandus Riemann-integrálható. Ha az integrandus d-szer folytonosan dierenciálható, akkor érvényes a következ® hibabecslés

|I(f ) − Im×n (f )| ≤

b−a 1 max |f (d) (x)|(b − a)hd , ahol h = , d! a≤x≤b m

tehát a konvergencia h-ban d-edrend¶.

8.4. Gyakorlati szempontok Az Im×n összetett kvadratúraképletek pontszáma ` ≤ nm, ahol n rögzített. A továbbiakban Im×n helyett I` -t írunk. Ekkor az összetett kvadratúraképletek hibabecslésének tipikus alakja

|I` (f ) − I(f )| ≤ cd hd ≤ cd ((b − a)n)d `−d , cd := (b − a)

Md , d!

(8.11)

≤ (b−a)n . mert h = b−a m ` Az els® gyakorlati tanácsunk az, hogy Im×n = I` után következ®nek számítsuk ki a kétszeres pontszámnak megfelel® I2m×n = I2` értéket, majd szükség esetén még az I4` , I8` értékeket is, stb. Az I` és I2` különbségére azt kapjuk, hogy |I` (f ) − I2` (f )| ≤ |I` (f ) − I(f )| + |I2` (f ) − I(f )| ≤ ≤ (1 + 2−d )cd hd , mert h =

b−a m

és

b−a 2m

= h2 , valamint hd + (h/2)d = hd (1 + 2−d ).

© Stoyan Gisbert

© Typotex Kiadó

172

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

Az Md becslését az integráció során kiszámított f (xi ) értékekb®l tudjuk el®állítani osztott dierenciák alapján (ld. a (6.28) képletet). A fenti egyenl®tlenségeink azt mutatják meg, hogy d-szer folytonosan dierenciálható f esetén az |I` (f )−I2` (f )| és |I` (f )−I(f )| eltérések fels® becslése csak az 1 + 2−d szorzóban különbözik. Ezért az |I` (f ) − I2` (f )|/(1 + 2−d ) vagy egyszer¶bben az |I` (f ) − I2` (f )| érték úgynevezett hibaindikátor ként szolgálhat. Ezt nem szabad hibabecsléssel összetéveszteni, mert csak a hibák fels® becsléséb®l indultunk ki. Egy további megjegyzés segíthet a gyakorlatban: ha |I` − I2` | ≤ ε[1 + |I` (f )|] teljesül, akkor az I4` értéket is számítsuk ki, és csak |I2` − I4` | ≤ ε[1 + |I2` (f )|] esetén fogadjuk el az eredményt, egyébként folytassuk a számítást újabb `-értékekkel. (Mint máskor a pontosság mérésénél, itt is az abszolút |I` (f ) − I2` (f )| ≤ ε kritérium helyett inkább az el®z® vegyes abszolút-relatív tesztet használjuk.) Egy probléma a numerikus integrációnál az, hogy a pontszámmal együtt a kerekítési hibák is növekszenek. Mivel a kvadratúraképlet skalárszorzat, hivatkozhatunk az 1. fejezetre. Eszerint, ha az ai súlyok és az fi függvényértékek hibája kerekítési hiba nagyságrend¶, az I` pontos értéke a számítógépen kapott Ie` értékt®l a következ® mértékben tér el:

|Ie` − I` | ≤ 2ε1 (` − 1)

` X

ai |fi | < 2`ε1 · I` (|f |),

j=1

ahol ε1 a számítógép relatív pontossága, v.ö. (1.12)-vel. Itt feltettük, hogy az ai súlyok pozitívak és nagy pontossággal számítottuk ki ®ket, míg f behelyettesítési értékei ε1 relatív hibával készültek, és a hibaterjedés becslésében ε1 -ben másodrend¶ mennyiségeket elhanyagoltunk. Most a következ® szituáció állt el®: az I(f ) pontos és I] ` (f ) számított értékek közti eltérés két részre oszlik. Az els® a fent becsült kerekítési hiba, amely `-lel lineárisan n®, a másik a d-edrend¶ képlet (8.11) hibája, amely úgy csökken, mint `−d . Összesítve:

|Ie` − I| ≤ |Ie` − I` | + |I` − I| ≤ c1 ` + c2 `−d , ahol c1 = 2ε1 I` (|f |), és c2 = cd ((b − a)n)d . A becslésb®l következik, hogy van olyan `-érték, amelyre az összhiba minimális (ld. a 8.3 elvi ábrát, ahol ` helyett x áll):

g(`) := c1 ` + c2 `−d ≥ c1 `opt (1 + 1/d) = gmin , `opt := (c2 d/c1 )1/(1+d) . Az `opt függ®sége d-t®l eléggé érzékeny. Gyakran a c2 /c1 nagy szám, és ekkor inkább az várható, hogy `opt csökken, amikor d n®.

© Stoyan Gisbert

© Typotex Kiadó

8.4. GYAKORLATI SZEMPONTOK

173

1

y 0,75

0,5

0,25

x_opt 0

0

2,5

5

7,5

10

x

8.3. ábra. Az y = g(x) összhiba (kihúzott görbe), a kerekítési hiba (az origóból indul), a képlet hibája (lejt® görbe), a minimális hiba (vonalkázott egyenes) Az `opt pontszámnál a kerekítési hibák szintje eléri a képlethiba szintjét; ett®l fogva nem érdemes ` > `opt -ra folytatni az I` értékek kiszámítását. Vegyük észre azt is, hogy az alsó hibakorlát a feladattól, a kvadratúraképlett®l és a számítógépt®l függ. Végül, térjünk rá egy konvergencia-felgyorsító lehet®ségre, az Aitken-féle eljárás ra. Ennek levezetéséhez tegyük fel, hogy az I` (f ) kvadratúraképletr®l csak az az információnk van, hogy elegend®en sima f esetén igaz

I` (f ) = I(f ) + chd ,

h := (b − a)/`,

ahol c = c(f, h) csak lassan változik h-val együtt; c, I(f ) és d mind ismeretlenek. Ekkor c-t konstansnak tekintve, ezt a három ismeretlent meghatározhatjuk az I` , I2` , I4` három értékb®l:

1 − 2−d (I` − I2` )2 I` − I2` I` − I2` d d = −d = = , 2 , ch = I2` − I4` 2 − 4−d 1 − 2−d I` − 2I2` + I4` vagyis

I(f ) = I` −

(I` − I2` )2 . I` − 2I2` + I4`

(8.12)

© Stoyan Gisbert

© Typotex Kiadó

174

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

Amikor a c nem konstans, akkor a jobb oldalon álló kifejezés nem I(f )-et adja, de gyakran ennek jobb közelítését, mint akármelyik a három I` , I2` I4` érték közül. Ez olyan értelemben egy extrapolációs eljárás, hogy rendelkezésünkre áll a három I` , I2` , I4` érték, amely rendre megfelel a h, h2 , h4 értéknek: I` = I` (h), I2` = I` ( h2 ), I4` = I` ( h4 ), és meg akarjuk tudni I(f ) = I` (0) értékét.

8.5. Többdimenziós integrálok kiszámítása Ebben a pontban példaként a kétdimenziós esettel foglalkozunk, amikor az x, y -síknak valamilyen Ω tartománya feletti és a z = f (x, y) felület alatti térfogat meghatározása a cél: Z Z I(f, Ω) := f (x, y) dx dy. Ω

Ezen kett®s integrál közelítése (8.2) általánosításaként az

In (f, Ω) :=

n X

ai f (xi , yi ), (xi , yi ) ∈ Ω,

i=1

alakban képzelhet® el. Az ilyen összeget kubatúraképlet nek hívjuk. Az abban szerepl® ai súlyok alatt most az Ω-nak olyan kis résztartományaira gondolhatunk, amelyek az (xi , yi ) pontokat tartalmazzák. Hasonlóan dolgozhatunk a három- és többdimenziós esetben is. A lényeges különbség az egydimenziós esethez képest az, hogy most gyakran az integrációs tartományt is közelíteni kell.

8.5.1. Visszavezetés egyváltozós függvények integrálására Legyen Ω ⊂ IR2 zárt korlátos tartomány és f (x, y) folytonos ebben a tartományban. A legegyszer¶bb lehet®ség a kétdimenziós numerikus integrációra akkor adódik, ha az alaptartomány olyan, hogy az integrált

Z Z Ω

Z bZ f (x, y) dx dy =

a

Z

d(x) c(x)

f (x, y) dy dx =

b a

g(x) dx

(8.13)

alakban átírhatjuk, ahol c és d az x ∈ [a, b] folytonos függvényei. Ekkor a bels® integrál Z d(x) g(x) := f (x, y) dy c(x)

© Stoyan Gisbert

© Typotex Kiadó

8.5. TÖBBDIMENZIÓS INTEGRÁLOK KISZÁMÍTÁSA 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

y

175

d(x)

000000000000 111111111111 111111111111 000000000000 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 0 1 0 1 a 111111111111 b 000000000000 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 000000000000 111111111111 0 1 0 1 0 1 000000000000 111111111111 0 1 000000000000 111111111111 0 1 000000000000 111111111111 0 1 000000000000 111111111111 0 1 000000000000 111111111111 c(x) 000000000000 111111111111

x

8.4. ábra. Kettes integrál alaptartománya három helyen függ x-t®l: az alsó és a fels® határon, valamint az integrandusban is. Ezután a következ® standard kvadratúraképletek családjából indulunk ki:

Im (F ; 0, 1) :=

m X

Z (m) (m) αi F (ti )

1

≈ 0

i=1

F (t) dt, (m)

ahol minden természetes m-re rendelkezzünk a megfelel® {ai }m i=1 súlyokkal (m) m és a {ti }i=1 alappontokkal. Ennek transzformációját az [a, b] intervallumra és a g függvényre ismerjük: Z b m X (m) (m) g(x) dx ≈ ai g(xi ) =: Im (g; a, b), a

(m)

i=1 (m)

(m)

(m)

ahol xi := a + (b − a)ti és ai := (b − a)αi . (m) Most az maradt hátra, hogy a g függvény xi -beli behelyettesítési értékeit közelít®leg szerezzük meg. A g -t deniáló integrál közelítésére ugyanazon családból választunk egy kvadratúraképletet, viszont az alappontok száma más lehet, mint m, mondjuk n: (m) g(xi )



n X

(m)

(n)

bij f (xi , yj ),

j=1

ahol (n)

(m)

(m)

(n)

bij := (di − ci )αj , ci := c(xi ), di := d(xi ), yj

(n)

:= ci + (di − ci )tj .

© Stoyan Gisbert

© Typotex Kiadó

176

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS (n)

Felhívjuk a gyelmet arra, hogy a jelölések egyszer¶sítése céljából az yj koordináták függ®ségét m-t®l és i-t®l (ci , di -n keresztül) nem mutatjuk explicit módon. Ezután az x-irányú és y -irányú kvadratúraképleteket kombináljuk:

I(f, Ω) ≈ Im (g; a, b) =

m X

(m)

(m)

ai g(xi )

i=1



m X

(m)

ai

i=1

n X

(m)

(n)

bij f (xi , yj ) =: Im,n (f ; Ω).

j=1

Példa: Ha a tartomány a Q := {a ≤ x ≤ b, c ≤ y ≤ d} téglalap, az Im,n képlet:

Z bZ

d

f (x, y) dy dx ≈ Im,n (f ),

I(f, Q) := a

Im,n (f ) := |Q|

c m X n X

(m)

(n)

(m)

(n)

f (xi , yj )αi αj ,

i=1 j=1

|Q| := (b − a)(d − c). (n)

(n)

Arra gyelmeztetünk, hogy itt yj := c + (d − c)tj most sem i-t®l, sem m-t®l nem függ (mint az általános Ω esetében), mert c és d konstansok. Tenzorszorzat integrációnak hívjuk az ilyen képletet. Err®l fontos tudni, hogy ha az Im , ill. az In képlet x-ben (maximálisan) r-edfokú, ill. y -ban (maximálisan) s-edfokú polinomokat integrál pontosan, akkor az Im,n tenzorszorzat kvadratúraképlet olyan kétváltozós polinomokat integrál pontosan, amelyek x-ben r-edfokúak és y -ban s-edfokúak.

8.5.2. Az integrálási tartomány approximációja Ha az integrációs tartomány általánosabb és ezért a kiszámítandó integrál nem írható fel (8.13) alakban, akkor a kubatúraképlet megszerzéséhez a tartományt fel kell darabolni és gyakran közelíteni is kell egyszer¶bb darabokkal. A legdurvább lehet®ség az, hogy a tartományra borítunk egy téglalapos rácsot, h, ill. k lépéstávolsággal x-, ill. y -irányban, és az eredeti Ω tartomány peremét a rács egyeneseivel közelítjük. Ezzel kapunk egy Ω-t közelít® Ω0 tartományt, amelynek minden egyes téglalapján a tenzorszorzat integrációt alkalmazhatjuk. Pontosabb az, ha Ω közelítése háromszögek segítségével történik. A háromszögeket ∆i -vel jelöljük, számuk legyen n. Ekkor

Ω0 := ∪ni=1 ∆i .

© Stoyan Gisbert

© Typotex Kiadó

8.5. TÖBBDIMENZIÓS INTEGRÁLOK KISZÁMÍTÁSA

177

Ezután pl. minden ∆i háromszög felett lineárisan interpoláljuk az f függvényt. ∆i három csúcsában f vegye fel az fi1 , fi2 , fi3 értékeket. Ha ∆i nem elfajult háromszög, akkor ezen három érték egyértelm¶en deniálja az erre illeszked® síkot. Ennek egyenlete legyen z = Fi (x, y), ez adja a lineáris interpolációt. A sík és az x, y -sík közötti hasáb I3 (∆i , f ) térfogata már a gimnáziumból ismert:

1 I3 (∆i , f ) = (fi1 + fi2 + fi3 )|∆i |. 3 Itt |∆i | a ∆i háromszög területe. A hasábok összeadásával kapjuk a következ® kubatúraképletet: n

1X (fi1 + fi2 + fi3 )|∆i |. In×3 (Ω , f ) := 3 i=1 0

(8.14)

Összesítve a következ® közelítéseket alkalmaztuk: Z Z Z Z n Z Z X Fi (x, y) dx dy =: In×3 (Ω0 , f ). f (x, y) dx dy ≈ f (x, y) dx dy ≈ Ω

Ω0

i=1

∆i

A (8.14) képlet a trapézszabály általánosításaként fogható fel. A középpont szabály általánosításaként viszont az

In×1 (f ) =

n X

f (si , ti )|∆i |

(8.15)

i=1

képletet említjük, amelyben (si , ti ) a ∆i háromszög súlypontja. A háromszögek felett f (x, y) másodfokú interpolációját alkalmazva, a következ® kubatúraképlet adódik: n

0 In×3 (f )

1X (fi1 + fi2 + fi3 )|∆i |, := 3 i=1

(8.16)

amelyben most fij az i-edik háromszög j -edik oldalfelez® pontjában felvett értéket jelöli. Ellen®rizzük ezt a képletet! Ehhez elegend® lesz csak egy ∆i háromszöget tekinteni, és arról azt feltehetjük, hogy ez egy egységnégyzet fele: 0 ≤ x, y ≤ 1, x + y ≤ 1. A három oldalfelez® pontbeli függvényérték megint egy síkot határoz meg, és az ezalatti térfogatot a képlet biztosan megadja, azaz a képlet pontos tetsz®leges els®fokú polinomra. Így csak a másodfokú polinomokkal kell még foglalkoznunk: x2 , xy, y 2 . Szimmetriaokból a két négyzet közül csak egyet kell vizsgálni, így elég lesz xy, y 2 ellen®rzése.

© Stoyan Gisbert

© Typotex Kiadó

178

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

a) Az integrál pontos értékének kiszámítása f (x, y) = xy esetén: Z Z Z 1 Z 1−y Z 1 Z 1−y I(∆i , f ) = xy dx dy = xy dx dy = y x dx dy ∆i

Z

=

2

0

x 2

2

3

= ·

·

1

y

¸1−y

Z

0

0

4

y y 1 y −2 + 2 2 3 4

¸1 0

2

(1 − y) dy = 2 0 µ ¶ 1 1 2 1 = − + = 2 2 3 4

dy = 0

0

1

y

1 2

0

Z

1 0

[y − 2y 2 + y 3 ] dy

1 . 24

A kubatúraképlet értékének kiszámításához egy kis táblázatot készítünk a felez®pontok koordinátairól és az ott felvett f -értékekr®l: j xj yj f (xj , yj ) = xj · yj

1

2

3 0

1 2 1 2 1 4

1 2

0 0

1 2

0

1 1 · 21 = 24 , ami azt jelenti, hogy Eszerint I30 (f ) = 31 (0 + 41 + 0)|∆i | = 12 f (x, y) = xy esetén sikerült a megegyezést ellen®rizni. b) Hasonlóan folyik az integrál kiszámítása f (x, y) = y 2 esetén: Z 1 Z 1−y Z Z Z 1 Z 1−y 2 2 dx dy y2 y dx dy = I(∆i , f ) = y dx dy =

Z =

∆i 1

Z

0

0

0 1

Z

1

y 2 [x]1−y dy = y 2 (1 − y) dy = 0 0 0 ¸1 · 3 y4 1 1 1 y = − − = . = 3 4 0 3 4 12

0

0

[y 2 − y 3 ] dy

A kubatúraképlet értékének kiszámításához megint táblázatot készítünk, de most az xj koordinátákra nincs szükség, hiszen ezekt®l nem függ f : j yj f (xj , yj ) = yj2

1 0 0

2 1 2 1 4

3 1 2 1 4

1 . Vagyis f (x, y) = y 2 Eszerint most I30 (f ) = 31 (0 + 41 + 41 )|∆i | = 61 · 21 = 12 esetén is sikerült a megegyezést ellen®rizni. Azaz, a (8.16) kubatúraképlet tetsz®leges másodfokú polinomra pontos.

Még egy lehet®séget említünk a tartomány felosztására: a tartomány belsejét felosztjuk téglalapokra, a pereme mentén viszont háromszögekre. Ezeken a résztartományokon a tenzorszorzat-, ill. a fenti képletekkel kaphatjuk az integrál közelít® értékét.

© Stoyan Gisbert

© Typotex Kiadó

8.5. TÖBBDIMENZIÓS INTEGRÁLOK KISZÁMÍTÁSA

179

8.5.3. A kétdimenziós Simpson-integráció algoritmusa, tesztfeladatok Ezen fejezet befejezéséül megadjuk a kétdimenziós Simpson-eljárásnak az algoritmusá t. Adott m és n (a részintervallumok száma x-, ill. y -irányban), az [a, b] intervallum és a c(x), d(x) függvények, valamint az f (x, y) integrandus; keresett az Z Z b

d(x)

I := a

c(x)

f (x, y) dy dx

integrál Im,n közelít® értéke, mindkét koordináta irányban Simpson-képletet alkalmazva. 1. H := (b − a)/m, ? H = 0 ? [ stop: eredmény Im,n = 0 ] 2. x := a + H , s := (Sim1(a) + Sim1(b))/2 3. i := 1(1)m − 1 4. [s := s + Sim1(x), x := x + H]i 5. s := s/2, x := a + H/2 6. i := 1(1)m 7. [s := s + Sim1(x), x := x + H]i 8. s := s ∗ H ∗ 2/3 9. stop [eredmény: s = Im,n ] Itt a Sim1(x) procedura (az egydimenziós In Simpson-képlet) algoritmusának felírására nincs szükség, hiszen ugyanazokat az 1-9. lépéseket tartalmazza, a következ® helyettesítésekkel:

b → d(x), a → c(x), Sim1(x) → f (x, y), m → n, Im,n → In .

Els® tesztfeladat: a = −1, b = 2, c ≡ −2, d ≡ 1, f = x3 y 3 + x2 − y 3 + 2.

Ekkor tenzorszorzat-interpoláció valósul meg és függetlenül m- és n-t®l (pl. m = n = 1 esetén is) megkapjuk a pontos eredményt: I(f ) = Im,n = = 24.1875. I1,1 = 387 16 Második tesztfeladat: a = −1, b = 2, c(x) = −2 − x, d(x) = 1 + x, f = xy + x − y + 2. Ezt az integrált is pontosan kapjuk meg a procedúra eredményeként: = 35.25. I(f ) = I1,1 = 141 4 Harmadik tesztfeladatként két olyan esetet adunk, amelyben csak közelít® eredményt szolgáltat a program. Itt is a = −1, b = 2: a) c ≡ −2, d ≡ 1, f = x4 y 4 + x2 − y 3 , amikor I1,1 = 94.640625, I2,2 = . 65.49664307, I(f ) = 6381 100 b) c(x) = −2−x, d(x) = 1+x, f = x2 y 2 +x−y , amikor I1,1 = 80.5, I2,2 = = 71.05. 71.640625, I(f ) = 1421 20

© Stoyan Gisbert

© Typotex Kiadó

180

FEJEZET 8. KÖZELÍTŽ INTEGRÁLÁS

8.6. Feladatok 1. Legyenek x0 , . . . , xn páronként különböz®, [a, b]-b®l való számok, és

Z

b

I(f ) := a

f (x) dx,

In (f ) =

n X

ai f (xi ).

i=0

Írjuk fel azokat az ai súlyokban lineáris egyenleteket, amelyek az In (p) = I(p) követelményb®l adódnak, ha p gyanánt az 1, x, x2 , . . . xn monomokat vesszük! Milyen mátrix adódik, mit tud a rendszer megoldhatóságáról mondani? ) kell választani ah2. Mekkora m-et (részintervallumok száma: m = b−a h hoz, hogy a (8.8) összetett trapézformula és (8.10) hibabecslése alkalmazásának esetén az Z 1 1 dx 3 0 1+x integrált ε = 3 · 10−4 pontossággal kiszámíthassuk? 3. Írjuk meg a (8.9) összetett Simpson-képletnek a programját úgy, hogy annak egyetlen ciklusa legyen és a ciklus belsejében csak függvénykiértékelések szerepeljenek, valamint függvény- és x-értékek összeadása! i 4. Hová tart az {si }∞ i=1 sorozat, ha si := a + bq és |q| < 1? Számítsuk ki a (8.12) képlet I(f ) eredményét akkor, amikor I` , I2` , I4` helyett valamilyen i-re vesszük a sorozat három si , si+1 , si+2 tagját (vagyis amikor si+k =: I2k ` )?

5. Hányadfokú kétváltozós polinomra pontos a (8.15) kubatúraképlet? 6. Mekkora a Simpson-képlet kétdimenziós tenzorszorzat változatának a rendje?

© Stoyan Gisbert

© Typotex Kiadó

9. fejezet Közönséges dierenciálegyenletek numerikus megoldása Az integrálás inverz m¶velete a dierenciálás, így, ha Z

x

y(x) = c + x0

f (t, y(t)) dx,

ahol c = const, akkor ezt dierenciálva kapjuk

dy = f (x, y(x)), dx mert az integrált fels® határa szerint dierenciálni úgy kell, hogy a fels® határt behelyettesítjük az integranduszba. A láncszabály szerint, ha y = f (x) és x = g(t), azaz y = f (x(t)), akkor

dy dx dy dg dy = · = · = f 0 (x) · g 0 (t). dt dx dt dx dt Ha pedig y = f (x, z) és z = g(x), akkor

∂f ∂f dg dy = . + dx ∂x ∂z dx

9.1. Motiváció Az id®t®l függ® m¶szaki, természettudmányos és gazdasági folyamatok matematikai leírását szolgáló modellekben fontos szerepe van a közönséges die181

© Stoyan Gisbert

© Typotex Kiadó

182

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

renciálegyenleteknek  olyannyira, hogy a szimuláció szó sok szakember számára azt jelenti, hogy dierenciálegyenleteket megoldani. Tekintsünk egy ilyen esetet, amely szóbeli információ szétterjedését modellezi. Ehhez hasonló egy új termék eladása egy adott országban. Ahhoz, hogy az új hír továbbterjedjen, kell, hogy egy ember, aki ismeri (ezeknek s¶r¶sége a teljes lakosságban legyen y ), találkozzon olyannal, aki nem ismeri (értelemszer¶en ezeknek s¶r¶sége 1 − y ). Annak valószín¶sége, hogy ez történik, az y(1 − y). A kontaktus eredményessége jelemezhet® egy (mondjuk: α) pozitív konstanssal: attól, hogy létrejött a hírátadás, mennyivel növekedett azoknak száma (a teljes lakossághoz képest), akik tudják a hírt és tovább is adják? Ezenkívül arra számítunk, hogy minél több ∆t id®t hagyunk az információátadására, annál nagyobb lesz a s¶r¶ség növekménye: els® közelítésben ez a s¶r¶ség lineárisan fog növekedni ∆t-vel. Ha tehát el®bb egy t pilanatban y(t) volt a s¶r¶ség, akkor a kontaktus után, a t + ∆t pillanatban, már

y(t + ∆t) = y(t) + ∆αy(t)(1 − y(t)) az új s¶r¶ség  avagy

y(t + ∆t) − y(t) = αy(t)(1 − y(t)). ∆t Ha itt egyre kisebb ∆t-re gondolunk és y -t dierenciálhatónak tekintjük, akkor a ∆t → 0 határátmenettel következik az

y 0 (t) = αy(1 − y)

(9.1)

dierenciálegyenlet. Amennyiben a t = 0 kezdeti pillanatban y(t) = 0, akkor új hír nem is volt és így nem is tud szétterjedni: y(t) = 0 marad minden további t-re. Ha viszont a s¶r¶ség 1 > y(0) > 0, akkor arra számítunk, hogy y(t) t-vel növekedni fog. Ez igaz, ahogyan a dierenciálegyenlet analitikus megoldásán lehet ellen®rizni, amelynek képlete:

y(t) =

1 1 1 − y(0) > 0. , 1 > y(0) = > 0 vagyis β = −αt 1 + βe 1+β y(0)

(9.2)

Ellen®rizzük ezt a megoldást!

1 1 dy d(1 + βe−αt ) =− = − (−αβe−αt ). dt (1 + βe−αt )2 dt (1 + βe−αt )2

© Stoyan Gisbert

© Typotex Kiadó

9.1. MOTIVÁCIÓ

183

De

1 − y(t) =

1 + βe−αt − 1 βe−αt , = 1 + βe−αt 1 + βe−αt

és így valóban

βe−αt . (1 + βe−αt )2 Eszerint a (9.2) képlet adja a (9.1) dierenciálegyenlet megoldását, és az y(0) kezdetiértékb®l a β konstanst meg tudjuk határozni. αy(1 − y) = α

Következ®nek egy mechanikai példát említünk, egy rugón felfüggesztett testet. A független változó a t id®, x a keresett függvény: a test kitérése a annak t szerinti deriváltja (a test sebessége), normálhelyzetb®l, és x˙ := dx dt valamint x ¨ a t szerinti második deriváltja (a test gyorsulása). Egy rx˙ taggal a súrlódást is gyelembe vesszük, valamint az f (t) küls® er®t:

m¨ x + rx˙ + kx = f (t). Az m (tömeg) és k (rugóállandó) konstansokról feltesszük, hogy pozitívak. Ezt a másodrend¶ egyenletet els®rend¶ egyenletek rendszerébe alakítjuk át, a következ® jelöléseket használva:

y1 (t) := x(t), y2 (t) := x(t), ˙ úgyhogy

y˙ 1 = x˙ = y2 , 1 1 y˙ 2 = x¨ = (−rx˙ − kx + f ) = (−ry2 − ky1 + f ). m m Ezt vektoralakban összefoglalva: µ ¶ µ ¶ µ ¶ 0 x 1 0 −m , g := f , y := , A := − k r m x˙ m kapjuk a dierenciálegyenletek rendszerét:

y˙ = Ay + g. Kémiai folyamatok is leírhatók dierenciálegyenletekb®l álló rendszerek segítségével, de ezek  eltekintve a legegyszer¶bb esetekt®l  nemlineárisak, például a környezetvédelem szempontjából fontos szmog-modellek, amelyekben kb. 60 reakciót és komponenst kell gyelembe venni. Példáink a közönséges dierenciálegyenleteknek két problémáját mutatják meg (amelyek megnehezítik, ill. gyakorlatilag lehetetlenné teszik az analitikus megoldást): 1) tipikusan rendszerekr®l van szó; 2) az egyenletek gyakran nemlineárisak a keresett változókban.

© Stoyan Gisbert

© Typotex Kiadó

184

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

9.2. Kezdetiérték feladatok Ahogyan példáink mutatják, a dierenciálegyenlet információt ad a keresett y(x) függvény deriváltjáról, de nem adja meg azt közvetlenül. A tipikus alak

y0 =

dy = f (x, y), dx

(9.3)

ahol f (x, y) adott függvény és keresett az y(x) függvény, pl. a [0, 1] intervallumban. Ha más intervallum érdekes, pl. az [x0 , xL ] intervallum, akkor az x = x0 + (xL − x0 )t transzformációval az el®z®re tudjuk visszavezetni (t ∈ [0, 1]). Ekkor ugyanis

y(x) = y(x0 + (xL − x0 )t) =: z(t), f (x, y) = f (x0 + (xL − x0 )t, z), így

dz dy dy dx = = = f (x, y)·(xL −x0 ) = f (x0 +(xL −x0 )t, z)·(xL −x0 ) =: g(t, z). dt dt dx dt Ez lényegében ugyanolyan dierenciálegyenlet, mint az eredeti. Maga a (9.3) egyenlet bizony nem elég ahhoz, hogy a keresett y függvényt egyértelm¶en megkapjuk, még abban a legegyszer¶bb esetben sem, amikor f (x, y) azonosan nulla: ilyenkor világos, hogy y(x) = const az általános megoldás, mert egy (deriválható) függvény deriváltja pontosan akkor nulla, ha az a függvény konstans. De hogy mennyi a konstans, azt az y 0 = 0 dierenciálegyenlet nem mondja meg. Tehát további információ kell még. Egy ilyen adat, amellyel gyakran rendelkezünk, az y(0) kezdetiérték. A (9.1) dierenciálegyenlet (9.2) megoldásában ez az érték mint paraméter szerepel, amelynek gyelembevétele után a megoldás meg van határozva. A mechanikai példában az y(0) egy vektor, amely tartalmazza az x(0) (0) kezdeti sebességet. Itt egy explicit megoldási kezdeti helyzetet és a dx dt képlet elég bonyolult lenne, de zikailag világos, hogy a kezdeti pozició és sebesség nélkül nincsen teljes információnk a felfüggesztett test állapotáról. Matematikailag viszont azért következik, hogy egy kezdetiérték meghatározza a megoldást, mert a (9.3) egyenlet integrálja Z x y(x) − y(x0 ) = f (t, y(t)) dt. (9.4) x0

Ez a képlet mutatja, hogy a lehetséges megoldások közül egyet úgy választhatunk ki, hogyha valamelyik x0 pontban a megoldás y(x0 ) értékét megadjuk, pl. x0 = 0-ban. Ezzel a kezdetiérték feladat teljes:

© Stoyan Gisbert

© Typotex Kiadó

9.2. KEZDETIÉRTÉK FELADATOK

185

Keresett a (9.3) dierenciálegyenlet azon megoldása, amely 0-ban egy adott y(0) értéket vesz fel:

dy = f (x, y(x)), y(0) adott, y(x) keresett x ∈ [0, 1]-re. dx

(9.5)

Az y(0) megadása után, amennyiben f nemR függ y -tól, a (9.4) közvetlenül x mutatja a megoldás képletét: y(x) = y(0) + 0 f (t) dt. Itt persze lehetséges, hogy az integrandusz törzsfüggvénye ismeretlen  ami miatt egy numerikus közelítésre kell gondolnunk. De az általános esetben is, amikor f függhet y -tól, y(0) megadása után a megoldás meg van határozva, és a megoldás közelít® meghatározását (9.4)b®l éppen az alábbiakban fogjuk tanulni. Ahhoz viszont, hogy (9.4) matematikailag értelmes legyen, bizonyos feltételek kellenek f -re nézve  ahogyan nem létezik minden egyváltozós függvény integrálja sem, hanem csak a Riemann-integralható függvényeké. A közönséges dierenciálegyenleteknél célszer¶, a következ® (elégséges) feltételekb®l kiindulni: 1) f : [0, 1] × IR → IR legyen folytonos az els® argumentumában (ez x), és 2) Lipschitz-folytonos a másodikban (ez y ):

|f (x, y) − f (x, z)| ≤ L|y − z| minden x ∈ [0, 1] és y, z ∈ IR-re. Ebben a második feltételben y vagy z nem a megoldás, nem függvények, hanem bármely két valós szám. Az is elég, ha a Lipschitz-folytonosság feltételében y és z minden olyan érték, amelyet a megoldás fel tudna venni.

A fenti két elégséges feltétel  x szerinti folytonosság és y szerinti Lipschitz-folytonosság  nemcsak a (9.5) kezdetiérték feladat megoldásának létezését biztosítja, hanem az egyértelm¶ségét is. Példák: Els®ként vizsgáljuk a (9.1) egyenlet f = f (y) = αy(1 − y)

jobboldalát. A fenti két feltétel közül az els® teljesül: az f (x, y) = αy(1 − y) függvény x-re nézve konstans, tehát folytonos. Vizsgáljuk a függvény y szerinti Lipschitz-folytonosságát is:

f (y) − f (z) = α(y(1 − y) − z(1 − z)) = α(y − z − y 2 + z 2 ) = α(y − z)(1 − y − z), így

|f (y) − f (z)| ≤ α|y − z||1 − y − z|,

© Stoyan Gisbert

© Typotex Kiadó

186

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

vagyis: f általában nem Lipschitz-folytonos, mert |1 − y − z| tetsz®legesen nagy lehet. De amennyiben eleve tudjuk, hogy 0 < y, z ≤ 1 (mint ahogyan az explicit megoldási képletb®l következik 0 < y ≤ 1, ha 0 < y(0) ≤ 1), akkor viszont |1 − y − z| ≤ 1, tehát

|f (y) − f (z)| ≤ α|y − z|, vagyis ilyen argumentumokra f Lipschitz-folytonos és α =: L a Lipschitzállandó. Ez azért megnyugtató a (9.2) pontos megoldás ismeretében, mert akkor ez az egyetlen megoldás, ha 0 < y(0) ≤ 1. √ Második példaként nézzük azt az esetet, hogy f (x, y) = y , az intervallum [0, 1] és a kezdetiérték y(0) = 0. Tehát a kezdetiérték feladat:

y0 =

√ y, 0 ≤ x ≤ 1, y(0) = 0.

Azt állítjuk, hogy ennek a feladatnak kett® megoldása van: 1) y ≡ 0, ami világos, hiszen ekkor y 0 ≡ 0 és f (x, y) ≡ 0. ¡ ¢2 √ d x2 = 2x = x2 , ami éppen y . 2) y = x2 . Most y 0 = dx 4 4 Mindkét megoldás a kezdetiértéket is felveszi. A fenti két feltétel közül az √ els® teljesül: az f (x, y) = y függvény x-re nézve megint konstans, tehát folytonos. A probléma most is az y szerinti Lipschitz-folytonosság: ha például y > 0 és z ≥ 0, akkor

f (y) − f (z) = így

√ y−z √ √ , y− z= √ y+ z

|y − z| |y − z| √ ≤ √ , |f (y) − f (z)| = √ y y+ z

és √1y ≤ L = const kellene ahhoz, hogy ez az f Lipschitz-folytonos lehessen  ami viszont csak akkor igaz, ha y ≥ y0 > 0. De esetünkben y kezdetiértéke éppen 0. A példa mutatja, hogy ha nincs Lipschitz-folytonosság, akkor lehet, hogy nincs unicitás.

9.3. Az Euler-módszer Most fordulunk a dierenciálegyenletek numerikus megoldásához. Ekkor azt fogjuk feltenni, hogy f második argumentumának Lipschitz-folytonos függvénye, mert egyébként az a probléma támadhat, hogy nincs unicitás. Ezenfelül

© Stoyan Gisbert

© Typotex Kiadó

9.3. AZ EULER-MÓDSZER

187

y

y(0)

0

y(x)

}hf(0,y(0))

y1

h

x1=h

x

9.1. ábra. Az Euler-módszer els® lépése további dierenciálhatósági feltételekre lesz szükségünk, hasonlóan mint a numerikus integrálásnál. A (9.5) alakú kezdetiérték feladat numerikus megoldását szolgáltató legegyszer¶bb eljárás az Euler-módszer, amelynek bevezetéséhez felteszük, hogy n = 1. Az alapvet® ötlet az, hogy a dierenciálegyenlet kezdetiérték feladatából kiszámítható a keresett y(x) függvény deriváltja az x0 := 0 pontban: y 0 (0) = f (0, y(0)). Ha ebben az irányban teszünk egy kis h lépést el®re (ld. a 9.1. ábrát): x1 = x0 + h = h, y1 = y0 + hf (0, y0 ), y0 := y(0), akkor általában csak kis, mégpedig h-ban másodrend¶ hibát követünk el (erre lejjebb visszatérünk). Ezután hasonló helyzetben vagyunk, mint az elején: rendelkezünk egy ponttal az x, y -síkon, amelyen keresztül (most már csak közelít®leg) vonul a keresett függvény, és a dierenciálegyenlet segítségével kiszámíthatjuk a derivált értékét az adott pontban. Ennek segítségével újra közelíthetjük a megoldást egy h hosszú szakaszon:

x2 = x1 + h = h, y2 = y1 + hf (x1 , y1 ), újra egy másodrend¶ hibát elkövetve. Általában az

xi+1 = xi + h, yi+1 = yi + hf (xi , yi )

(9.6)

képletek szerint dolgozunk. A másodrend¶ hibák a legrosszabb esetben összeadódnak, és ha már egy 1/h-val összemérhet® lépésszámot megtettünk, akkor az összhiba már csak

© Stoyan Gisbert

© Typotex Kiadó

188

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

els®rend¶ lesz h-ban (erre lejjebb visszatérünk)  ami kicsi h esetén még elfogadható hiba lehet.

9.3.1. Az Euler-módszer algoritmusa, tesztfeladatok Pszeudokód formájában megfogalmazva az egész eljárást, a következ® lépések adódnak, mint az explicit Euler-módszer algoritmusa, ha az egész [0, 1] intervallumot N darab h hosszú intervallumra osztjuk fel és minden xi = ih osztópontra szerzünk egy yi értéket, amely reményünk szerint közelíti a pontos megoldás megfelel® y(xi ) értékét: Adott x0 = 0, y0 = y(0) és a dierenciálegyenlet f (x, y) jobboldalát kiszámító eljárás, továbba N ≥ 1, az intervallumok száma. 1. 2. 3. 4. 5.

x0 := 0, h := 1/N i = 0, 1, . . . , N − 1 [xi+1 = xi + h yi+1 = yi + hf (xi , yi ) ]i [ stop: eredmény (x0 , y0 ), (x1 , y1 ), . . . , (xN , yN ) ]

Mint tesztelési példát els®nek olyan esetet említünk, amikor az Eulermódszer hiba nélkül adja a pontos megoldás értékeit az xi pontokban, mert f konstans: y 0 = 1, x ∈ [0, 1], y(0) = 0. (9.7) Ezen dierenciálegyenlet általános megoldása y = x + a, ahol a = const. De a kezdetiérték miatt ez a konstans 0 kell, hogy legyen. Vagyis y = x a kezdetiérték feladat megoldása, és ezt vissza kell kapnunk a programból  kerekítési hibákat nem számítva. Második tesztelési példának tekintsük az

y 0 = Ly, x ∈ [0, 1], y(0) = 1

(9.8)

kezdetiérték feladatot, amelyben L = const > 0. Ennek megoldása y(x) = eLx , úgyhogy nem nehéz a pontos megoldással összehasonlítani a numerikus megoldást. Legyen pl. L = 10, akkor 6 számjegyre a) h=0.1: xi y(xi ) 0.1 2.71828 0.2 7.38906 0.3 20.0855 .. .. . . 1.0

22026.5

yi 2 4 8 .. .

1024

b) h=0.05: xi y(xi ) 0.05 1.64872 0.1 2.71828 0.15 4.48169 .. .. . . 1.0

22026.5

yi 1.50000 2.25000 3.37500 .. . 3325.26

© Stoyan Gisbert

© Typotex Kiadó

9.4. AZ EULER-MÓDSZER HIBAELEMZÉSE

189

Az eredmények tehát elég távol vannak a pontostól, viszont a program tesztelésére alkalmasak. De folytassuk a számítást kisebb h = 1/N -értékekkel, mindig duplázva az intervallumok N számát! A következ® táblázat szembeállítja az xN = 1 = N h-ra kapott numerikus értékeket és eN := |y(xN ) − yN | hibájukat. A pontos megoldási érték kerekítve y(xN ) = 22026.5 minden esetben. A táblázat utolsó oszlopában mutatjuk a jelenlegi és az el®z® hiba hányadosát.

N h 10 0.1 20 0.05 40 0.025 80 0.0125 160 0.00625 320 0.003125 640 0.0015625

yN eN 1024 21002.5 3325.26 18701.24 7523.16 14503.34 12365.2 9661.3 16316.6 5709.9 18900.3 3126.0 20387.5 1639.0

eN /eN/2 0.8904 0.7755 0.6661 0.5910 0.5475 0.5243

Ez a táblát azt mutatja, hogy bár a konvergencia lassú, de valóban els®rend¶: a jelenlegi és az el®z® hiba hányadosa közeledik 0.5 felé, vagyis: éppen úgy viselkedik, mint a h lépéstávolság, amelyet minden számításban feleztünk. A mindenkori h-val kifejezve az utolsó két hiba például

e320 ≈ 1000384 · h, e640 ≈ 1048960 · h.

(9.9)

Az Euler-módszert rendszerekre is alkalmazhatjuk: ekkor y ∈ IRn , f ∈ IRn és (9.6)-ban mind az yi -k és f (xi , yi )-k vektorok, tehát az yi+1 = yi +hf (xi , yi ) képlet egy ciklust takar, amely mondjuk j indexszel fut 1-t®l n-ig. Ekkor, amennyiben csak az utolsó x-értékre érdekel bennünket az eredmény, akkor az új x- és y -értékekkel felülírhatjuk a régieket, és rendszerek esetén ez nagy különbség a tárigény szempontjából.

9.4. Az Euler-módszer hibaelemzése Az Euler-módszert úgy is felfoghatjuk, hogy a (9.3) dierenciálegyenletben az y deriváltját az ú.n. haladó dierenciahányados sal helyettesítettük:

y(xi + h) − y(xi ) ≈ y 0 (xi ) = f (xi , y(xi )). h

© Stoyan Gisbert

© Typotex Kiadó

190

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

Az eltérés ezen reláció bal és jobb oldala között az Euler-módszer képlethibája: y(xi+1 ) − y(xi ) − f (xi , y(xi )). g(xi , h) = gi := h A (9.7) dierenciálegyenlethez tartozó képlethiba pl. gi ≡ 0, mert ekkor y(x) = x, f (x, y) = 1, és a haladó dierenciahányados hiba nélkül adja a deriváltat egyszer¶en azért, mert az konstans:

gi =

xi+1 − xi (i + 1)h − ih −1= − 1 = 0. h h

A (9.8) dierenciálegyenlethez tartozó képlethiba viszont nem nulla. Ekkor y(x) = eLx , f (x, y) = Ly = LeLx volt, és a haladó dierenciahányados csak hibával adja a deriváltat: µ Lh ¶ e −1 eLxi+1 − eLxi Lxi Lxi − Le = e −L gi = h h ¶ µ 1 + Lh + 21 (Lh)2 + O(h3 ) − 1 Lxi −L = e h ¶ µ 1 2 2 Lxi = e L + L h + O(h ) − L = O(h). 2 A képlethibának az a jelent®sége, hogy segítségével becsülhet® a numerikus megoldás ei := y(xi ) − yi hibája: # " i X |gk |h . (9.10) |ei+1 | ≤ eLxi+1 |e0 | + k=0

Ezen úgynevezett stabilitási becslés levezetéséhez elég mindössze azt feltenni, hogy f a második argumentumában Lipschitz-folytonos, L Lipschitz-állandóval. Innen kaphatjuk a módszer konvergenciáját, ha többet teszünk fel f -r®l: legyen f (x, y) mindkét argumentuma szerint folytonosan deriválható. Ez egyben biztosítja az analitikus megoldás létezését és unicitását is, mert ekkor f Lipschitz-folytonos y -ban, továbbá az y megoldás ekkor kétszer folytonosan dierenciálható: ∂f ∂f dy , (9.11) y 0 = f (x, y(x)), y 00 = + ∂x ∂y dx a láncszabály alapján. Innen látjuk, hogy valóban y 00 folytonos. Ezt használjuk ki y(xi+1 ) Taylor-sorfejtésében:

y(xi + h) = y(xi ) + hy 0 (xi ) +

h2 00 y (xi + ϑi h), 2

© Stoyan Gisbert

© Typotex Kiadó

9.4. AZ EULER-MÓDSZER HIBAELEMZÉSE

191

ahol 0 < ϑi < 1. Ezután innen kapjuk a g(xi , h) képlethibának az xi körüli Taylor-sorfejtését:

hgi = y(xi + h) − y(xi ) − hf (xi , y(xi )) h2 = [y(xi ) + hy 0 (xi ) + y 00 (xi + ϑi h)] − y(xi ) − hy 0 (xi ), 2 ahol gyelembe vettük, hogy a (9.3) dierenciálegyenlet szerint f (x, y(x)) = y 0 (x). Tehát

|gi | =

h h 00 |y (xi + ϑi h)| ≤ M2 , 2 2

M2 := max |y 00 (x)|. [0,1]

Amit itt le lehet olvasni: hogy az Euler-módszer képlethibája h-val együtt nullához tart, ezt a tulajdonságot úgy említjük, hogy az Euler-módszer konzisztens. Most a gi becslését (9.10)-be helyettesítjük be: # " # " ¸ · i i X X h h L Lxi+1 L h ≤ e |e0 | + M2 , |ei+1 | ≤ e |e0 | + |gk |h ≤ e |e0 | + M2 2 2 k=0 k=0 (9.12) Pi mert k=0 h = (i + 1)h = xi+1 ≤ 1. Figyelmeztetés: ei+1 = y(xi+1 ) − yi+1 a hiba, eLxi+1 ≤ eL az exponenciális függvény értéke. (9.12)-b®l azt olvassuk le, hogy e0 = y(0) − y0 6= 0 esetén a konvergenciát nem tudjuk garantálni: ha y0 eltér y(0)-tól, akkor a kés®bbiekben ez az eltérés még n®het is. Ez a megjegyzés akkor fontos, ha a pontos y(0) érték nem áll rendelkezésünkre, mert az egy másik feladat eredménye és, mint ilyen, hibával terhelt. Ha viszont e0 = 0, akkor (9.12)-b®l |ei+1 | ≤ eL h2 M2 marad, és innen látjuk, hogy ei+1 → 0, amikor h → 0. Ekkor tehát a konvergencia következik. Alkalmazzuk a (9.12) hibabecslésünket a (9.8) dierenciálegyenlet numerikus megoldására! Ekkor L = 10, M2 = y 00 (1) = L2 eL ≈ 2202646.6, eL M22 ≈ 2.4 · 1010 . Összehasonlítva a (9.9) számítási eredményünkkel a hibabecslés körülbelül eL ≈ 22026.6-szerese az ott kapott értéknek, de a hiba h-ban els®rend¶ségét bizonyítja. Felhívjuk a gyelmet a következ®re: a konvergencia nem függ y0 konkrét értékét®l, csak legyen y0 = y(0), ezenkívül a konvergencia nem függ a konkrét f -t®l: csak legyen az folytonosan dierenciálható.

© Stoyan Gisbert

© Typotex Kiadó

192

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

Továbbá, a numerikus eredmény az {yi }N i=0 sorozat, és annak konvergenciáját várjuk az y(x) függvényhez, pontosabban annak {y(xi )}N i=0 értékeihez. A konvergencia ellen®rzéséhez a [0, 1] intervallum valamelyik felosztásában az xi = ih = x∗ pontot rögzítjük, ahol i = i(h, x∗ ). A kés®bbiekben i(h, x∗ ) → ∞, ha h → 0. A gyakorlati számításnál a legcélszer¶bb a felosztás intervallumszámát duplázni, a h lépésköz¶ felosztás után h/2-vel számítva stb.

Összefoglalás: az Euler-módszer tulajdonságai.

a) Ha az f függvény y -ban Lipschitz-folytonos L Lipschitz-állandóval, akkor az Euler-módszer stabil: érvényes à ! i−1 X |ei | ≤ eLxi |e0 | + |gk |h . k=0

b) Ha y ∈ C 2 (pl. amikor f ∈ C 1 {[0, 1] × IR}), akkor az Euler-módszer konzisztens: a gk lokális hibáira igaz

|gk | ≤

h M2 = O(h), 2

M2 := max |y 00 (x)|. [0,1]

c) konzisztencia + stabilitás = konvergencia: Ha e0 = 0 és y ∈ C 2 , akkor a [0, 1] intervallumon az Euler-módszer konvergens:

h |ei | = |y(xi ) − yi | ≤ eL M2 = O(h). 2 A módszer konvergenciarendje eszerint 1, amit lassú de biztos-nak lehet jellemezni.

9.5. A javított Euler-módszer Lassú konvergenciája miatt (ld. fent a számítási eredményeket a második tesztfeladathoz) az Euler-módszert ritkán alkalmazzák, pl. akkor, amikor a feladat nemlineáris és olyan nagyméret¶, hogy jobb (magasabbrend¶) módszerek bevetése lehetetlen; a módszert viszont a következ® módon javíthatjuk. El®ször csak egy fél Euler-lépést teszünk meg, majd a kapott pontban újra számítjuk az f értékét, a megoldás deriváltját  és ezzel a meredekséggel tesszük meg az egész lépést (xi , yi )-b®l. A fél lépés elvisz az [xi , xi+1 ] intervallum közepére, és a szimmetria alapján remélhetjük, hogy az ott kiszámított meredekség másodrend¶ pontosságot hoz. Képletekkel (ld. a 9.2. ábrát):

© Stoyan Gisbert

© Typotex Kiadó

9.5. A JAVÍTOTT EULER-MÓDSZER

193 y(x)

y y1

} hf(0,y(0)) /2

y(0)

0

h/2

x1=h

x

9.2. ábra. A javított Euler-módszer els® lépése a) a fél Euler-lépés:

h h xi+1/2 = xi + , yi+1/2 = yi + f (xi , yi ), 2 2 b) az egész lépés új meredekséggel:

xi+1 = xi + h, yi+1 = yi + hf (xi+1/2 , yi+1/2 ). Ezen módszer lokális hibáját, a 9.4. pontban megtárgyalt Euler-módszerhez hasonlóan, a következ®képpen deniáljuk:

g(xi , h) = gi :=

y(xi+1 ) − y(xi ) − k2 , h

(9.13)

h h k1 := f (xi , y(xi )), k2 := f (xi + , y(xi ) + k1 ). 2 2 A javított Euler-módszer képlethibájának vizsgálatához feltesszük, hogy f legyen kétszer folytonosan dierenciálható mindkét változója szerint, és így y háromszor folytonosan dierenciálható x szerint. A továbbiakban kellene tudni a kétváltozós f függvény Taylor-sorfejtését. Ezt viszont vissza lehet vezetni az egyváltozós esetre. Ami minket érdekelni fog, az f (x + δx, y + δy) sorfejtése az (x, y) helyen. Vezessük be a következ® F (t) segédfüggvényt: F (t) := f (x + tδx, y + tδy), ahol az egyszer¶ség kedvéért xi helyett x-et írtuk, y(xi ) helyett y -t, és

h h h =: δx, k1 = f (xi , y(xi )) =: δy. 2 2 2

© Stoyan Gisbert

© Typotex Kiadó

194

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

Ekkor k2 = F (1) = f (x + δx, y + δy) sorfejtése a t = 0 helyen hasznos lesz. Ez a következ® alakot nyer, ha a második deriváltakkal írjuk fel a hibatagot:

t2 00 F (ϑt) (ahol 0 < ϑ < 1) 2 = f (x, y) + t [fx δx + fy δy] (x, y) ¤ t2 £ fxx δx2 + 2fxy δxδy + fyy δy 2 (x + ϑtδx, y + ϑtδy). + 2

F (t) = F (0) + tF 0 (0) +

Itt a parciális deriváltakat alsó indexszel jelöltük, pl. fxy = felhasználtuk, hogy

∂2f , ∂x∂y

valamint

d(y + tδy) d(x + tδx) = δx, = δy dt dt és így a láncszabály szerint ¸ · d(y + tδy) d(x + tδx) 0 + fy (x + tδx, y + tδy) F (t) = fx dt dt = [fx δx + fy δy](x + tδx, y + tδy), ¤ dF 0 £ = fxx δx2 + 2fxy δxδy + fyy δy 2 (x + tδx, y + tδy). F 00 (t) = dt Az el®z® relációkba helyettesítve a

t = 1, x = xi , y = y(xi ), δx =

h h h , δy = k1 = f (xi , y(xi )) 2 2 2

kifejezéseket, kapjuk

1 k2 = F (1) = F (0) + F 0 (0) + F 00 (ϑ) 2 h = f (xi , y(xi )) + [fx + fy f ] (xi , y(xi )) + O(h2 ), 2 mert

F 00 (ϑ) =

¤ h2 £ fxx + 2fxy f + fyy f 2 (x + ϑδx, y + ϑδy) = O(h2 ) 4

amikor feltevésünk szerint f kétszer folytonosan dierenciálható. Figyelembe véve (9.11)-et, végül is azt kapjuk, hogy

k2 = f (xi , y(xi )) +

h h [fx + fy f ] (xi , y(xi )) + O(h2 ) = y 0 (xi ) + y 00 (xi ) + O(h2 ). 2 2

© Stoyan Gisbert

© Typotex Kiadó

9.5. A JAVÍTOTT EULER-MÓDSZER

195

Most a (9.13)-ban deniált gi sorfejtését az (xi , y(xi )) helyen össze tudjuk állítani: µ ¶ 1 h2 00 0 3 y(xi ) + hy (xi ) + y (xi ) + O(h ) − y(xi ) gi = h 2 µ ¶ h 00 0 2 − y (xi ) + y (xi ) + O(h ) = O(h2 ). 2 Ez azt jelenti, hogy a javított Euler-módszer konzisztens. Mivel a módszerre hasonló stabilitási becslés érvényes, mint az Eulermódszerre, a másodrend¶ konvergencia következik. Ugyanazzal a (9.8) feladatra vonatkozó számítási példával, mint amelyet az Euler-módszernél használtuk, a javított Euler-módszer pontosságát is szemléltetjük: a) h=0.1: xi y(xi ) 0.1 2.71828 0.2 7.38906 0.3 20.0855 .. .. . . 1.0

22026.5

yi 2.50000 6.25000 15.6250 .. . 9536.74

b) h=0.05: xi y(xi ) 0.05 1.64872 0.1 2.71828 0.15 4.48169 .. .. . . 1.0

22026.5

yi 1.62500 2.64063 4.29102 .. . 16484.2

Ezenkívül olyan táblázatot is mutatunk (mint az Euler-módszer esetén), amely az eN := |y(xN ) − yN | hiba viselkedését mutatja N függvényében:

N h 10 0.1 20 0.05 40 0.025 80 0.0125 160 0.00625 320 0.003125 640 0.0015625

yN 9536.74 16484.2 20200.2 21510.1 21890.0 21991.5 22017.6

eN 12489.8 5542.29 1826.29 516.357 136.423 34.9928 8.85644

eN /eN/2 0.4437 0.3295 0.2827 0.2642 0.2565 0.2531

A táblázat mutatja a másodrend¶ konvergenciát: a mindenkori és az el®z® hiba hányadosa közeledik 0.25 felé, tehát úgy viselkedik, mint a h2 . Amilyen hibát ér el a javított Euler-módszer N = 40-nel, azt az Eulermódszer (közelít®leg) N = 640-nel éri el. Közben ehhez a javított Eulermódszernek 80 függvénykiértékelésre van szüksége, az Euler-módszernek 640re, vagyis elkönyvelhetjük: ezen a példán a javított Euler-módszer kb. 8-szor hatékonyabb.

© Stoyan Gisbert

© Typotex Kiadó

196

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

A javított Euler-módszer példájából azt látjuk, hogy egynél magasabbrend¶ módszer is konstruálható anélkül, hogy az f deriváltjainak képletére szükség lenne. Ezt az utat lehet általánosítani. Így kapjuk az egyik legismertebb eljárást közönséges dierenciálegyenletek numerikus megoldására, a negyedrend¶ Runge-Kutta-módszer t: El®ször deniáljuk az alábbi k -számokat (rendszer esetén vektorokat):

k1 := f (xi , yi ), h h k2 := f (xi + , yi + k1 ), 2 2 h h k3 := f (xi + , yi + k2 ), 2 2 k4 := f (xi + h, yi + hk3 ). Ezeket a kj számokat lineárisan kombinálva az új y -értéket így számítjuk ki:

yi+1 = yi +

h (k1 + 2k2 + 2k3 + k4 ) . 6

Nem véletlen, hogy az xi+1/2 ponthoz tartozó f -értékek összesen négyszeres súllyal szerepelnek, míg az [xi , xi+1 ] intervallum végpontjaihoz tartozó f értékek csak egyszeres súllyal: ez a Simpson-féle kvadratúraképletnek felel meg. A negyedrend¶ Runge-Kutta-módszer esetén is mutatjuk a (9.8) feladat számításánál kapott eredményeket: a) h=0.1: xi y(xi ) 0.1 2.71828 0.2 7.38906 0.3 20.0855 .. .. . . 1.0

22026.5

yi 2.70833 7.33507 19.8658 .. . 21233.5

b) h=0.05: xi y(xi ) 0.05 1.64872 0.1 2.71828 0.15 4.48169 .. .. . . 1.0

22026.5

yi 1.64844 2.71735 4.47938 .. . 21950.8

Itt már érdemes a numerikus eredmények helyes számjegyeit aláhúzni.

9.6. Az implicit Euler-módszer Tekintsük most az y 0 = f (x, y) egyenlet közelít® megoldását az úgynevezett implicit Euler-módszerrel, vagyis az

yi+1 = yi + hf (xi+1 , yi+1 )

(9.14)

© Stoyan Gisbert

© Typotex Kiadó

9.6. AZ IMPLICIT EULER-MÓDSZER

197

képlet segítségével, amelynek jobb oldalán a keresett yi+1 érték is el®fordul. Úgy, mint az eredeti Euler módszer (amit a megkülönböztetés miatt explicit nek is hívunk), az implicit Euler-módszer is konzistens és konvergencia rendje 1. Az explicit Euler-módszerrel szemben az a hátránya, hogy használata egy (általában: nemlineáris) egyenlet megoldásával jár. Ez a hátrány csökken, amikor lineáris dierenciálegyenletek rendszerér®l van szó.

9.6.1. Az implicit Euler-módszer lineáris rendszerekre Legyen y ∈ IRn és f : [0, 1]×IRn → IRn , mégpedig f (x, y) = Ay +g(x), A ∈ IRn×n : y 0 = Ay + g(x). Ekkor az implicit Euler-módszer igen fontos abban az esetben, amikor az A mátrix rosszul kondicionált és sajátértékei negatívak. A módszer most a következ® alakot veszi fel:

yi+1 = yi + h [Ayi+1 + g(xi+1 )] , és a még ismeretlen yi+1 vektort átrendezve kapjuk (9.15)

[I − hA]yi+1 = yi + hg(xi+1 ),

ahol I az n × n-es egységmátrix. Az itt balra álló mátrix LU-felbontását számítjuk ki, majd megoldjuk a rendszert. Mivel A nem függ x-t®l, ezt a felbontást elegend® egyszer az elején elvégezni. A módszer el®nyét az explicit Euler-módszerrel szemben abban a legegyszer¶bb esetben fogjuk elmagyarázni, amikor n = 1, tehát csak egy differenciálegyenlet van és g sem függ x-t®l, vagyis A és g számok. Legyen g > 0, és A-ról feltesszük, hogy negatív: A = −q, q > 0. A dierenciálegyenletünk tehát (n = 1 miatt I = 1): ¢ g¡ 1 − e−qx . y 0 = g − qy, megoldása y(0) = 0 esetén: y(x) = (9.16) q Ez a függvény monoton módon növekszik és x → ∞-re gq -hoz tart. Esetünkben (9.15) alakja:

[1 + hq]yi+1 = yi + hg, vagyis yi+1 =

yi + hg . 1 + hq

Ebb®l azt látjuk, hogy yi+1 kiszámításával semmi probléma nincs, és yi ≥ 0val és g > 0-val együtt yi+1 is pozitív.

© Stoyan Gisbert

© Typotex Kiadó

198

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

y 4

2

0

0

0,125

0,25

0,375

0,5 x

explicit Euler -2

-4

9.3. ábra. Pontos megoldás, explicit és implicit Euler-módszer eredménye: y'=g-qy, g=q=25, h=0.1 Most ugyanazt a dierenciálegyenletet az explicit Euler-módszerrel próbáljuk megoldani:

yi+1 = yi + h(g − qyi ) = yi (1 − qh) + hg. Korábbi eredményeink szerint az els®rend¶ konvergencia itt garantált, de a képlet mutatja, hogy 1 − qh < −1 esetén növekv® oszcillációk keletkeznek. Ez nem cáfolja a konvergenciát, mert h → 0-kor bizonyára 1 − qh → +1 lesz, de a számítógépen véges h-val dolgozunk, és ekkor könnyen megtörténhet, hogy hq > 2, különösen, ha q nagy, ld. a 9.3 ábrát. A numerikus megoldás itt két okból is elfogadhatatlan: nem marad korlátos i → ∞ esetén, ezenkívül oszcillációkat mutat  holott a pontos megoldás monoton módon közeledik egy konstanshoz, amikor x → ∞. Amikor, mint a fenti példában, csak egy egyenletr®l van szó, egy transzformációval a nagy q -t el tudjuk tüntetni: legyen t = qx az új független változó. Ekkor dy dx 1 1 t dz g = = y 0 (x) = (g − qy) = − z. x = , y(x(t)) =: z(t), q dt dx dt q q q Az ilyen transzformációnak viszont nincs a kívánt hatása rendszerek esetén. Nézzünk erre egy példát! A kezdetiérték feladat legyen µ ¶ µ ¶ µ ¶ 6 3 −501 500 0 y = y+ , y(0) = . 500 −501 −7 2 Az itteni mátrix megfelel annak, amit az elején mint az explicit Euler-módszer számára problémás esetet említettünk: sajátértékei negatívak (konkrétan

© Stoyan Gisbert

© Typotex Kiadó

9.6. AZ IMPLICIT EULER-MÓDSZER

199

sajátértékei -1 és -1001), és a mátrix mérsékelten rosszul kondicionált, ugyanis cond A = 1001. A fenti transzformációval az A mátrix elé lehet egy szorzót vinni  de ett®l nem változik a kondiciószáma. Az Euler-módszer esetén akkor nem lesz gond, ha h elég kicsi: 2 2 = 1001 , de ekkor - a numerikus megoldás korlátos marad, ha h ≤ |λmax | még lehetnek oszcillációk; 1 1 = 1001 , - nincsenek oszcillációk a numerikus megoldásban, ha h ≤ |λmax | Ez már egy elég kellemetlen korlátozás, ami könnyen fokozható (ha -501 és 1 -re 500 helyett a mátrixban -5001 és 5000 áll, akkor az utóbbi korlát h ≤ 10001 változik, stb). Mivel a pontos megoldás

µ ¶ µ ¶ µ ¶ 1 −x 1 38 38 1 −1001x e +3 , e − y(x) = 77 −1 77 39 1 abban lehetne reménykedni, hogy miután az a rész a megoldásban, amely kapcsolatos a -1001 sajátértékkel, jelentéktelenné vált, nagyobb lépéssel lehetne haladni az explicit Euler-módszerrel is. De ez tévedés, mert a mátrix nem változott és a növekv® oszcillációk most is beindulnak. Az a probléma, hogy a numerikus megoldás nem marad korlátos i → ∞ esetén, az nem t¶nik el más explicit módszer használatákor sem. Vegyük pl. a javított Euler-módszert. Ha ezt a (9.16)-re alkalmazzuk, akkor a képlet

¶ µ ¶ ¸ µ qh h q 2 h2 +g 1− . = yi + h g − q(yi + (g − qyi )) = yi 1 − qh + 2 2 2 ·

yi+1

2

Itt yi mellett áll z := qh egy polinomja: p(z) = 1 − z + z2 = 21 (1 + (1 − z)2 ), amelynek értékei nagyobbak egynél, ha z = qh > 2. Így yi gyorsan fog növekedni i-vel, kivéve, ha h ≤ 2q . Ez ugyanaz a korlátozás, mint az explicit Euler-módszer esetén. Az ilyen egyenleteket, amelyek Jacobi-mátrixa rosszul kondiciónált vagy szinguláris, sajátértékei nempozitívak (ill. valós részei nempozitívak), amelyeken az implicit Euler-módszer lényegesen jobban m¶ködik, mint az explicit módszerek (akár magasabbrend¶ek is), merev dierenciálegyenletek nek hívjuk. A merev rendszerek megoldásakor az explicit Euler-módszer oszcillációmentességét biztosító h-korlát er®sebben hátráltatja a számítást, mint az, hogy az implicit Euler-módszer minden lépése algebrai egyenletek megoldásával jár.

© Stoyan Gisbert

© Typotex Kiadó

200

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

9.6.2. Nemlineáris rendszerek Ha f : [0, 1] × IRn → IRn és nem feltétlenül lineáris y -ban, akkor a (9.14) implicit Euler-módszer minden lépésében szembenállunk az (9.17)

Fi (y) := y − hf (xi+1 , y) − yi = 0

egyenlettel, amelynek megoldása y =: yi+1 keresett. Erre alkalmazzuk a Newton-módszert. Kézenfekv® nulladik közelítésként yi+1 -hez az el®z® yi vektort használni: yi+1,0 := yi . A Newton-módszer képlete ekkor (ld. a 7.3.1. pontot)

0 = Fi (yi ) + Fi0 (yi )δy, avagy

Fi0 (yi )δy = −Fi (yi ) = −(yi − hf (xi+1 , yi ) − yi ) = hf (xi+1 , yi ),

(9.18)

ahol δy = yi+1,1 − yi+1,0 = yi+1,1 − yi a nulladik közelítés javítása. Az Fi0 alakja itt Fi0 (yi ) = I − hJ(xi+1 , yi ), (9.19) az f (x, y) vektorfüggvény J(x, y) Jacobi-mátrix szával. A (9.19) képlet megér¡y(1) ¢ ¡ (1) ¢ téséhez vizsgáljuk az n = 2 esetet, amikor (9.17)-ben yi = yi(2) és y = yy(2) , tehát

i

¶ µ (1) ¶ µ (1) ¶ µ yi y f1 (xi+1 , y) − (2) . Fi (y) = −h (2) f2 (xi+1 , y) y yi

Ezen összefüggés els® sorának y (1) szerinti parciális deriváltja két részb®l tev®dik össze, mert a harmadik jobboldali tag konstans, deriváltja 0. Az els® ∂f1 (2) tag deriváltja viszont 1, a másodiké −h ∂y szerinti (1) . Továbbá, az els® sor y ∂f1 (1) deriváltja −h ∂y változóját kell (2) , mert ennek kiszámításakor az els® tag y konstansnak tekinteni. ∂f2 Hasonlóan a második sor y (1) szerinti parciális deriváltja −h ∂y (1) , de az ∂f2 els® tag y (2) szerinti deriváltja 1, a másodiké −h ∂y (2) . Összegezve valóban

à µ ¶ ∂f1 1 0 0 ∂y (1) Fi = − h ∂f2 0 1 ∂y (1)

∂f1 ∂y (2) ∂f2 ∂y (2)

! = I − hJ.

Most a (9.19) képletet vesszük gyelembe (9.18)-ban, továbbá az ottani yi+1,1 els® közelítést (9.17) megoldásához máris yi+1 -nek, tehát végs®nek fogadjuk

© Stoyan Gisbert

© Typotex Kiadó

9.6. AZ IMPLICIT EULER-MÓDSZER

201

el. Ugyanis utána lehet számolni, hogy yi+1,1 kiszámításával a dierenciálegyenletet h szerint els®rendben megoldó eljárást kaptunk és további Newtoniterációk ezt a rendet már nem javítják. Ezenkívül, a merev dierenciálegyenletek szempontjából a lényeg már megtörtént: megjelent az approximációban a keresett új érték szorzójaként az f Jacobi-mátrixa. Ezzel a következ® lineáris egyenletrendszert javasoljuk számítási képletnek: [I − hJ(xi+1 , yi )]δy = hf (xi+1 , yi ), yi+1 = yi + δy. (9.20) Abban az esetben, amikor f (x, y) = Ay + g(x), a Jacobi-mátrix éppen J = A, és ekkor (9.20) azonos (9.15)-tel. Itt, a nemlineáris rendszereknél, az I − hJ(xi+1 , yi ) mátrix változik i-vel, tehát minden lépésben LU-felbontást kell készítenünk.

9.6.3. Az implicit Euler-módszer algoritmusa, tesztfeladatok Az implicit Euler-módszer algoritmusánál is a [0, 1] intervallumot N darab h hosszú intervallumra osztjuk fel, de y(x) most n-dimenziós vektorfüggvény és minden xi = ih osztóponthoz szerzünk egy yi vektort, amely közelíti a pontos megoldás megfelel® y(xi ) vektorát. Adott az y0 = y(0) kezdetivektor, a dierenciálegyenlet f (x, y) jobboldalát és J(x, y) Jacobi-mátrixát kiszámító eljárás, továbbá N ≥ 1, az intervallumok száma. 1. x0 := 0, h := 1/N 2. i := 0, 1, . . . , N − 1 3. [xi+1 := xi + h, Ji := J(xi+1 , yi ) 4. I − h ∗ Ji =⇒ [L, U, sing] 5. ? sing ? [ stop: szinguláris mátrix, x = xi+1 , y = yi ] 6. LU δy = h ∗ f (xi+1 , yi ) =⇒ δy 7. yi+1 := yi + δy ]i 8. [stop: eredmény (x0 , y0 ), (x1 , y1 ), . . . , (xN , yN )] Amennyiben szingularitást tapasztalunk, újból indítsuk be a számítást nagyobb N -nel, mert a 2.3.3. pontbeli perturbációs lemma garantálja, hogy elég kicsi h-ra I − h ∗ J reguláris lesz. Mint els® tesztelési példát az egyszer¶ (9.7) egyenletet rendszerré b®vítjük ki: µ ¶ µ ¶ µ ¶ µ ¶ 1 y1 (0) 3 d y1 = , = , dx y2 2 y2 (0) 4

© Stoyan Gisbert

© Typotex Kiadó

202

FEJEZET 9. KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK

100

y

75

50

25

0

0

0,25

0,5

0,75

1

x

9.4. ábra. A kiindulási és az els® két id®lépés utáni h®eloszlás: N = 6, h = 0.01 mert ennek pontos megoldását, y1 = 3 + x, y2 = 4 + 2x, hiba nélkül kell, hogy adja a program  kerekítési hibáktól eltekintve. Itt tehát µ ¶ µ ¶ ¶ µ f1 1 0 0 f (x, y) = . = , J(x, y) = 0 0 f2 2

Második tesztfeladatunk egy h®vezetési példa: egy 100 fokos és egy 0

fokos rudat összerakunk a t = 0 id®pontban, majd a meleg rúd küls® oldalán nulla h®mérsékletet állítunk be, a hideg rúd küls® oldalán 50 fokos h®mérsékletet, aztán N bels® pontban gyeljük az y = (y1 (t), . . . , yN (t))T h®mérséklet kiegyenlít®dését. Ennek diszkrét modellje a következ®, lineáris dierenciálegyenletekb®l álló rendszer:     2 −1 0 0 ... 0 0 −1 2 −1 0 . . . 0    0     dy 2    , ... = −(N + 1) ∗  . . . . . . . . . . . . . . . . . .  y +   dt  0 . . . 0 −1 2 −1   0 2 0 ... 0 0 −1 2 50(N + 1) a kezdetiérték y(0) = (100, . . . , 100, 0, . . . , 0)T . A mátrix szimmetrikus, tehát minden sajátértéke valós, továbbá, a Gersgorin-körök segítségével ellen®rizhet®, hogy a sajátértékek a [0, 4(N + 1)2 ] intervallumban vannak  vagyis a rendszer merev lesz, ha N nagy. (Nagyobb N -re jobb pontossággal kapjuk a h®eloszlást.) A Jacobi-mátrix megegyezik az egyenletrendszerben látható tridiagonális mátrixszal, beleértve a −(N + 1)2 szorzóját. Az alábbiakban mutatjuk N = 6-ra az els® és második id®lépés (6 számjegyre kerekített) eredményeit akkor, amikor h = 0.01 az id®lépés, ld. a (9.4

© Stoyan Gisbert

© Typotex Kiadó

9.6. AZ IMPLICIT EULER-MÓDSZER

203

ábrát is, ahol az eredményeket a szélén felvett 0 ill. 50 értékkel egészítettük ki.

y (1) = (0.721672, 0.875330, 0.774557, 0.213697, 0.088954, 0.145751), y (2) = (0.547329, 0.738856, 0.651865, 0.314483, 0.182787, 0.242584). Mint harmadik tesztfeladatot egy konkrét kémiai folyamatot leíró rendszert tekintünk, amelyben y1 , y2 , ill. y3 egy A, B , ill. C anyag t id®ben változó koncentrációja. Összefoglalva az y(t) = (y1 (t), y2 (t), y3 (t))T megoldásvektorba, a következ® nemlineáris egyenletrendszer modellezi a jelenséget:     −k1 0 k2 y2 1 dy    k1 −k3 y2 −k2 y2 = y, y(0) = 0 . dt 0 k3 y2 0 0 A paraméterek értékei:

k1 = 0.04, k2 = 104 , k3 = 3 · 107 . Ezen nemlineáris rendszer Jacobi-mátrixa   −k1 k2 y3 k2 y2 J = J(y) =  k1 −2k3 y2 − k2 y3 −k2 y2  . 0 2k3 y2 0

J sajátértékei (ha yi = yi (0)-t, i = 1, 2, 3, helyettesítünk be) λ1 = λ2 = 0, λ3 = −k1 , tehát induláskor a rendszer nem merev  de már kis id® elteltével azzá válik. A nagy k3 miatt azzal számolhatunk, hogy hamarosan érvényes k3 y2 >> k1 és k3 y2 >> k2 y3 , és ekkor

λ1 = 0, λ2

≈ 0, λ3 ≈ −2k3 y2 .