You are on page 1of 16

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

Algorytmy numeryczne
w Delphi. Ksiga eksperta

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Autorzy: Bernard Baron,


Artur Pasierbek, Marcin Maciek
ISBN: 83-7361-951-8
Format: B5, stron: 544

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Metody numeryczne s to sposoby rozwizywania zoonych problemw


matematycznych za pomoc narzdzi obliczeniowych udostpnianych przez popularne
jzyki programowania. Jeden z najpopularniejszych jzykw Pascal, bdcy
podstaw jzyka ObjectPascal wykorzystywanego w Delphi, pozwala na bardzo
atw implementacj mechanizmw oblicze numerycznych. Specyfika projektowania
aplikacji w rodowisku Delphi pozwala na utworzenie komponentw realizujcych
algorytmy numeryczne i stosowanie ich w wielu aplikacjach.
Ksika Algorytmy numeryczne w Delphi. Ksiga eksperta przedstawia najczciej
wykorzystywane metody numeryczne wraz z przykadami ich implementacji w jzyku
ObjectPascal. Kade zagadnienie jest omwione zarwno od strony teoretycznej, jak
i praktycznej, co uatwia jego zrozumienie i pozwala na modyfikacje zamieszczonych
w ksice kodw rdowych.
Typy, funkcje, klasy i procedury wykorzystywane w algorytmach numerycznych
Algebra macierzy i rwnania liniowe
Badanie funkcji
Rozwizywanie rwna nieliniowych i wyznaczanie wartoci wasnych macierzy
Ukady rwna rniczkowych liniowych i nieliniowych
Przeksztacenia Fouriera i Laplacea
Niemal kady problem obliczeniowy mona rozwiza za pomoc metod numerycznych.
Nie musisz wic wymyla ponownie koa wystarczy, e poznasz opisane w tej
ksice algorytmy.

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Spis treci
Zmiany w stosunku do poprzedniego wydania ......................................... 9
Przedmowa ................................................................................................... 11
Rozdzia 1. Definicje typw, procedur,
funkcji i klas dla zagadnie numerycznych .......................... 13
1.1. Organizacja biblioteki oblicze numerycznych ......................................................................... 14
1.2. Typ wariantowy ......................................................................................................................... 14
1.3. Predefiniowany typ liczb zespolonych ...................................................................................... 16
1.4. Definicja typu liczb zespolonych ............................................................................................... 17
1.5. Funkcje konwersji liczb rzeczywistych zespolonych na acuch i odwrotnie ............................ 18
1.6. Wektor ....................................................................................................................................... 20
1.7. Macierz ...................................................................................................................................... 21
1.8. Reprezentacja wektorw i macierzy za pomoc tablic ............................................................... 21
1.8.1. Przydzielanie i zwalnianie pamici dla tablic jednowymiarowych .................................. 23
1.8.2. Przydzielanie i zwalnianie pamici dla tablic dwuwymiarowych .................................... 24
1.9. Zapis i odczyt wektorw oraz macierzy w komponencie TStringGrid ...................................... 25
1.10. Wzorcowe funkcje zapisu i odczytu plikw macierzy ............................................................... 26

Rozdzia 2. Algebra macierzy i rwnania liniowe .................................... 27


2.1. Metoda bezporedniego rozwizywania ukadu rwna macierzowych metod eliminacji Gaussa ......28
2.1.1. Skalowanie ukadu rwna liniowych ............................................................................. 32
2.2. Rozwizywanie ukadu rwna liniowych wedug algorytmu Crouta ....................................... 34
2.3. Obliczanie macierzy odwrotnej metod eliminacji Gaussa ........................................................ 39
2.4. Obliczanie macierzy odwrotnej metod Crouta ......................................................................... 43
2.5. Obliczanie wyznacznika macierzy kwadratowej ....................................................................... 48
2.6. Wskanik uwarunkowania macierzy ......................................................................................... 50
2.7. Obliczanie wartoci wasnej macierzy kwadratowej A o najwikszym module ........................... 52
2.8. Obliczanie wartoci wasnej macierzy 1A o najwikszym module ....................................... 53
2.9. Rozwizywanie ukadu rwna liniowych metod iteracji Jacobiego oraz Richardsona ........... 55
2.10. Rozwizywanie ukadu rwna metod Gaussa-Seidela oraz metod nadrelaksacji ................. 58
2.11. Pseudorozwizanie ukadu nadokrelonego ............................................................................... 60
2.12. Metoda najmniejszych kwadratw ............................................................................................ 66
2.13. Algorytm Crouta rozwizywania rzadkich ukadw rwna liniowych ....................................... 68
2.14. Algorytmy iteracyjne Richardsona oraz Gaussa-Seidela dla macierzy rzadkich ....................... 78
Przykady ............................................................................................................................................ 85
Komponenty .............................................................................................................................. 85
Waciwoci .............................................................................................................................. 85

Algorytmy numeryczne w Delphi


