Całkowanie numeryczne - metoda interpolacji wielomianem drugiego stopnia
Stronę tą wyświetlono już: 3181 razy
Całkowanie numeryczne metodą interpolacji drugiego stopnia umożliwia dokładniejsze przeprowadzenie obliczeń przybliżonej całki z zadanej funkcji f(x) w przedziale od a do b. Do obliczenia całki z takiej interpolowanej funkcji potrzebny będzie następujący wzór:
[1] |
Zapis wyrażenia w formacie TeX-a:
Do interpolacji liniowej konieczne będzie wykorzystanie trzech punktów, które złożą się na następujący układ równań:
[2] |
Zapis wyrażenia w formacie TeX-a:
Do wyznaczenia współczynników aw, bw i cw wielomianu interpolującego wykorzystane zostaną wzory Cramera, które opisane zostały na stronie Matematyka → Równania liniowe → Rozwiązywanie układów równań za pomocą wzorów Cramera oraz wzór na obliczenie wyznacznika macierzy 3×3 z strony Matematyka → Macierze → Wyznacznik macierzy.
W językach programowania takich jak C++ do wykorzystania tego algorytmu konieczne jest zaimplementowanie algorytmu ONP, który powstał jako modyfikacja algorytmu notacji polskiej Jana Łukasiewicza. W przypadku języków skryptowych takich jak PHP czy Python można posłużyć się funkcją eval, której użycie ze względów bezpieczeństwa jest niekiedy niewskazane.
Oto przykład prostego programu obliczającego tą metodą całkę podanej na wejście funkcji napisany w Pythonie:
Przykład działania dla f(x) = x2, a = 0, b = 1, oraz i = 10:
Podaj funkcję: x**2 Podaj a: 0 Podaj b: 1 Podaj i: 10 Całka z funkcji x**2 w przedziale od 0.0 do 1.0 jest równa 0.333333333333517 Aby kontynuować, naciśnij dowolny klawisz . . .
Jak widać metoda ta sprawdza się bardzo dobrze, zwłaszcza gdy obliczana funkcja jest wielomianem drugiego stopnia, warto jednak sprawdzić, jak zadziała np. dla funkcji f(x)=sin(x) w przedziale od 0 do 3.14:
Podaj funkcję: sin(x) Podaj a: 0 Podaj b: 3.14 Podaj i: 10 Całka z funkcji sin(x) w przedziale od 0.0 do 3.14 jest równa 2.000005502397631 Aby kontynuować, naciśnij dowolny klawisz . . .
Uzyskany powyżej wynik jest zawyżony, gdyż rzeczywista wartość tej całki powinna wynosić 1.999998731727541, ale różnica jest rzędu 6.770670088585007·10-6. Przy 100 przedziałach wynik jest jeszcze dokładniejszy:
Podaj funkcję: sin(x) Podaj a: 0 Podaj b: 3.14 Podaj i: 100 Całka z funkcji sin(x) w przedziale od 0.0 do 3.14 jest równa 1.9999987323929425 Aby kontynuować, naciśnij dowolny klawisz . . .
Jak widać w tym przypadku różnica wynosi 0 (przynajmniej na tym poziomie zakresu dokładności).
Tytuł:
Algorytmy. Ilustrowany przewodnik
Autor:
Aditya Bhargava
Tytuł:
Algorytmy. Struktury danych i złożoność obliczeniowa
Autor:
Feliks Kurp
Tytuł:
Algorytmy w Pythonie. Techniki programowania dla praktyków
Autor:
Piotr Wróblewski
Tytuł:
Matematyka dyskretna dla praktyków. Algorytmy i uczenie maszynowe w Pythonie
Autor:
Ryan T. White, Archana Tikayat Ray
Tytuł:
Algorytmy kryptograficzne w Pythonie. Wprowadzenie
Autor:
Shannon W. Bray
Tytuł:
Algorytmy sztucznej inteligencji. Ilustrowany przewodnik
Autor:
Rishal Hurbans
Tytuł:
Algorytmy bez tajemnic
Autor:
Thomas H. Cormen
Tytuł:
Algorytmy dla bystrzaków
Autor:
John Paul Mueller, Luca Massaron
Tytuł:
Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II
Autor:
David Natingga
Tytuł:
Algorytmy uczenia maszynowego. Zaawansowane techniki implementacji
Autor:
Giuseppe Bonaccorso