Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
Algorytmy numeryczne
w Delphi. Ksiga eksperta
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
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
Spis treci
Spis treci
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
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)
ij + ( At ) ij +
1
{(At ) 2 }ij + K + 1 {(At ) k }ij + K ,
2!
k!
(6.4)
eAteBt = e(A+B)t.
(6.5)
At
(AA)t
=e
[e ]
At 1
= e At .
(6.6)
(6.7)
At
(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)
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)
(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)
y (t ) = y (t 0 ) + e At Bu()d .
(6.15)
t0
(6.16)
416
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 ,
(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)
1CS ) t
= eS
1 ( Ct ) S
(6.21)
= S 1 e Ct S .
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)
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
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
AT
(6.28)
1)A Bu(kT )
1
(e
( AT ) n
n =0 (n+1 )!
1)A 1 = T
AT
(6.29)
( AT ) n
n!
n =0
(6.30)
( AT ) n
G 0 =
BT
n =0 (n + 1)!
(6.31)
u(k) = u(kT)
(6.32)
(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
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)
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
+ A 1 (e AT 1)A 1 1 Bu(k + 1) .
T
(6.35)
(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)
422