Zdarzenia ................................................................................................................................... 86
Przykad 2.1. Obliczanie macierzy odwrotnej ........................................................................... 88
Przykad 2.2. Rozwizywanie ukadw rwna algebraicznych ............................................... 95
Przykad 2.3. Rozwizywanie ukadw rwna algebraicznych rzadkich ............................... 102

Rozdzia 3. Praktyka badania funkcji ......................................................109


3.1. Cakowanie i rniczkowanie numeryczne .............................................................................. 109
3.1.1. Ekstrapolacja iterowana Richardsona i Aitkena ............................................................ 109
3.1.2. Cakowanie numeryczne ................................................................................................ 116
3.1.3. Rniczkowanie numeryczne ........................................................................................ 125
3.1.4. Gradient funkcji wielu zmiennych ................................................................................. 135
3.1.5. Jakobian funkcji wektorowej wielu zmiennych ............................................................. 136
3.1.6. Hesjan funkcji wielu zmiennych .................................................................................... 137
3.2. Wybrane metody aproksymacji i interpolacji liniowej funkcji jednej zmiennej ...................... 138
3.2.1. Aproksymacja metod najmniejszych kwadratw ......................................................... 139
3.2.2. Aproksymacja funkcji dyskretnej wielomianem ............................................................ 141
3.2.3. Aproksymacja ukadami funkcji ortogonalnych ............................................................ 141
3.2.4. Aproksymacja wielomianami ortogonalnymi ................................................................ 142
3.2.5. Implementacja metod aproksymacji .............................................................................. 144
3.2.6. Interpolacja funkcji dyskretnej krzyw aman ............................................................. 159
3.2.7. Interpolacja wielomianem potgowym Lagrangea ....................................................... 160
3.2.8. Interpolacja funkcjami sklejanymi ................................................................................. 160
3.2.9. Interpolacja funkcjami i wielomianami ortogonalnymi ................................................. 162
3.2.10. Metody interpolacji w ramach klasy TInterpolation .................................................... 165
3.3. Wybrane metody poszukiwania minimum funkcji wielu zmiennych
metodami bezgradientowymi ................................................................................................... 180
3.3.1. Wyznaczenie minimum funkcji wielu zmiennych bezgradientow metod
poszukiwa prostych Hookea-Jeevesa ................................................................................... 181
3.3.2. Bezgradientowa metoda zotego podziau poszukiwania minimum ........................... 184
3.3.3. Bezgradientowa metoda Powella poszukiwania minimum funkcji wielu zmiennych .... 192
3.4. Wybrane metody poszukiwania minimum funkcji wielu zmiennych
metodami gradientowymi ........................................................................................................ 196
3.4.1. Metoda ekspansji i kontrakcji geometrycznej z jednym testem badania
wspczynnika kroku przy poszukiwaniu minimum w kierunku ................................... 197
3.4.2. Metoda aproksymacji parabolicznej z jednym testem
badania wspczynnika kroku przy poszukiwaniu minimum w kierunku ..................... 201
3.4.3. Algorytm najwikszego spadku ..................................................................................... 206
3.4.4. Zmodyfikowany algorytm Newtona .............................................................................. 210
Przykady ........................................................................................................................................ 215
Komponenty ............................................................................................................................ 215
Przykad 3.1. Testowanie metod cakowania ........................................................................... 216
Przykad 3.2. Testowanie procedur rniczkowania numerycznego ....................................... 221
Przykad 3.3. Testowanie funkcji do wyznaczania macierzy Jacobiego funkcji wektorowej .... 225
Przykad 3.4. Testowanie funkcji do wyznaczania macierzy Hessego funkcji wielu zmiennych .. 229
Przykad 3.5. Testowanie metod klasy TApproximation ......................................................... 231
Przykad 3.6. Testowanie metod klasy TInterpolation ............................................................. 239
Przykad 3.7. Testowanie metod wyznaczania minimum funkcji ............................................ 244

Spis treci

Rozdzia 4. Rwnania nieliniowe,


