pelna-wersja-algorytmy-numeryczne-w-delphi-ksiega-eksperta_anudel.pdf

(10210 KB) Pobierz
656501967 UNPDF
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Algorytmy numeryczne
SPIS TREŒCI
w Delphi. Ksiêga eksperta
KATALOG KSI¥¯EK
Autorzy: Bernard Baron,
Artur Pasierbek, Marcin Maci¹¿ek
ISBN: 83-7361-951-8
Format: B5, stron: 544
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Metody numeryczne s¹ to sposoby rozwi¹zywania z³o¿onych problemów
matematycznych za pomoc¹ narzêdzi obliczeniowych udostêpnianych przez popularne
jêzyki programowania. Jeden z najpopularniejszych jêzyków — Pascal, bêd¹cy
podstaw¹ jêzyka ObjectPascal wykorzystywanego w Delphi, pozwala na bardzo
³atw¹ implementacjê mechanizmów obliczeñ numerycznych. Specyfika projektowania
aplikacji w œrodowisku Delphi pozwala na utworzenie komponentów realizuj¹cych
algorytmy numeryczne i stosowanie ich w wielu aplikacjach.
Ksi¹¿ka „Algorytmy numeryczne w Delphi. Ksiêga eksperta” przedstawia najczêœciej
wykorzystywane metody numeryczne wraz z przyk³adami ich implementacji w jêzyku
ObjectPascal. Ka¿de zagadnienie jest omówione zarówno od strony teoretycznej, jak
i praktycznej, co u³atwia jego zrozumienie i pozwala na modyfikacje zamieszczonych
w ksi¹¿ce kodów Ÿród³owych.
Typy, funkcje, klasy i procedury wykorzystywane w algorytmach numerycznych
Algebra macierzy i równania liniowe
Badanie funkcji
Rozwi¹zywanie równañ nieliniowych i wyznaczanie wartoœci w³asnych macierzy
Uk³ady równañ ró¿niczkowych liniowych i nieliniowych
Przekszta³cenia Fouriera i Laplace’a
Niemal ka¿dy problem obliczeniowy mo¿na rozwi¹zaæ za pomoc¹ metod numerycznych.
Nie musisz wiêc wymyœlaæ ponownie ko³a — wystarczy, ¿e poznasz opisane w tej
ksi¹¿ce algorytmy.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
656501967.001.png 656501967.002.png 656501967.003.png 656501967.004.png
Spis treści
Zmiany w stosunku do poprzedniego wydania ......................................... 9
Przedmowa ................................................................................................... 11
Rozdział 1. Definicje typów, 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 łańcuch i odwrotnie ............................ 18
1.6. Wektor ....................................................................................................................................... 20
1.7. Macierz ...................................................................................................................................... 21
1.8. Reprezentacja wektorów i macierzy za pomocą tablic ............................................................... 21
1.8.1. Przydzielanie i zwalnianie pamięci dla tablic jednowymiarowych .................................. 23
1.8.2. Przydzielanie i zwalnianie pamięci dla tablic dwuwymiarowych .................................... 24
1.9. Zapis i odczyt wektorów oraz macierzy w komponencie TStringGrid ...................................... 25
1.10. Wzorcowe funkcje zapisu i odczytu plików macierzy ............................................................... 26
Rozdział 2. Algebra macierzy i równania liniowe .................................... 27
2.1. Metoda bezpośredniego rozwiązywania układu równań macierzowych metodą eliminacji Gaussa ......28
2.1.1. Skalowanie układu równań liniowych ............................................................................. 32
2.2. Rozwiązywanie układu równań liniowych według 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. Wskaźnik uwarunkowania macierzy ......................................................................................... 50
2.7. Obliczanie wartości własnej macierzy kwadratowej A o największym module ........................... 52
2.8. Obliczanie wartości własnej macierzy 1–αA o największym module ....................................... 53
2.9. Rozwiązywanie układu równań liniowych metodą iteracji Jacobiego oraz Richardsona ........... 55
2.10. Rozwiązywanie układu równań metodą Gaussa-Seidela oraz metodą nadrelaksacji ................. 58
2.11. Pseudorozwiązanie układu nadokreślonego ............................................................................... 60
2.12. Metoda najmniejszych kwadratów ............................................................................................ 66
2.13. Algorytm Crouta rozwiązywania rzadkich układów równań liniowych ....................................... 68
2.14. Algorytmy iteracyjne Richardsona oraz Gaussa-Seidela dla macierzy rzadkich ....................... 78
Przykłady ............................................................................................................................................ 85
Komponenty .............................................................................................................................. 85
Właściwości .............................................................................................................................. 85
4
Algorytmy numeryczne w Delphi
Zdarzenia ................................................................................................................................... 86
Przykład 2.1. Obliczanie macierzy odwrotnej ........................................................................... 88
Przykład 2.2. Rozwiązywanie układów równań algebraicznych ............................................... 95
Przykład 2.3. Rozwiązywanie układów równań algebraicznych rzadkich ............................... 102
Rozdział 3. Praktyka badania funkcji ...................................................... 109
3.1. Całkowanie i różniczkowanie numeryczne .............................................................................. 109
3.1.1. Ekstrapolacja iterowana Richardsona i Aitkena ............................................................ 109
3.1.2. Całkowanie numeryczne ................................................................................................ 116
3.1.3. Różniczkowanie 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 kwadratów ......................................................... 139
3.2.2. Aproksymacja funkcji dyskretnej wielomianem ............................................................ 141
3.2.3. Aproksymacja układami 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 potęgowym Lagrange’a ....................................................... 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 Hooke’a-Jeevesa ................................................................................... 181
3.3.2. Bezgradientowa metoda „złotego podziału” 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
współczynnika kroku przy poszukiwaniu minimum w kierunku ................................... 197
3.4.2. Metoda aproksymacji parabolicznej z jednym testem
badania współczynnika kroku przy poszukiwaniu minimum w kierunku ..................... 201
3.4.3. Algorytm największego spadku ..................................................................................... 206
3.4.4. Zmodyfikowany algorytm Newtona .............................................................................. 210
Przykłady ........................................................................................................................................ 215
Komponenty ............................................................................................................................ 215
Przykład 3.1. Testowanie metod całkowania ........................................................................... 216
Przykład 3.2. Testowanie procedur różniczkowania numerycznego ....................................... 221
Przykład 3.3. Testowanie funkcji do wyznaczania macierzy Jacobiego funkcji wektorowej .... 225
Przykład 3.4. Testowanie funkcji do wyznaczania macierzy Hessego funkcji wielu zmiennych .. 229
Przykład 3.5. Testowanie metod klasy TApproximation ......................................................... 231
Przykład 3.6. Testowanie metod klasy TInterpolation ............................................................. 239
Przykład 3.7. Testowanie metod wyznaczania minimum funkcji ............................................ 244
Spis treści
5
Rozdział 4. Równania nieliniowe,
zera wielomianów, wartości własne macierzy .................... 251
4.1. Algorytmy rozwiązywania układów równań nieliniowych ...................................................... 252
4.1.1. Rozwiązywanie układów równań nieliniowych metodą Newtona ................................. 253
4.1.2. Rozwiązywanie układów równań nieliniowych metodą gradientową ........................... 256
4.1.3. Rozwiązywanie układu równań nieliniowych zmodyfikowaną metodą Newtona ......... 260
4.1.4. Rozwiązywanie układów nieliniowych metodą iteracyjną ............................................ 264
4.1.5. Pseudorozwiązania nieliniowego układu nadokreślonego metodą Hooke’a-Jeevesa .... 267
4.2. Wyznaczanie zer wielomianów metodami Bairstowa i Laguerre’a ......................................... 270
4.2.1. Dzielenie wielomianów o współczynnikach rzeczywistych
przez czynnik liniowy według algorytmu Hornera ....................................................... 270
4.2.2. Dzielenie wielomianu przez czynnik kwadratowy ........................................................ 272
4.2.3. Wyznaczanie dzielników wielomianu stopnia N > 2
w postaci trójmianu kwadratowego metodą Bairstowa ................................................. 273
4.2.4. Wyznaczanie zer wielomianów o współczynnikach rzeczywistych .............................. 277
4.2.5. Wyznaczanie zer wielomianu metodą Laguerre’a ......................................................... 280
4.2.6. Wyznaczanie zer wielomianu metodą Laguerre’a ......................................................... 282
4.3. Wyznaczanie wartości własnych macierzy metodami Bairstowa i Laguerre’a ........................ 284
4.3.1. Wyznaczanie współczynników wielomianu charakterystycznego
macierzy kwadratowej metodą Kryłowa ....................................................................... 285
4.3.2. Wyznaczanie wartości własnych macierzy metodą Bairstowa ...................................... 287
4.3.3. Wyznaczanie wartości własnych macierzy metodą Laguerre’a ..................................... 290
4.4. Wyznaczanie zer funkcji jednej zmiennej metodą połowienia przedziału ............................... 291
Przykłady ........................................................................................................................................ 293
Komponenty ............................................................................................................................ 293
Przykład 4.1. Testowanie metod rozwiązywania układu równań nieliniowych ....................... 294
Przykład 4.2. Testowanie metod rozwiązywania układu równań nieliniowych — cd. ............ 295
Przykład 4.3. Wyznaczanie zer wielomianów o współczynnikach rzeczywistych zadanych
z klawiatury za pomocą metod Laguerre’a oraz Bairstowa ............................... 300
Przykład 4.4. Wyznaczanie wartości własnej macierzy zadanej z klawiatury lub pliku .......... 302
Przykład 4.5. Wyznaczanie zer i ekstremum funkcji Bessela rzędu N .................................... 305
Rozdział 5. Układy zwyczajnych równań
różniczkowych nieliniowych ................................................. 309
5.1. Układ równań różniczkowych jako klasa programowania obiektowego ................................. 310
5.1.1. Definicje typów do zadawania układu równań różniczkowych nieliniowych ............... 311
5.1.2. Definicja klasy prototypowej dla klas implementujących
rozwiązywanie układu równań różniczkowych ............................................................. 312
5.1.3. Definicja klasy prototypowej dla klas potomnych dotyczących
rozwiązywania układu równań różniczkowych nieliniowych ....................................... 318
5.1.4. Aproksymacja dyskretnych wartości wektorów stanu ................................................... 319
5.1.5. Funkcje pomocnicze do działania na wektorach stanu .................................................. 322
5.2. Metody Rungego-Kutty ........................................................................................................... 323
5.3. Rozwiązywanie układu równań różniczkowych zwyczajnych metodą Rungego-Kutty
z automatycznym doborem kroku całkowania ........................................................................ 327
5.4. Metody Fehlberga .................................................................................................................... 332
6
Algorytmy numeryczne w Delphi
5.5. Rozwiązanie układu równań różniczkowych nieliniowych zwyczajnych metodą
Fehlberga z automatycznym doborem kroku całkowania ........................................................ 340
5.6. Rozwiązanie układu równań różniczkowych nieliniowych zwyczajnych metodą
Dormanda-Prince’a z automatycznym doborem kroku całkowania ........................................ 344
5.7. Wielokrokowa metoda rozwiązywania układu równań różniczkowych nieliniowych
z członem przewidywania Adamsa-Bashfortha oraz członem korekcyjnym
Adamsa-Multona z automatycznym doborem kroku i rzędu ................................................... 349
5.7.1. Algorytm Adamsa-Bashfortha ....................................................................................... 349
5.7.2. Algorytm Adamsa-Multona ........................................................................................... 351
5.7.3. Algorytmy przewidywania i korekcji wyrażone przez macierz Nordsiecka .................. 354
5.7.4. Faza wstępna obliczeń ................................................................................................... 363
5.7.5. Metody klasy TAdamsMultonAbstract i TAdamsMulton,
realizujące algorytm Adamsa-Multona ......................................................................... 368
5.8. Rozwiązywanie układu równań nieliniowych metodą sztywno stabilnych algorytmów Geara ....374
5.9. Metoda Gragga z ekstrapolacją Bulirscha-Stoera .................................................................... 386
Przykłady ........................................................................................................................................ 394
Komponenty ............................................................................................................................ 394
Przykład 5.1. Rozwiązywanie układów równań różniczkowych drugiego rzędu .................... 395
Przykład 5.2. Zastosowanie klasy TRoRoNl do rozwiązywania
układów równań różniczkowych nieliniowych w ramach pewnej klasy ........... 402
Przykład 5.3. Wahadło matematyczne ..................................................................................... 408
Rozdział 6. Układy równań różniczkowych liniowych
o stałych współczynnikach ................................................... 413
6.1. Równania różnicowe dla różnych aproksymacji funkcji wymuszających .................................... 418
6.1.1. Wymuszenie aproksymowane funkcjami przedziałami stałymi .................................... 418
6.1.2. Wymuszenie aproksymowane funkcjami przedziałami liniowymi ................................ 420
6.1.3. Wymuszenie aproksymowane wielomianem stopnia drugiego ..................................... 422
6.1.4. Dobór kroku całkowania T ze względu na dobór górnej granicy błędu obliczania
macierzy e AT oraz ze względu na numeryczną stabilność rozwiązania ......................... 425
6.2. Definicja typów dla liniowych równań różniczkowych ........................................................... 427
6.3. Numeryczne rozwiązywanie równań różniczkowych liniowych
o stałych współczynnikach dla aproksymacji wymuszeń funkcjami przedziałami stałymi ..... 429
6.4. Numeryczne rozwiązywanie równań różniczkowych liniowych o stałych współczynnikach
dla aproksymacji wymuszeń funkcjami przedziałami liniowymi ............................................ 431
6.5. Numeryczne rozwiązywanie równań różniczkowych liniowych o stałych współczynnikach
dla aproksymacji wymuszeń funkcjami przedziałami kwadratowymi ..................................... 433
Przykłady ........................................................................................................................................ 435
Komponenty ............................................................................................................................ 435
Przykład 6.1. Testowanie metod rozwiązywania układu równań różniczkowych liniowych .. 435
Przykład 6.2. Testowanie metod rozwiązywania układu równań różniczkowych liniowych
zdefiniowanych wewnątrz pewnej klasy ........................................................... 440
Rozdział 7. Praktyka przekształceń Fouriera ........................................... 449
7.1. Dyskretna transformacja Fouriera według algorytmu Hornera ................................................ 455
7.2. Szybkie przekształcenie Fouriera według algorytmu Cooleya-Tukeya ................................... 457
7.3. Szybkie przekształcenie Fouriera według algorytmu Sande’a-Tukeya .................................... 466
7.4. Wyznaczanie współczynników zespolonego szeregu Fouriera dla dowolnej funkcji okresowej .. 470
7.5. Obliczanie odwrotnej transformacji Fouriera dla dowolnej transformaty ................................ 471
Zgłoś jeśli naruszono regulamin