Całkowanie numeryczne
Definicja: Całkowanie numeryczne

Całkowanie numeryczne to przybliżenie całkicałkacałki, poprzez sumy ważone wartości całkowanej funkcji w wielu punktach. Przedział całkowania należy podzielić na niewielkie fragmenty, a wynikiem całkowania jest suma oszacowań całek w tych obszarach.

Znamy różne sposoby obliczania wartości całki. Są to m.in.:

  • metoda prostokątów (omówiona w innym e‑materiale z tej serii),

  • metoda trapezów.

Podczas stosowania metody trapezów, będziemy korzystać ze wzoru na pole trapezu:

P = ( p o d s t a w a 1 + p o d s t a w a 2 ) h 2

Wysokość  obliczamy jako:

h=bai
  •  – początek przedziału całkowania,

  •  – koniec przedziału całkowania,

  •  – liczba podprzedziałów, w których będziemy liczyć pole trapezu (im większe , tym większa dokładność algorytmu, ponieważ będziemy liczyć pola większej liczby trapezów na mniejszych przedziałach).

Długość pierwszej podstawy obliczamy jako:

p o d s t a w a 1 = f ( x i )

Długość drugiej podstawy obliczamy jako:

p o d s t a w a 2 = f ( x i + 1 )
RJjek6xfBZtsc
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
1
Przykład 1

Spróbujmy stworzyć program, który może posłużyć do obliczania całki funkcji o podanym przepisie. W tym przypadku niech to będzie funkcja kwadratowa f(x) = xIndeks górny 2.

Linia 1. def calka podkreślnik trapez otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły dwukropek. Linia 3. def f otwórz nawias okrągły x zamknij nawias okrągły dwukropek. Linia 4. return x asterysk x kratka tu możemy zdefiniować funkcję przecinek której całkę chcemy obliczyć. Linia 6. dx znak równości otwórz nawias okrągły b minus a zamknij nawias okrągły prawy ukośnik i. Linia 7. calka znak równości 0. Linia 8. for elem in range otwórz nawias okrągły i zamknij nawias okrągły dwukropek. Linia 9. elem znak równości elem asterysk dx plus a. Linia 10. fx1 znak równości f otwórz nawias okrągły elem zamknij nawias okrągły. Linia 11. fx2 znak równości f otwórz nawias okrągły elem plus dx zamknij nawias okrągły. Linia 12. calka plus znak równości 0 kropka 5 asterysk dx asterysk otwórz nawias okrągły fx1 plus fx2 zamknij nawias okrągły. Linia 13. return calka.

Dla przykładowej funkcji:

f ( x ) = x 2 dla x ( 0 , 1 ) oraz dla 10 przedziałów

jej wykres możemy zaprezentować w następujący sposób:

RuMihSMDmwHUF
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Teraz możemy wywołać funkcję dla określonego przedziału liczb (a, b) i wyświetlić wynik:

Linia 1. wynik znak równości calka podkreślnik trapez otwórz nawias okrągły 0 przecinek 1 przecinek 10 zamknij nawias okrągły. Linia 2. print otwórz nawias okrągły wynik zamknij nawias okrągły. Linia 4. kratka 0 kropka 3350000000000001. Linia 5. kratka dokładny wynik to 1 prawy ukośnik 3 przecinek więc uzyskaliśmy dość dobre przybliżenie.

1
Przykład 2

Możemy wykorzystać wbudowaną funkcję eval()eval( )eval() do stworzenia funkcji, która jako parametr będzie przyjmować kod funkcji do wykonania w momencie obliczania. Nazwa zmiennej w tym kodzie musi być identyczna z użytą do enumeracji w pętli for. Przygotujmy zatem kod, który zrealizuje taki sposób obliczania.

Linia 1. def calka podkreślnik trapez podkreślnik eval otwórz nawias okrągły fun podkreślnik txt przecinek a przecinek b przecinek i zamknij nawias okrągły dwukropek. Linia 2. dx znak równości otwórz nawias okrągły b minus a zamknij nawias okrągły prawy ukośnik i. Linia 3. calka znak równości 0. Linia 4. for elem in range otwórz nawias okrągły i zamknij nawias okrągły dwukropek. Linia 5. elem znak równości elem asterysk dx plus a. Linia 6. fx1 znak równości eval otwórz nawias okrągły fun podkreślnik txt zamknij nawias okrągły. Linia 7. elem plus znak równości dx. Linia 8. fx2 znak równości eval otwórz nawias okrągły fun podkreślnik txt zamknij nawias okrągły. Linia 9. calka plus znak równości 0 kropka 5 asterysk dx asterysk otwórz nawias okrągły fx1 plus fx2 zamknij nawias okrągły. Linia 10. return calka. Linia 12. kratka przykład wywołania dwukropek. Linia 13. wynik znak równości calka podkreślnik trapez podkreślnik eval otwórz nawias okrągły apostrof elem asterysk asterysk 2 apostrof przecinek 0 przecinek 1 przecinek 100 zamknij nawias okrągły. Linia 14. print otwórz nawias okrągły wynik zamknij nawias okrągły. Linia 16. kratka 0 kropka 33335.