zera wielomianw, wartoci wasne macierzy ....................251
4.1. Algorytmy rozwizywania ukadw rwna nieliniowych ...................................................... 252
4.1.1. Rozwizywanie ukadw rwna nieliniowych metod Newtona ................................. 253
4.1.2. Rozwizywanie ukadw rwna nieliniowych metod gradientow ........................... 256
4.1.3. Rozwizywanie ukadu rwna nieliniowych zmodyfikowan metod Newtona ......... 260
4.1.4. Rozwizywanie ukadw nieliniowych metod iteracyjn ............................................ 264
4.1.5. Pseudorozwizania nieliniowego ukadu nadokrelonego metod Hookea-Jeevesa .... 267
4.2. Wyznaczanie zer wielomianw metodami Bairstowa i Laguerrea ......................................... 270
4.2.1. Dzielenie wielomianw o wspczynnikach rzeczywistych
przez czynnik liniowy wedug algorytmu Hornera ....................................................... 270
4.2.2. Dzielenie wielomianu przez czynnik kwadratowy ........................................................ 272
4.2.3. Wyznaczanie dzielnikw wielomianu stopnia N > 2
w postaci trjmianu kwadratowego metod Bairstowa ................................................. 273
4.2.4. Wyznaczanie zer wielomianw o wspczynnikach rzeczywistych .............................. 277
4.2.5. Wyznaczanie zer wielomianu metod Laguerrea ......................................................... 280
4.2.6. Wyznaczanie zer wielomianu metod Laguerrea ......................................................... 282
4.3. Wyznaczanie wartoci wasnych macierzy metodami Bairstowa i Laguerrea ........................ 284
4.3.1. Wyznaczanie wspczynnikw wielomianu charakterystycznego
macierzy kwadratowej metod Kryowa ....................................................................... 285
4.3.2. Wyznaczanie wartoci wasnych macierzy metod Bairstowa ...................................... 287
4.3.3. Wyznaczanie wartoci wasnych macierzy metod Laguerrea ..................................... 290
4.4. Wyznaczanie zer funkcji jednej zmiennej metod poowienia przedziau ............................... 291
Przykady ........................................................................................................................................ 293
Komponenty ............................................................................................................................ 293
Przykad 4.1. Testowanie metod rozwizywania ukadu rwna nieliniowych ....................... 294
Przykad 4.2. Testowanie metod rozwizywania ukadu rwna nieliniowych cd. ............ 295
Przykad 4.3. Wyznaczanie zer wielomianw o wspczynnikach rzeczywistych zadanych
z klawiatury za pomoc metod Laguerrea oraz Bairstowa ............................... 300
Przykad 4.4. Wyznaczanie wartoci wasnej macierzy zadanej z klawiatury lub pliku .......... 302
Przykad 4.5. Wyznaczanie zer i ekstremum funkcji Bessela rzdu N .................................... 305

Rozdzia 5. Ukady zwyczajnych rwna


rniczkowych nieliniowych .................................................309
5.1. Ukad rwna rniczkowych jako klasa programowania obiektowego ................................. 310
5.1.1. Definicje typw do zadawania ukadu rwna rniczkowych nieliniowych ............... 311
5.1.2. Definicja klasy prototypowej dla klas implementujcych
rozwizywanie ukadu rwna rniczkowych ............................................................. 312
5.1.3. Definicja klasy prototypowej dla klas potomnych dotyczcych
rozwizywania ukadu rwna rniczkowych nieliniowych ....................................... 318
5.1.4. Aproksymacja dyskretnych wartoci wektorw stanu ................................................... 319
5.1.5. Funkcje pomocnicze do dziaania na wektorach stanu .................................................. 322
5.2. Metody Rungego-Kutty ........................................................................................................... 323
5.3. Rozwizywanie ukadu rwna rniczkowych zwyczajnych metod Rungego-Kutty
z automatycznym doborem kroku cakowania ........................................................................ 327
5.4. Metody Fehlberga .................................................................................................................... 332

Algorytmy numeryczne w Delphi


5.5. Rozwizanie ukadu rwna rniczkowych nieliniowych zwyczajnych metod
Fehlberga z automatycznym doborem kroku cakowania ........................................................ 340
5.6. Rozwizanie ukadu rwna rniczkowych nieliniowych zwyczajnych metod
Dormanda-Princea z automatycznym doborem kroku cakowania ........................................ 344
5.7. Wielokrokowa metoda rozwizywania ukadu rwna rniczkowych nieliniowych
z czonem przewidywania Adamsa-Bashfortha oraz czonem korekcyjnym
Adamsa-Multona z automatycznym doborem kroku i rzdu ................................................... 349
5.7.1. Algorytm Adamsa-Bashfortha ....................................................................................... 349
5.7.2. Algorytm Adamsa-Multona ........................................................................................... 351
5.7.3. Algorytmy przewidywania i korekcji wyraone przez macierz Nordsiecka .................. 354
5.7.4. Faza wstpna oblicze ................................................................................................... 363
5.7.5. Metody klasy TAdamsMultonAbstract i TAdamsMulton,
realizujce algorytm Adamsa-Multona ......................................................................... 368
5.8. Rozwizywanie ukadu rwna nieliniowych metod sztywno stabilnych algorytmw Geara ....374
5.9. Metoda Gragga z ekstrapolacj Bulirscha-Stoera .................................................................... 386
Przykady ........................................................................................................................................ 394
Komponenty ............................................................................................................................ 394
Przykad 5.1. Rozwizywanie ukadw rwna rniczkowych drugiego rzdu .................... 395
Przykad 5.2. Zastosowanie klasy TRoRoNl do rozwizywania
ukadw rwna rniczkowych nieliniowych w ramach pewnej klasy ........... 402
Przykad 5.3. Wahado matematyczne ..................................................................................... 408

Rozdzia 6. Ukady rwna rniczkowych liniowych


