Metody numeryczne w C++Builder - Helion
ISBN: 83-7361-544-X
stron: 552, Format: B5, okładka: miękka
Data wydania: 2004-06-24
Księgarnia: Helion
Cena książki: 64,90 zł
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 -- C++, chociaż nie był projektowany z myślą o zastosowaniu go w obliczeniach numerycznych, posiada mechanizmy, które umożliwiają stosunkowo łatwą implementację algorytmów obliczeniowych. Dzięki uniwersalności mechanizmu szablonów programista może tworzyć procedury numeryczne, w których da się określić precyzję obliczeń zmiennoprzecinkowych. Procedury stworzone w C++ nadają się do przeprowadzania obliczeń zarówno w dziedzinie liczb rzeczywistych, jak i zespolonych.
Książka "Metody numeryczne w C++Builder" przedstawia najczęściej wykorzystywane algorytmy numeryczne wraz z przykładami ich implementacji w języku C++. 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. Książka zawiera również opis zagadnień związanych z językiem C++, niezbędnych do poznania i prawidłowego wykorzystywania biblioteki obliczeń numerycznych.
- Algebra macierzy i równania liniowe
- Całkowanie i różniczkowanie numeryczne
- Wybrane algorytmy interpolacji i aproksymacji
- Wyznaczanie minimów 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
Nie wyważaj otwartych drzwi.
Wykorzystaj w swoich programach algorytmy numeryczne.
Spis treści
Metody numeryczne w C++Builder -- spis treści
Przedmowa (7)
Rozdział 1. Definicje typów, funkcji, klas i wzorców dla zagadnień numerycznych (9)
- 1.1. Zastosowanie wzorców 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 łańcuch i odwrotnie (16)
- 1.5. Użycie wzorca klasy vector do implementacji wektorów w języku C++ (18)
- 1.5.1. Operacje na wektorach zdefiniowanych na bazie konteneru vector (20)
- 1.6. Macierz jako wektor wektorów (21)
- 1.7. Zapis i odczyt wektorów oraz macierzy na komponencie TStringGrid (24)
- 1.8. Funkcje wzorcowe do zapisu i odczytu plików macierzy (24)
- 1.9. Wykorzystanie funkcji matematycznych zawartych w bibliotece math.h (25)
- 1.10. Przekazywanie wskaźników funkcji do procedur implementujących algorytmy obliczeń numerycznych (27)
- 1.11. DynamicArray i wzorzec valarray jako alternatywa dla wzorca klasy vector (29)
- 1.12. Wyświetlanie komunikatów o błędach i implementacja wskaźników postępu (29)
Rozdział 2. Algebra macierzy i równania liniowe (33)
- 2.1. Metoda bezpośredniego rozwiązywania układu równań macierzowych metodą eliminacji Gaussa (34)
- 2.1.1. Skalowanie układu równań liniowych (38)
- 2.2. Rozwiązywanie układu równań liniowych według algorytmu Crouta (40)
- 2.3. Obliczanie macierzy odwrotnej metodą eliminacji Gaussa (44)
- 2.4. Obliczanie macierzy odwrotnej metodą Crouta (48)
- 2.5. Obliczanie wyznacznika macierzy kwadratowej (53)
- 2.6. Wskaźnik uwarunkowania macierzy (54)
- 2.7. Obliczanie wartości własnej macierzy kwadratowej A o największym module (56)
- 2.8. Obliczanie wartości własnej macierzy 1 - (A o największym module (57)
- 2.9. Rozwiązywanie układu równań liniowych metodą iteracji Jacobiego oraz Richardsona (59)
- 2.10. Rozwiązywanie układu równań metodą Gaussa-Seidela oraz metodą nadrelaksacji (62)
- 2.11. Pseudorozwiązanie układu nadokreślonego (65)
- 2.12. Metoda najmniejszych kwadratów (71)
- 2.13. Algorytm Crouta rozwiązywania rzadkich układów równań liniowych (73)
- 2.14. Algorytmy iteracyjne Richardsona oraz Gaussa-Seidela dla macierzy rzadkich (82)
- Przykłady (88)
Rozdział 3. Praktyka badania funkcji (111)
- 3.1. Całkowanie i różniczkowanie numeryczne (111)
- 3.1.1. Ekstrapolacja iterowana Richardsona i Aitkena (111)
- 3.1.2. Całkowanie numeryczne (119)
- 3.1.3. Różniczkowanie numeryczne (131)
- 3.1.4. Gradient funkcji wielu zmiennych (142)
- 3.1.5. Jacobian funkcji wektorowej wielu zmiennych (145)
- 3.1.6. Hesjan funkcji wielu zmiennych (147)
- 3.2. Wybrane metody aproksymacji i interpolacji liniowej funkcji jednej zmiennej (149)
- 3.2.1. Aproksymacja metodą najmniejszych kwadratów (150)
- 3.2.2. Aproksymacja funkcji dyskretnej wielomianem (152)
- 3.2.3. Aproksymacja układami funkcji ortogonalnych (153)
- 3.2.4. Aproksymacja wielomianami ortogonalnymi (154)
- 3.2.5. Implementacja metod aproksymacji (156)
- 3.2.6. Interpolacja funkcji dyskretnej krzywą łamaną (169)
- 3.2.7. Interpolacja wielomianem potęgowym Lagrange'a (170)
- 3.2.8. Interpolacja funkcjami sklejanymi (170)
- 3.2.9. Interpolacja funkcjami i wielomianami ortogonalnymi (172)
- 3.2.10. Metody interpolacji w ramach klasy TInterpolacja (175)
- 3.3. Wybrane metody poszukiwania minimum funkcji wielu zmiennych metodami bezgradientowymi (189)
- 3.3.1. Wyznaczenie minimum funkcji wielu zmiennych bezgradientową metodą poszukiwań prostych Hooke'a-Jeevesa (191)
- 3.3.2. Bezgradientowa metoda "złotego podziału" poszukiwania minimum (193)
- 3.3.3. Bezgradientowa metoda Powella poszukiwania minimum funkcji wielu zmiennych (201)
- 3.4. Wybrane metody poszukiwania minimum funkcji wielu zmiennych metodami gradientowymi (205)
- 3.4.1. Metoda ekspansji i kontrakcji geometrycznej z jednym testem badania współczynnika kroku przy poszukiwaniu minimum w kierunku (206)
- 3.4.2. Metoda aproksymacji parabolicznej z jednym testem badania współczynnika kroku przy poszukiwaniu minimum w kierunku (210)
- 3.4.3. Algorytm największego spadku (214)
- 3.4.4. Zmodyfikowany algorytm Newtona (217)
- Przykłady (222)
Rozdział 4. Równania nieliniowe, zera wielomianów, wartości własne macierzy (263)
- 4.1. Algorytmy rozwiązywania układów równań nieliniowych (264)
- 4.1.1. Rozwiązywanie układów równań nieliniowych metodą Newtona (265)
- 4.1.2. Rozwiązywanie układów równań nieliniowych metodą gradientową (268)
- 4.1.3. Rozwiązywanie układu równań nieliniowych zmodyfikowaną metodą Newtona (271)
- 4.1.4. Rozwiązywanie układów nieliniowych metodą iteracyjną (275)
- 4.1.5. Pseudorozwiązania nieliniowego układu nadokreślonego metodą Hooke'a-Jeevsa (278)
- 4.2. Wyznaczanie zer wielomianów metodami Bairstowa i Laguerre'a (280)
- 4.2.1. Dzielenie wielomianów o współczynnikach rzeczywistych przez czynnik liniowy według algorytmu Hornera (280)
- 4.2.2. Dzielenie wielomianu przez czynnik kwadratowy (282)
- 4.2.3. Wyznaczanie dzielników wielomianu stopnia Nɮ w postaci trójmianu kwadratowego metodą Bairstowa (282)
- 4.2.4. Wyznaczanie zer wielomianów o współczynnikach rzeczywistych (287)
- 4.2.5. Wyznaczanie zera wielomianu metodą Laguerre'a (288)
- 4.2.6. Wyznaczanie wszystkich zer wielomianu metodą Laguerre'a (290)
- 4.3. Wyznaczanie wartości własnych macierzy metodami Bairstowa i Laguerre'a (293)
- 4.3.1. Wyznaczanie współczynników wielomianu charakterystycznego macierzy kwadratowej metodą Kryłowa (293)
- 4.3.2. Wyznaczanie wartości własnych macierzy metodą Bairstowa (295)
- 4.3.3. Wyznaczanie wartości własnych macierzy metodą Laguerre'a (297)
- 4.4. Wyznaczanie zer funkcji jednej zmiennej metodą połowienia przedziału (298)
- Przykłady (299)
Rozdział 5. Układy zwyczajnych równań różniczkowych nieliniowych (315)
- 5.1. Układ równań różniczkowych jako klasa programowania obiektowego (317)
- 5.1.1. Definicje typów do zadawania układu równań różniczkowych nieliniowych (317)
- 5.1.2. Definicja klasy prototypowej dla klas implementujących rozwiązywanie układu równań różniczkowych (318)
- 5.1.3. Definicja klasy prototypowej dla klas potomnych dotyczących rozwiązywania układu równań różniczkowych nieliniowych (324)
- 5.1.4. Aproksymacja dyskretnych wartości wektorów stanu (327)
- 5.1.5. Funkcje pomocnicze do działania na wektorach stanu (330)
- 5.2. Metody Rungego-Kutty (331)
- 5.3. Rozwiązywanie układu równań różniczkowych zwyczajnych metodą Rungego-Kutty z automatycznym doborem kroku całkowania (337)
- 5.4. Metody Fehlberga (341)
- 5.5. Rozwiązanie układu równań różniczkowych nieliniowych zwyczajnych metodą Fehlberga z automatycznym doborem kroku całkowania (349)
- 5.6. Rozwiązanie układu równań różniczkowych nieliniowych zwyczajnych metodą Dormanda-Prince'a z automatycznym doborem kroku całkowania (352)
- 5.7. Metoda wielokrokowa 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 (358)
- 5.7.1. Algorytm Adamsa-Bashfortha (358)
- 5.7.2. Algorytm Adamsa-Multona (360)
- 5.7.3. Algorytmy przewidywania i korekcji wyrażone przez macierz Nordsiecka (363)
- 5.7.4. Faza wstępna obliczeń (373)
- 5.7.5. Metody klasy TAdamsMultonAbstract i TAdamsMulton realizujące algorytm Adamsa-Multona (377)
- 5.8. Rozwiązywanie układu równań nieliniowych metodą sztywno stabilnych algorytmów Geara (383)
- 5.9. Metoda Gragga z ekstrapolacją Bulirscha-Stoera (395)
- Przykłady (403)
Rozdział 6. Układy równań różniczkowych liniowych o stałych współczynnikach (425)
- 6.1. Równania różnicowe dla różnych aproksymacji funkcji wymuszających (429)
- 6.1.1. Wymuszenie aproksymowane funkcjami przedziałami stałymi (430)
- 6.1.2. Wymuszenie aproksymowane funkcjami przedziałami liniowymi (432)
- 6.1.3. Wymuszenie aproksymowane wielomianem stopnia drugiego (434)
- 6.1.4. Dobór kroku całkowania T ze względu na dobór górnej granicy błędu obliczania macierzy eAT oraz ze względu na numeryczną stabilność rozwiązania (436)
- 6.2. Definicja typów dla liniowych równań różniczkowych (438)
- 6.3. Numeryczne rozwiązywanie równań różniczkowych liniowych o stałych współczynnikach dla aproksymacji wymuszeń funkcjami przedziałami stałymi (441)
- 6.4. Numeryczne rozwiązywanie równań różniczkowych liniowych o stałych współczynnikach dla aproksymacji wymuszeń funkcjami przedziałami liniowymi (444)
- 6.5. Numeryczne rozwiązywanie równań różniczkowych liniowych o stałych współczynnikach dla aproksymacji wymuszeń funkcjami przedziałami kwadratowymi (447)
- Przykłady (450)
Rozdział 7. Praktyka przekształceń Fouriera (457)
- 7.1. Dyskretna transformacja Fouriera według algorytmu Hornera (463)
- 7.2. Szybkie przekształcenie Fouriera według algorytmu Cooleya-Tukeya (465)
- 7.3. Szybkie przekształcenie Fouriera według algorytmu Sandego-Tukeya (473)
- 7.4. Wyznaczanie współczynników zespolonego szeregu Fouriera dla dowolnej funkcji okresowej (477)
- 7.5. Obliczanie odwrotnej transformacji Fouriera dla dowolnej transformaty (478)
- Przykłady (480)
Rozdział 8. Praktyka przekształceń Laplace'a (495)
- 8.1. Numeryczne obliczanie transformacji odwrotnej Laplace'a w wybranej chwili czasu z zastosowaniem szeregów Fouriera (496)
- 8.2. Numeryczne obliczanie transformacji odwrotnej Laplace'a w wybranej chwili czasowej z zastosowaniem szeregów Laguerre'a (502)
- 8.3. Numeryczne obliczanie transformacji odwrotnej Laplace'a w wybranej chwili czasowej według algorytmu Valsa (506)
- 8.4. Obliczanie transformacji odwrotnej Laplace'a funkcji wymiernej na podstawie jej pozostałości w biegunach (510)
- 8.4.1. Definiowanie klasy do obliczania odwrotnej transformacji Laplace'a funkcji wymiernej na podstawie jej pozostałości w biegunach (513)
- Przykłady (518)
Bibliografia (531)
Skorowidz (535)