W języku Python istnieją możliwości wygenerowania wykresu funkcji i zaprezentowania go na ekranie. Oto przykład z wykorzystaniem biblioteki matplotlibmatplotlibmatplotlib:

Linia 1. import matplotlib kropka pyplot as plt. Linia 3. def wykres podkreślnik funkcji otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły dwukropek. Linia 4. cudzysłów cudzysłów cudzysłów. Linia 5. a minus punkt początkowy. Linia 6. b minus punkt końcowy. Linia 7. i minus krok. Linia 8. cudzysłów cudzysłów cudzysłów. Linia 10. def f otwórz nawias okrągły x zamknij nawias okrągły dwukropek. Linia 11. return x asterysk asterysk 2. Linia 13. X znak równości otwórz nawias kwadratowy x for x in range otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły zamknij nawias kwadratowy. Linia 14. Y znak równości otwórz nawias kwadratowy f otwórz nawias okrągły x zamknij nawias okrągły for x in range otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły zamknij nawias kwadratowy. Linia 15. plt kropka plot otwórz nawias okrągły X przecinek Y zamknij nawias okrągły. Linia 16. plt kropka show otwórz nawias okrągły zamknij nawias okrągły. Linia 18. wykres podkreślnik funkcji otwórz nawias okrągły minus 2 przecinek 50 przecinek 1 zamknij nawias okrągły.

Wynikiem działania takiego programu będzie wykres:

RqL7kOjdP3kkb
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Moduł matplotlib możemy również wykorzystać w celu nałożenia różnych typów wykresów. Tym samym wyświetlimy jednocześnie wykres słupkowy (otrzymany za pomocą metody bar()) oraz wykres liniowy (otrzymany za pomocą metody plot()). Używając wykresu słupkowego, możemy zobaczyć, na jakich przedziałach nasza funkcja liczyła pola trapezów. Oto zdefiniowana funkcja:

Linia 1. import matplotlib kropka pyplot as plt. Linia 3. def wykres podkreślnik funkcji otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły dwukropek. Linia 4. cudzysłów cudzysłów cudzysłów. Linia 5. a minus punkt początkowy. Linia 6. b minus punkt końcowy. Linia 7. i minus krok. Linia 8. cudzysłów cudzysłów cudzysłów. Linia 10. def f otwórz nawias okrągły x zamknij nawias okrągły dwukropek. Linia 11. return x asterysk asterysk 2. Linia 13. X znak równości otwórz nawias kwadratowy x for x in range otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły zamknij nawias kwadratowy. Linia 14. Y znak równości otwórz nawias kwadratowy f otwórz nawias okrągły x zamknij nawias okrągły for x in range otwórz nawias okrągły a przecinek b przecinek i zamknij nawias okrągły zamknij nawias kwadratowy. Linia 16. kratka bar minus wykres słupkowy. Linia 17. plt kropka bar otwórz nawias okrągły X przecinek Y zamknij nawias okrągły. Linia 19. kratka plot minus wykres liniowy. Linia 20. plt kropka plot otwórz nawias okrągły X przecinek Y przecinek apostrof r minus apostrof zamknij nawias okrągły. Linia 22. plt kropka show otwórz nawias okrągły zamknij nawias okrągły. Linia 24. wykres podkreślnik funkcji otwórz nawias okrągły minus 2 przecinek 50 przecinek 1 zamknij nawias okrągły.

Wynikiem działania takiego programu będzie wykres:

RIG9leMC1HKKM
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Już wiesz
  • Wartość całki możemy obliczyć, wykorzystując metodę trapezów.

  • W celu obliczenia wartości różnych funkcji, możemy użyć funkcji eval().

Słownik

całka
całka

uogólnione pojęcie sumy; można ją sobie wyobrazić jako sumę nieskończonej liczby nieskończenie małych wartości funkcji f(x)

eval( )
eval( )

wbudowana funkcja w języku Python; może służyć do dynamicznego wyliczania wartości wyrażenia w programie

matplotlib
matplotlib

biblioteka służąca do przedstawienia obrazów złożonych z punktów o współrzędnych  x oraz y (wykresów, histogramów, rozkładów itp.); moduł matplotlib nie jest dostępny w standardowej instalacji języka Python – należy go zainstalować, korzystając z mechanizmu pip