o staych wspczynnikach ...................................................413
6.1. Rwnania rnicowe dla rnych aproksymacji funkcji wymuszajcych .................................... 418
6.1.1. Wymuszenie aproksymowane funkcjami przedziaami staymi .................................... 418
6.1.2. Wymuszenie aproksymowane funkcjami przedziaami liniowymi ................................ 420
6.1.3. Wymuszenie aproksymowane wielomianem stopnia drugiego ..................................... 422
6.1.4. Dobr kroku cakowania T ze wzgldu na dobr grnej granicy bdu obliczania
macierzy eAT oraz ze wzgldu na numeryczn stabilno rozwizania ......................... 425
6.2. Definicja typw dla liniowych rwna rniczkowych ........................................................... 427
6.3. Numeryczne rozwizywanie rwna rniczkowych liniowych
o staych wspczynnikach dla aproksymacji wymusze funkcjami przedziaami staymi ..... 429
6.4. Numeryczne rozwizywanie rwna rniczkowych liniowych o staych wspczynnikach
dla aproksymacji wymusze funkcjami przedziaami liniowymi ............................................ 431
6.5. Numeryczne rozwizywanie rwna rniczkowych liniowych o staych wspczynnikach
dla aproksymacji wymusze funkcjami przedziaami kwadratowymi ..................................... 433
Przykady ........................................................................................................................................ 435
Komponenty ............................................................................................................................ 435
Przykad 6.1. Testowanie metod rozwizywania ukadu rwna rniczkowych liniowych .. 435
Przykad 6.2. Testowanie metod rozwizywania ukadu rwna rniczkowych liniowych
zdefiniowanych wewntrz pewnej klasy ........................................................... 440

Rozdzia 7. Praktyka przeksztace Fouriera ...........................................449


7.1. Dyskretna transformacja Fouriera wedug algorytmu Hornera ................................................ 455
7.2. Szybkie przeksztacenie Fouriera wedug algorytmu Cooleya-Tukeya ................................... 457
7.3. Szybkie przeksztacenie Fouriera wedug algorytmu Sandea-Tukeya .................................... 466
7.4. Wyznaczanie wspczynnikw zespolonego szeregu Fouriera dla dowolnej funkcji okresowej .. 470
7.5. Obliczanie odwrotnej transformacji Fouriera dla dowolnej transformaty ................................ 471

Spis treci

Przykady ........................................................................................................................................ 474


Komponenty ............................................................................................................................ 474
Przykad 7.1. Obliczanie zespolonych wspczynnikw szeregu Fouriera .............................. 475
Przykad 7.2. Obliczanie odwrotnej transformacji Fouriera .................................................... 479
Przykad 7.3. Obliczanie zespolonych wspczynnikw szeregu Fouriera
w ramach pewnej klasy ..................................................................................... 483

Rozdzia 8. Praktyka przeksztace Laplacea .......................................487


8.1. Numeryczne obliczanie transformacji odwrotnej Laplacea
w wybranej chwili czasowej z zastosowaniem szeregw Fouriera .......................................... 488
8.2. Numeryczne obliczanie transformacji odwrotnej Laplacea
w wybranej chwili czasowej z zastosowaniem szeregw Laguerrea ...................................... 494
8.3. Numeryczne obliczanie transformacji odwrotnej Laplacea
w wybranej chwili czasowej wedug algorytmu Valsa ............................................................ 498
8.4. Obliczanie transformacji odwrotnej Laplacea
funkcji wymiernej na podstawie jej pozostaoci w biegunach ............................................... 502
8.4.1. Definicja klasy do obliczania odwrotnej transformacji Laplacea
funkcji wymiernej na podstawie jej pozostaoci w biegunach ..................................... 505
Przykady ........................................................................................................................................ 510
Komponenty ............................................................................................................................ 510
Przykad 8.1. Wyznaczanie odwrotnej transformacji Laplacea
funkcji operatorowych zgodnie ze wzorcami funkcji ........................................ 511
Przykad 8.2. Zastosowanie transformacji odwrotnej Laplacea dla funkcji wymiernych ....... 516

Bibliografia ..................................................................................................523
Skorowidz ...................................................................................................525

Rozdzia 6.

Ukady rwna
rniczkowych liniowych
o staych wspczynnikach
Zadany jest ukad N rwna rniczkowych liniowych niejednorodnych:
W
dxi (t ) N
= aij x j (t ) + bij u j (t )
dt
j =1
j =1

(i = 1, 2, ..., N),

(6.1)

gdzie wspczynniki aij oraz bij s rzeczywiste. Ukad ten mona zapisa w postaci macierzowej:
dx(t )
= Ax(t ) + Bu(t ) ,
dt

(6.2)

gdzie:
x1 (t )
x (t )
2
.
x(t ) =
;
.
.

x N (t )

(6.2a)

dx1 (t )
dt
dx (t )
2
dt
dx(t ) .
;
=
dt
.

.
dx N (t )

dt

(6.2b)

414

