Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
Metody numeryczne
w C++Builder
Autorzy: Bernard Baron, ukasz Pitek
ISBN: 83-7361-544-X
Format: B5, stron: 552
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
Przedmowa........................................................................................ 7
Rozdzia 1. Definicje typw, funkcji, klas i wzorcw dla zagadnie numerycznych .. 9
1.1. Zastosowanie wzorcw C++ w bibliotece oblicze numerycznych........................10
1.2. Definicja wzorca klasy liczb zespolonych...............................................................13
1.3. Organizacja biblioteki oblicze numerycznych.......................................................15
1.4. Funkcje konwersji liczb rzeczywistych zespolonych na acuch i odwrotnie ........16
1.5. Uycie wzorca klasy vector do implementacji wektorw w jzyku C++ ............18
1.5.1. Operacje na wektorach zdefiniowanych na bazie konteneru vector .............20
1.6. Macierz jako wektor wektorw ...............................................................................21
1.7. Zapis i odczyt wektorw oraz macierzy na komponencie TStringGrid ...............24
1.8. Funkcje wzorcowe do zapisu i odczytu plikw macierzy .......................................24
1.9. Wykorzystanie funkcji matematycznych zawartych w bibliotece math.h...............25
1.10. Przekazywanie wskanikw funkcji do procedur implementujcych
algorytmy oblicze numerycznych.......................................................................27
1.11. DynamicArray i wzorzec valarray jako alternatywa dla wzorca klasy vector ........29
1.12. Wywietlanie komunikatw o bdach i implementacja wskanikw postpu ......29
Spis treci
5
4.3. Wyznaczanie wartoci wasnych macierzy metodami Bairstowa i Laguerrea.....293
4.3.1. Wyznaczanie wspczynnikw wielomianu
charakterystycznego macierzy kwadratowej metod Kryowa ...............293
4.3.2. Wyznaczanie wartoci wasnych macierzy metod Bairstowa ...................295
4.3.3. Wyznaczanie wartoci wasnych macierzy metod Laguerrea..................297
4.4. Wyznaczanie zer funkcji jednej zmiennej metod poowienia przedziau.........298
Przykady...............................................................................................................299
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 ) , (i = 1,2,,N),
dt
j =1
j =1
(6.1)
gdzie wspczynniki aij oraz bij s rzeczywiste. Ukad ten mona zapisa w postaci
macierzowej:
dx(t )
= Ax(t ) + Bu(t ) ,
dt
gdzie:
x1 (t )
x (t )
2
.
x(t ) =
;
.
.
x N (t )
dx1 (t )
dt
dx (t )
2
dt
dx(t ) .
;
=
dt
.
.
dx N (t )
dt
a11a12 K a1N
a a Ka
2N
;
A = 21 22
..K .
a N 1a N 2 K a NN
(6.2)
426
u1 (t )
u (t )
2
.
u(t ) =
.
.
.
u w (t )
b11b12 K b1W
b b Kb
2W
;
B = 21 22
..K .
bN 1bN 2 K bNW
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 , (i,j = 1,2,,N)
2!
k!
(6.4)
e eBt = e(A+B)t.
(6.5)
At At
(A A)t
= 1, wic macierz
3. Poniewa na mocy wasnoci (6.5) e e = e
[e ]
At 1
= e At .
(6.6)
d At
e = Ae At = e At A .
dt
(6.7)
e
t1
At
427
(6.8)
dx(t )
= Ax(t ) .
dt
(6.9)
(6.10)
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) z uwzgldnieniem wasnoci (6.7)
Ae At y(t) + e At
dy (t )
= Ae At y(t) + Bu(t) .
dt
(6.13)
dy (t )
= e At Bu(t) .
dt
(6.14)
y (t ) = y (t0 ) + e At Bu()d .
(6.15)
t0
At
x(t0) .
(6.16)
Uwzgldniajc rwnanie (6.15) wraz z podstawieniem (6.16) w rwnaniu (6.12), otrzymujemy nastpujce rozwizanie rwnania (6.2)
428
Rwnanie (6.17) nie nadaje si do bezporedniego obliczenia numerycznego. Rozwizanie dokadne (6.17) rwnania (6.2) moemy jednak wykorzysta w metodzie krokowej, zastpujc to rwnanie rwnaniem rnicowym, przyjmujc t0 = kT i t = (k + 1)T
( k +1) T
(6.18)
Bu()d .
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, musimy 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:
( ) ,( )
p1
p2
,K, ( s ) s ,
p
det (A I ) = 0
mog by liczby jednakowe; 1 pn 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
(
p1 2 )
.
.
C=
.
.
.
.
0
0
K
0
i
K
.
1
K
.
; I pi (i ) = 0
K
.
K
.
0
K I pi (i )
0
i
1
0
0
0
0
i
1
0
K 0
K 0
K 0
K i
K 1
0
0
0
0
i
(6.20)
e At = e ( S
1CS ) t
= eS
1 ( Ct ) S
= S 1 eCt S .
(6.21)
e I p1 ( 1 ) t
0
eCt =
.
0
e
I p2 ( 2 ) t
.
0
I ps ( s ) t
e
0
0
.
429
(6.22)
Zgodnie z definicj macierzowej funkcji wykadniczej oraz macierzy (6.20) zachodzi [30]:
I p ( i ) t
1
e it
0
0 K 0
t
ei
0 K 0
te i
t
.
= e it te it
e it 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
( pi 2)!
( pi 3)!
( pi 1)!
(6.23)
i = i + j i , (i = 1,2,,N).
(6.24)
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 it i wielomianow Pi(t)
Pi (t )eit sin i t .
(6.25)
430
(6.26)
W takim przypadku wykonujc cakowanie w rwnaniu rnicowym (6.18) z uwzgldnieniem wzoru (6.8), otrzymujemy [7]:
( k +1) T
A
(6.27)
( k +1) T
Bu()d = -e
kT
A 1Bu(kT) =
kT
(
x(kT) + (e 1)A
AT
(6.28)
Bu(kT),
(e
AT
( AT ) n
n =0 (n+1 )!
1)A 1 = T
(6.29)
F = e AT = T
n =0
( AT ) n
;
n!
(6.30)
( AT ) n
G 0 =
BT
n=0 (n + 1)!
(6.31)
(6.32)
i wektorw
(6.33)
431
Nie istnieje wic potrzeba obliczania macierzy odwrotnej A1, jak by to wynikao z rwnania (6.28). Majc na uwadze dalsz minimalizacj operacji numerycznych, powinnimy
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,
musimy w pierwszej kolejnoci wygenerowa macierze F i G0 okrelone wzorami (6.30)
i (6.31). Blok funkcyjny generujcy te macierze moe mie posta:
!"
##
"
$%$"
&'( ) ) (*"&'( ) ) (*$"
&'( ) ) (*$"
&'( ) ) (*%"&'( ) ) (*"
+,"
(*-!'.$"
(*-!'." (*-!'.$"
+ (*"
+/"#+
"#
+
"
+0
1"
22"
%+$,"
#0+"$+%,#"+2$"
#
0+2
"$+%,#
"
$+$2$"
$+(3)%"
,+02
"
4 +"
+ 5//"
(6+
7/8
9"
+,"
+$,"
/"
4
777
(* !:*:*'
;"
;"
4
4
432
k = 0, 1, 2, ,
gdzie:
C
2
T
i
i +
( T
ds
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
+
kT
( k +1) T
e - A Bf 2 d =
kT
1
= A 1e - 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)
Uwzgldniajc wzory (6.30) i (6.29), rwnanie rekurencyjne (6.35) moemy przeksztaci do postaci:
x(k + 1) = Fx(k) + G1u(k) + Hu(k + 1),
(6.36)
( 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)
gdzie:
433
+.
"
0)*1
2 3'45 05 0)*1165 05 0)*1165 05 0)*11
6"
5 05 0)*116&'5 05 0)*116(
)*))**+)**+
#7
8
9$:
)*;;;<;' )2#=>?:
5 05 0)*11@)&():
A
. .2
4) 7:A
. .2
4 7:
A
. .2
4@ 7:A
. .2
4( 7:
A
. .2
4& 7:A
. .2
4) #7:
8
)):2
B+47:
) 2
4)7:
9=:;;<:;<=>?:;'=>?:
)4< )7:
2
B+4"7:
&:(:
8
9:
@):
;;9:
@;;:"":
;<49<7449'797:
@;<:&&:
;'9':
@;':((:
4
=:
0 :
7
4
.=:.0 :.7C
DC.D@C
DC.D:
)49<7:
E 41*+7:
2#2##2 4"*+F==7:
G42#1<>=?7
<H:
)):&'&):(():
=:
E
4>>>7
434
(6.39)
(6.40)
s 2s 2
+ + 2 u((k+1 )T )
T T
e
0
A ( T s )
3
1
(6.41)
T 1
1
gdzie:
Ci =
(6.42)
2i T A ( T s ) i
e
s ds dla i = 0,1,2.
T i +1 0
( AT ) n
,
n= 0 ( n + 1)!
C 0 = (e AT 1)(AT) =
] = 2 ((nA+T2))! ,
C1 = 2(e AT 1 AT ) (AT )
1 2
n= 0
1
( AT ) n
2
1 3
.
C 2 = 8e AT 1 AT (AT ) (AT ) = 8
2
n= 0 ( n + 3)!
(6.43)
435
Gdy przyjmiemy oznaczenie (6.32) oraz uwzgldnimy wynik cakowania (6.41), rwnanie rekurencyjne (6.39) przyjmuje posta:
(6.44)
3
1
G 2 = C 0 C1 + C 2 (BT ) ,
2
2
(6.45)
H 2 = (2C1 C 2 )(BT ) ,
(6.46)
1
1
R = C1 + C 2 (BT ) ,
2
2
(6.47)
gdzie:
!"#
"
$ %
!
&$!
&
'(
!
&
) *
+
, -./
')/
') **0/
')/
') **0/
')/
') *
*0
/
')/
') **0/
')/
') **0
/
')/
') **0
!
!
1
2
3
4
5556575-
'
'
+
64
/
')/
') **894
:&
&
+
.14:&
&
+
.814
:&
&
+
.914:&
&
+
.14
:&
&
+
.14:&
&
+
.14
:&
&
+
.14
2
436
( AT ) n
gdzie sn 1 dla n > 2
n! sn
n= 0
S=
(6.48)
437
(patrz wzory (6.30), (6.31), (6.37), (6.38), (6.45), (6.46), (6.47)). W obliczeniach przybliamy S, biorc skoczon liczb skadnikw rozwinicia (6.48)
K
(6.49)
( AT ) n
S
= M = mij
n! s n
n= 0
[ ]
R=
(6.50)
(AT ) n
= rij
n=K +1 n! sn
[ ]
A = max aij
i
j =1
lub
(6.52)
A = max aij
j
i =1
rij R
dla wszystkich i, j. Ponadto zachodzi [7]:
(6.54)
AB A B .
Uwzgldniajc nierwnoci (6.53), (6.54) oraz rwnania (6.50), otrzymujemy (por. [7])
rij
(6.55)
1
element (i, j ) w macierzy ( AT ) n
n=K +1 n! s n
1
AT
n
!
sn
n=K +1
AT
K +1
( K + 1)! S K +1
[1 + AT + AT
+K .
Jeeli krok cakowania T jest tak dobrany, e AT <1, to szereg w nierwnoci (6.55)
jest zbieny, co daje:
rij
AT
K +1
( K + 1)! S K +1
1
= .
1 AT
(6.56)
Nierwno (6.56) daje grn granic bdu elementw macierzy M (6.49) uywanej
jako przyblienie macierzy S (6.48). Dla danego obcicia K sumy szeregw typu (6.48)
otrzymuje si najwikszy bd (6.56) dla przypadku gdy sn = 1 (n = 0, 1,), co odpowiada macierzy F = eAT (wzr (6.30)). Poniewa macierz ta wystpuje w konstrukcji
wszystkich trzech rozpatrywanych algorytmw (6.33), (6.36), (6.44), jako kryterium
bdu formowania macierzy wystpujcych w tych algorytmach mona przyj grny
bd obcicia w postaci (por. [9]):
438
AT
K +1
1
.
( K + 1)! 1 AT
(6.57)
Przy zadanym wzr (6.57) moe posuy do wyznaczania kroku cakowania T. Jak
pokazano we wstpie, struktura rozwizania rwnania (6.2) zaley od wartoci wasnych macierzy A. Wykazuje si, e w celu zagwarantowania stabilnoci numerycznej,
krok czasowy cakowania T i liczba wyrazw K + 1 w rozwiniciu (6.49) musz by
tak dobrane, aeby najwiksza co do moduu warto wasna macierzy M (wzr (6.49))
bya mniejsza od jednoci. Warunki powysze bd sprawdzane w procedurach obliczeniowych podanych niej.