Algorytmy numeryczne w Delphi


(6.2c)

a11a12 K a1 N
a a Ka
2N
A = 21 22
;

..K .

a N 1a N 2 K a NN
b11b12 Kb1W
b b Kb
2W
B = 21 22
;

. .K .

bN 1bN 2 KbNW

(6.2d)

u1 (t )
u (t )
2
.
u(t ) =
.
.
.

u w (t )

Na czony niejednorodne ukadu (6.1) skada si W wymusze uj(t) (j = 1, 2, ..., W) wystpujcych ze wspczynnikami bij macierzy prostoktnej B. W teorii rwnania (6.2)
centraln rol odgrywa funkcja wykadnicza eAt macierzy kwadratowej A przemnoonej
przez zmienn niezalen t, zdefiniowan szeregiem macierzowym [7]:
e At = 1 + At +

1
1
( At ) k
.
( At ) 2 + K + ( At ) k + K =
2!
k!
k!
k =0

(6.3)

Szereg macierzowy (6.3) jest rwnowany N2 zwykym skalarnym szeregom potgowym:

ij + ( At ) ij +

1
{(At ) 2 }ij + K + 1 {(At ) k }ij + K ,
2!
k!

(i, j = 1, 2, ..., N).

Do zrozumienia konstrukcji caki oglnej rwnania (6.2) niezbdne bd nastpujce


wasnoci funkcji wykadniczej eAt:
1. Jeeli t = 0, to zgodnie z definicj (6.3)

(6.4)

eA0 = 1 (macierz jednostkowa NN-wymiarowa).


2. Jeeli macierz A komutuje z macierz B, a wic AB = BA, to:

eAteBt = e(A+B)t.

(6.5)
At

3. Poniewa na mocy wasnoci (6.5) e e


At

(AA)t

=e

= 1, wic macierz odwrotna

macierzy eAt ma posta:

[e ]

At 1

= e At .

(6.6)

4. Rniczkujc obie strony rwnania macierzowego (6.3) ze wzgldu na t oraz

wyczajc wsplny czynnik A z wyrazw szeregu nieskoczonego, otrzymuje si:


d At
e = Ae At = e At A .
dt

(6.7)

5. Mnoc lewostronnie lub prawostronnie rwnanie macierzowe (6.7) przez A1

(macierz odwrotna macierzy A), a nastpnie cakujc tak otrzymywane rwnania


ze wzgldu na t od t1 do t2, otrzymuje si:

Rozdzia 6. Ukady rwna rniczkowych liniowych o staych wspczynnikach 415


t2

At

dt = A 1 (e At2 e At1 ) = (e At2 e At1 )A 1 .

(6.8)

t1

Do rozwizania ukadu rwna rniczkowych liniowych (6.2) mona zastosowa metod uzmiennienia staych. W tym celu najpierw rozpatruje si przypadek, gdy u(t) 0,
co oznacza, e rwnanie (6.2) jest jednorodne
dx(t )
= Ax(t ) .
dt

(6.9)

atwo wykaza, e caka oglna rwnania jednorodnego (6.9) ma posta:


(6.10)

x(t) = eAt y,
gdzie y jest wektorem N-wymiarowym o skadowych staych.
Istotnie z wasnoci (6.7) wynika
dx(t ) d At
= (e y(t )) = Ae At y = Ax(t) .
dt
dt

(6.11)

Zgodnie z metod uzmiennienia staych przyjmuje si dalej, e wektor y jest funkcj


zmiennej t, co daje:
x(t) = eAt y(t),

(6.12)

a nastpnie podstawia si wyraenie (6.12) do rwnania niejednorodnego (6.2), uwzgldniajc wasno (6.7)
Ae At y(t) + e At

dy (t )
= Ae At y(t) + Bu(t) .
dt

(6.13)

Upraszczajc rwnanie (6.13) o czon AeAty(t) oraz mnoc je lewostronnie przez macierz eAt, otrzymuje si na mocy wasnoci (6.6)
dy (t )
= e At Bu(t) .
dt

(6.14)

Cakujc rwnanie (6.14) ze wzgldu na t od t0 do t, otrzymuje si:


t

y (t ) = y (t 0 ) + e At Bu()d .

(6.15)

t0

Jeeli zadany jest wektor wartoci pocztkowych x(t0), to odpowiadajcy mu wektor


y(t0) mona wyznaczy z rwnania (6.12), stosujc wasno (6.6):
y(t0) = eAt x(t0).

(6.16)

Uwzgldniajc rwnanie (6.15) wraz z podstawieniem (6.16) w rwnaniu (6.12), otrzymuje


si nastpujce rozwizanie rwnania (6.2):

416

Algorytmy numeryczne w Delphi


(6.17)

x(t ) = e A ( t t0 ) x(t0 ) + e At e A Bu()d .


t0

Rwnanie (6.17) nie nadaje si do bezporedniego obliczenia numerycznego. Rozwizanie dokadne (6.17) rwnania (6.2) mona jednak wykorzysta w metodzie krokowej,
zastpujc to rwnanie rwnaniem rnicowym, przyjmujc t0 = kT i t = (k+1)T:
x[(k + 1)T ] = e AT x(kT ) + e A ( k +1)T

( k +1) T

Bu()d .

(6.18)

kT

W obliczaniu caek (6.18) mog wystpi trudnoci zwizane z wystpowaniem ujemnych i duych co do moduu wartoci wasnych macierzy A. Ze wzgldu na moliwo
takiego przypadku naley aproksymowa funkcj wektorow wymuszajc u(t), nie zmieniajc jdra eAt w cace rwnania (6.18).
Niech zachodzi przypadek oglny, dla ktrego macierz A ma dzielniki elementarne:

( 1 ) p1 ,( 2 ) p 2 ,K, ( s ) p s ,
gdzie wrd wartoci wasnych 1, 2, ..., s macierzy A bdcych, zgodnie z definicj,
zerami wielomianu charakterystycznego macierzy A
det (A I ) = 0 ,

mog by liczby jednakowe; 1 p n N , przy czym p1+p2+...+ps = M. Dowodzi si, e


w takim przypadku istnieje taka macierz nieosobliwa S, e
A = S1 CS,

(6.19)

gdzie macierz C jest macierz quasi-diagonaln, zwan kanoniczn macierz Jordana [30].
0
I p1 (1 )
0
I p 2 ( 2 )

.
.
C=
.
.
.
.

0
0
i
1

I pi (i ) = 0

0
0

K
K
K
K
K
K

0
.
.
;
.
.

I p s ( s )

i K

K i

0
1

0
0
0.

0
i

(6.20)

Rozdzia 6. Ukady rwna rniczkowych liniowych o staych wspczynnikach 417


Stosujc transformacj (6.19), funkcj wykadnicz eAt mona przeksztaci nastpujco:
e At = e ( S

1CS ) t

= eS

1 ( Ct ) S

(6.21)

= S 1 e Ct S .

Poniewa macierz C jest quasi-diagonalna, to:


eI p1 ( 1 ) t

0
Ct
e =
.

I p2 ( 2 ) t

.
0

(6.22)

0
.
.

I ( )t
e ps s
0

Zgodnie z definicj macierzowej funkcji wykadniczej oraz macierzy (6.20) zachodzi [30]:

I pi ( i ) t

e i t
0
0
K 0

t
e i t
0
K 0
te i

t 2 i t
e
te i t
e i t
K 0 .
=
2!

KKKKKKKKKKKKKKKKKKKKK

t pi 1

t pi 2
t pi 3
i t
i t
i t
i t
e
e
e
K e

( p i 2)!
( p i 3)!
( p i 1)!

(6.23)

Wzory (6.17), (6.21) i (6.22) okrelaj struktur rozwizania rwnania rniczkowego


(6.2), a w szczeglnoci jego zwizek z wartociami wasnymi i wystpujcymi w kombinacjach funkcji e it przemnoonych przez wielomiany Pi(t) stopnia nie wikszego ni
pi1, gdzie pi jest stopniem dzielnika elementarnego odpowiadajcego wartoci wasnej
i, tj. Pi (t )e it . Zamy w oglnym przypadku, e wartoci wasne i macierzy A s zespolone

i = i + j i

(6.24)

(i = 1, 2, ..., N).

Jeeli Re{i } = i > 0 , to odpowiednie skadniki rozwizania Pi(t) wzrastaj wykadniczo z czonem wielomianowym Pi(t), gdy czas t wzrasta. Jeeli i < 0, to odpowiednie
skadniki rozwizania Pi (t )e it malej, gdy czas t wzrasta.
W kadym przypadku, jeli Im{i } = i 0 , to jak wiadomo i tworzy zespolon
par sprzon z odpowiedni wartoci wasn i , co odpowiada skadnikowi rozwizania sinusoidalnemu z wag wykadnicz e
Pi (t )e i t sin i t .

it

i wielomianow Pi(t):
(6.25)

418

Algorytmy numeryczne w Delphi

6.1. Rwnania rnicowe dla rnych


aproksymacji funkcji wymuszajcych
Do numerycznego rozwizania ukadu rwna rniczkowych liniowych (6.2) mona
wykorzysta rwnanie rnicowe (6.18), przyjmujc rn aproksymacj funkcji wymuszajcej u(t). W niniejszym opracowaniu podane bd konstrukcje tych algorytmw
dla trzech przypadkw, a mianowicie dla aproksymacji funkcji wymuszajcej w postaci
funkcji przedziaami staej, liniowej i kwadratowej.

6.1.1. Wymuszenie aproksymowane funkcjami


przedziaami staymi
Niech wymuszenie wektorowe u(t) jest dane w postaci funkcji przedziaami staej takiej, e:
dla kT t (k+1)T, k = 0, 1, 2, ...

u(t) = u(kT)

(6.26)

W takim przypadku, wykonujc cakowanie w rwnaniu rnicowym (6.18) z uwzgldnieniem wzoru (6.8), otrzymuje si [7]:
( k +1) T

( k +1) T

Bu()d = -e

kT

A 1Bu(kT) =

(6.27)

kT

= ( e A ( k +1)T + e AkT )A 1Bu(kT)

Po umieszczeniu powyszego wyniku cakowania w rwnaniu (6.18) otrzymuje si:


x[(k + 1)T ] = e AT x(kT ) + e A ( k +1)T ( e A ( k +1)T + e AkT )A 1Bu(kT ) =
= e x(kT ) + (e
AT

AT

(6.28)

1)A Bu(kT )
1

gdzie: 1 macierz jednostkowa.


W rwnaniu rnicowym (6.28) celowym jest, ze wzgldu na minimum operacji numerycznych, oblicza macierz (eAT1)A1, nie wykonujc pomocniczych oblicze macierzy
eAT oraz A1, lecz wykorzystujc rwno:

(e

( AT ) n
n =0 (n+1 )!

1)A 1 = T

AT

(6.29)

wynikajc z definicji (6.3).


Zatem po uwzgldnieniu rwnania (6.29) oraz oznaczenia macierzy:
F = e At = T

( AT ) n
n!
n =0

(6.30)

( AT ) n
G 0 =
BT
n =0 (n + 1)!

(6.31)

Rozdzia 6. Ukady rwna rniczkowych liniowych o staych wspczynnikach 419


i wektorw
x(k) = x(kT);

u(k) = u(kT)

(6.32)

formua rekurencyjna (6.28) przyjmie posta:


x(k+1) = Fx(k) + G0u(k).

(6.33)

Nie istnieje wic potrzeba obliczania macierzy odwrotnej A1, jak by to wynikao z rwnania (6.28). Majc na uwadze dalsz minimalizacj operacji numerycznych, naley zauway, e formowanie macierzy F i G0 (wzory (6.30) i (6.31)) naley prowadzi rwnolegle ze wzgldu na wsplne elementy (AT) wystpujce w szeregach. Rwnanie
rnicowe (6.33) daje wic formu rekurencyjn, ktr mona atwo zaprogramowa
na komputerze, co pokazane bdzie w dalszych punktach.
Stosujc wzr rekurencyjny (6.33) do rozwizania numerycznego rwnania rniczkowego (6.2), odpowiadajcy aproksymacji wymusze funkcjami przedziaami staymi,
naley w pierwszej kolejnoci wygenerowa macierze F i G0, okrelone wzorami (6.30)
i (6.31). Blok funkcyjny generujcy te macierze moe mie posta:
function FmTemp1(var A, B, F, G1: TMatrixF; T, eps, EpsR: TFloat;
N, W: Integer): Integer;
// Formowanie macierzy pomocniczych F, G1:
// A, B macierze ukadu rwna rniczkowych
// dX/dt = A*X+B*U,
// N rzd macierzy A,
// W liczba kolumn macierzy B,
// T wybrany krok cakowania,
// eps grna granica bdu przyblienia macierzy F i G1,
// EpsR bd wyznaczenia najwikszej co do moduu wartoci
//
wasnej macierzy F
var
K, Error: Integer;
S, S1, NormAT, teta, MWA: TFloat;
AX, AY, at, BX, BT: TMatrixF;
begin
Result := 0;
SetLength(at, N + 1,N + 1);
SetLength(AX, N + 1,N + 1);
SetLength(BX, N + 1,N + 1);
SetLength(AY, N + 1,N + 1);
SetLength(BT, N + 1,W + 1);
try
mMulR(at, A, T);
mOne(AX);
NormAT := mNorm(at);
K
:= 0;
S
:= 1;
S1
:= 1;
teta := NormAT / (1 - NormAT);
mClone(F, AX);
mClone(BX, AX);
repeat
Inc(K);
mMul(AY, AX, at);
S := S / K;
mMulr(AX, AY, S);

420

Algorytmy numeryczne w Delphi


mAdd(F, F, AX);
S1 := S1 / (K + 1);
mMulr(AX, AY, S1);
mAdd(BX, BX, AX);
mClone(AX, AY);
teta := teta * NormAT / (K + 1)
until teta < eps;
Error := mEigenValue(MWA, F, EpsR, 1000);
if MWA >= 1.05 then
Result := 16;
if Error <> 0 then
Result := 17;
mMulr(BT, B, T);
mMul(G1, BX, BT);
finally
at := nil;
BT := nil;
AX := nil;
BX := nil;
AY := nil;
end
end{FmTemp1 };

6.1.2. Wymuszenie aproksymowane funkcjami


przedziaami liniowymi
Zakadamy, e wymuszenie u(t) jest funkcj cig przedziaami liniow tak, e:
u( ) = u(kT ) +

1
[u((k + 1)T ) u(kT)]( kT ) = f1 + f 2
T

(6.34)

dla
k = 0, 1, 2, ...

kT < (k+1)T,
gdzie:
f1 = u(kT ) k [u((k + 1)T ) u(kT)] ;

f2 =

1
[u((k + 1)T ) u(kT)] .
T

(6.34a)

Wykonujc w takim przypadku cakowanie przez czci w rwnaniu rnicowym (6.18)


z uwzgldnieniem wzoru (6.8), otrzymuje si:
( k +1) T

A
1 - A
e Bu( )d = A e B(f1 + f 2 )

kT

( k +1) T

( k +1) T

+
kT

e - A Bf 2 d =

kT

1
= A 1 e - AkT B + A 1 (e - AkT 1)B u(kT ) +
T

+ e - AT B A 1 (e - AT 1)B u(k + 1)T .


T

Rozdzia 6. Ukady rwna rniczkowych liniowych o staych wspczynnikach 421


Po uwzgldnieniu powyszego wyniku cakowania oraz oznaczenia (6.32) rwnanie
rnicowe (6.18) przyjmie posta:
1

x(k + 1) = e AT x(k ) + A 1 e AT (e AT 1)A 1 Bu(k ) +


T

+ A 1 (e AT 1)A 1 1 Bu(k + 1) .
T

(6.35)

Uwzgldniajc wzory (6.30) i (6.29), rwnanie rekurencyjne (6.35) mona przeksztaci


do postaci:
x(k+1) = Fx(k)+G1u(k)+Hu(k+1),

(6.36)

gdzie:

( AT ) n
1

G 1 = A 1 e AT (e AT 1) A 1 B =
(BT) ;
T

n= 0 n!(n + 2)

(6.37)

( AT ) n
H = A 1 [(e AT 1)A 1 1]B =
(BT) ,
n= 0 (n + 2)!

(6.38)

natomiast macierz F wyraa si wzorem (6.30).


Rwnanie rekurencyjne (6.36) daje wic algorytm wyznaczania rozwizania rwnania
rniczkowego w postaci (6.2). W obliczeniach komputerowych naley zauway, e
wyznaczanie macierzy F, G1 i H zgodnie ze wzorami (6.30), (6.37) i (6.38) naley prowadzi rwnolegle ze wzgldu na wsplne elementy (AT)n wystpujce w szeregach
macierzowych tych wzorw, co minimalizuje liczb operacji numerycznych. W przypadku stosowania wzoru rekurencyjnego (6.36) niezbdne jest wygenerowanie macierzy
F, G1 i H (wzory (6.30), (6.37) i (6.38)), co mona zrealizowa w nastpujcym bloku
funkcyjnym:
function FmTemp2(var A, B, F, G2, H: TMatrixF; T, eps, EpsR: TFloat;
N, W: Integer): Integer;
// Formowanie macierzy pomocniczych F, G2, H:
// A, B macierze ukadu rwna rniczkowych dX/dt = A*X+B*U,
// N rzd macierzy A i F,
// W liczba kolumn macierzy B, G2, H,
// T wybrany krok cakowania,
// eps grna granica bdu przyblienia macierzy F, G2, H,
// EpsR bd wyznaczenia najwikszej co do moduu wartoci
//
wasnej macierzy F
var
K, Error: Integer;
SS, S1, S2, NormAT, teta, MWA: TFloat;
AX, AY, at, AG, AH, BT: TMatrixF;
begin
Result := 0;
SetLength(at, N + 1,N + 1);
SetLength(AX, N + 1,N + 1);
SetLength(AY, N + 1,N + 1);
SetLength(AH, N + 1,N + 1);
SetLength(AG, N + 1,N + 1);
SetLength(BT, N + 1,W + 1);

422

Algorytmy numeryczne w Delphi


try
mMulR(at, A, T);
mOne(AX);
NormAT := mNorm(at);
K
:= 0;
SS
:= 1;
S1
:= 0.5;
S2
:= 0.5;
teta := NormAT / (1 - NormAT);
mOne(F);
mMulr(AG, AX, 0.5);
mClone(AH, AG);
repeat
Inc(K);
mMul(AY, AX, at);
SS := SS / K;
mMulr(AX, AY, SS);
mAdd(F, F, AX);
S1 := S1 * (K + 1) / ((K + 2) * K);
mMulr(AX, AY, S1);
mAdd(AG, AG, AX);
S2 := S2 / (K + 2);
mMulr(AX, AY, S2);
mAdd(AH, AH, AX);
mClone(AX, AY);
teta := teta * NormAT / (K + 1)
until teta < eps;
Error := mEigenValue(MWA, F, EpsR, 1000);
if MWA >= 1.05 then
Result := 16;
if Error <> 0 then
Result := 17;
mMulr(BT, B, T);
mMul(G2, AG, BT);
mMul(H, AH, BT);
finally
at := nil;
BT := nil;
AX := nil;
AY := nil;
AG := nil;
AH := nil;
end
end{FmTemp2 };

You might also like