Koniec żartów! Urlop trwa w najlepsze, ale nie lubię zbyt długo leżeć plackiem i opalać się, dlatego dziś temat poważny, matematyczny, czyli całkowanie numeryczne metodą prostokątów.

Całki to taki matematyczny cud, który studentom zapewnia nieprzespane noce i stresy podczas sesji. Złapmy byka za rogi i pocałkujmy z pomocą programowania!
Postaram się odpowiedzieć w tym wpisie na następujące pytania:

  • Czym jest całka?
  • Czym jest całkowanie numeryczne?
  • Jak wygląda implementacja?

Już nie mogę się doczekać, aby zagłębić się w ten temat, mimo że całki powodowały i w moim przypadku bardzo ciężkie chwile na studiach, to i tak postanowiłem zmierzyć się z demonami przeszłości.

Zaczynajmy!

Wprowadzenie

Aby w ogóle przejść do implementacji algorytmu, warto odpowiedzieć sobie na jedno bardzo ważne pytanie. Czym w ogóle jest ta cała całka i całkowanie?

Oczywiście pytanie obejmuje bardzo szerokie spektrum zagadnień matematycznych i to, co postaram się przedstawić, będzie tylko wiedzą bardzo ogólną. Całka to w zasadzie zbiór pojęć, które spięte są w jeden wielki dział matematyki zwany analizą.

Ale zacznijmy od początku.

Historia całek

Wiele mówi się, że dość nieświadomie całki były używane już w starożytności przez Archimedesa. Później rachunek różniczkowy i całkowy został rozwinięty w XII wieku w Indiach. Jednak dopiero XVII wiek to moment, w którym pojęcie całki nabrało kształtu. 

Nad rachunkiem jednocześnie, jednak niezależnie pracowali Isaack Newton oraz niemiecki matematyk Gottfried Wilhelm Leibniz. I to właśnie temu drugiem przypisuje się wynalezienie rachunku różniczkowego i całkowego, ogłoszonych w rozprawach: „Nova methodus pro maximis et minimis” z roku 1684  i „De geometria recondita et analysi indivisibilium atque infinitorum”  z roku 1686.

W wieku XIX dopracowanie zagadnień przypadło na niezwykle płodnego, francuskiego matematyka Augustin Louis Cauchy. Kolejnych dwóch matematyków dołożyło swoją cegiełkę (i nawet do dziś mamy całki nazwane ich nazwiskami) – chodzi oczywiście o Bernhard Riemanna i Henri Lebesgue.

W 1870 roku pojawiła się pierwsza, polskojęzyczna publikacja na temat rachunku różniczkowego i całkowego. Twórcą był Władysław Folkierski i książka nosiła tytuł „Zasady rachunku różniczkowego i całkowego z zastosowaniami”

Tak przedstawia się historia w telegraficznym skrócie. Można na sam ten temat znaleźć opasłe tomy w bibliotekach. Zachęcam do zagłębienia tematu. 

Czas przejść dalej.

Definicja całki

Z angielskiego całka to Integral. O polskiej genezie tego słowa napiszę niżej, bo jest to dość ciekawa sprawa. Definicję całki możemy opisać jednym zdaniem — funkcja pierwotna względem funkcji pochodnej lub różniczki. Za tym zdaniem kryje się jednak jedna z najważniejszych operacji w całej analizie matematycznej.

Samych całek jest mnoga ilość a najbardziej powszechna kwalifikacja to całka:

  • oznaczona
  • nieoznaczona

Intuicyjnie całkę można przedstawić w prosty sposób. Wyobraź sobie figurę, niech to będzie figura składająca się z czterech boków. Trzy z nich to odcinki proste, czwarty bok natomiast jest krzywą.

 Figura, której pole powierzchni wydaje się ciężkie do obliczenia.
Rysunek 1. Figura, której pole powierzchni wydaje się ciężkie do obliczenia.

Jak teraz obliczyć wartość takiego pola powierzchni? A gdyby tak figurę przenieśli na układ współrzędnych? Wtedy krzywa stanie się funkcją y = f(x). 

Figura przeniesiona na układ współrzędnych.
Rysunek 2. Figura przeniesiona na układ współrzędnych.

Następnie podzielić taką figurę na nieskończenie wiele, nieskończenie małych prostokątów ? Oczywiście nie jest to możliwe, dlatego nasz przykładowy rysunek podzielę na 10 prostokątów o stałej szerokości s1.

Wystarczy teraz obliczyć pola poszczególnych prostokątów i ich suma da przybliżony wynik pola powierzchni i figury pod wykresem. Tego typu oszacowanie nazywamy górnym. 

 Podział  figury pod wykresem na 10 równej szerokości prostokątów. Oszacowanie górne
Rysunek 3. Podział figury pod wykresem na 10 równej szerokości prostokątów. Oszacowanie górne.

Poniżej rysunek z prostokątami pomocnymi do oszacowania dolnego. Różnica widoczna jest gołym okiem. Żaden z prostokątów nie wystaje poza krzywą.

Podział figury pod wykresem na 10 równej szerokości prostokątów. Oszacowanie dolne.
Rysunek 4. Podział figury pod wykresem na 10 równej szerokości prostokątów. Oszacowanie dolne.

Dokładność

Zastanówmy się teraz nad dokładnością pola powierzchni. Będzie ono miało pewien margines błędu, który wynosić będzie różnicę między oszacowaniem dolnym lub oszacowaniem górnym a właściwym polem powierzchni. Zachowana będzie też nierówność.

Oszacowanie dolne < Pole powierzchni < Oszacowanie górne

Warto zauważyć jeszcze, że na im większą liczbę prostokątów podzielimy figurę, tym dokładniej oszacujemy pole powierzchni.

Jest to model maksymalnie uproszczony, ale idealnie nadaje się do zrozumienia tematu dzisiejszego zagadnienia. Ta skromna definicja całki będzie dla nas wystarczająca. 

Czas przejść dalej.

Całkowanie numeryczne

Skoro mamy już omówione pojęcie całki, to teraz warto odpowiedzieć sobie na jeszcze jedno pytanie. Czym jest całkowanie numeryczne?

W skrócie można powiedzieć, że jest to przybliżone obliczanie całek oznaczonych. Często spotyka się też pojęcie kwadratury lub kwadratury numerycznej, co jest jednoznaczne z całkowaniem numerycznym. Sam proces obliczeń można przedstawić jako średnia ważona mniejszych elementów całości. Zazwyczaj wyznaczone podprzedziały mają równą szerokość. Zupełnie jak prostokąty na rysunkach powyżej.

 Całkowanie numeryczne możemy podzielić na kilka metod:

  • prostokątów
  • trapezów
  • parabol
  • metody losowe takie jak Monte Carlo czy parabolistyczna

Zadaniem dzisiejszego artykułu jest przedstawienie tematu, jakim jest całkowanie numeryczne metodą prostokątów.

Implementacja

Całkowanie numeryczne metodą prostokątów jest jednym z najłatwiejszych sposobów numerycznego obliczania przybliżonej wartości całki. 

Aby obliczyć pole powierzchni, musimy najpierw obliczyć pole poszczególnych prostokątów. Aby to zrobić, możemy wyliczyć zarówno wysokość, jak i szerokość każdego z prostokątów. Z szerokością nie będzie problemu. Wystarczy zastosować wzór. 

Różnica b – a to długość całej figury, wartość i natomiast to ilość wszystkich prostokątów. Z wysokością jest już trochę trudniej. Może być ona bowiem różna dla każdego z podprzedziałów. Korzystamy w tym przypadku ze wzoru na wartość funkcji w środku każdego z kwadratów. Dla każdej kolejnej wysokości będziemy przesuwać ją o wartość szerokości (nasze dx wyznaczone wyżej). 

Najlepiej pokaże nam to implementacja.

 

def integrate(function, a, b, i):
    dx = (b - a) / i
    integr = 0
    for x in range(i):
        x = x * dx + a
        integr += dx * eval(function)
    return integr

def main(args):
    function = input("Funkcja: ")
    a = float(input("Początek przedziału: "))
    b = float(input("Koniec przedziału: "))
    i = int(input("Liczba podprzedziałów: "))
    print("Całka = {integrate}".format(integrate = integrate(function, a, b, i)))
    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

Kod powyżej powielany jest na kilku stronach z algorytmami. Sam tu Ameryki nie odkryłem, ale ważna jest analiza powyższego przypadku. Jak na tak wydawać by się mogło skomplikowane zadanie, kodu jest bardzo niewiele. 

Omówienie

Działanie programu opieramy na dwóch funkcjach. Main oraz Integrate. Druga z funkcji gra tu kluczową rolę. Na jej wejście podajemy wzór funkcji, zakres całkowania oraz próbkowanie, czyli ilość prostokątów, na jaki dzielimy figurę.

Na początku obliczamy dx, czyli szerokość prostokątów. Kolejnym krokiem jest deklaracja zmiennej integr, która przechowa wynik.

Teraz możemy użyć pętli i przeiterować po ilości prostokątów. Warto dodać, że w pierwszej linii wyliczana jest nowa wersja x. Następnie pozostaje wyliczyć pole prostokąta i dosumować do zmiennej, która zawiera końcowy wynik.

Warto też zwrócić uwagę na funkcję eval(). Przyjmuje ona na wejście wyrażenie i zwraca jego wartość. Reasumując, w naszym przypadku będzie to po prostu nasza funkcja.

>>> x = 3
>>> print eval('x+1')
4

W funkcji Main pobieramy od użytkownika wartości, które zostaną użyte do obliczeń oraz wypisujemy wynik na ekran. 

Działanie przykładowego całkowania poniżej.

 Wynik działania algorytmu całkowania metodą prostokątów.
Rysunek 5. Wynik działania algorytmu całkowania metodą prostokątów.

Czy wiesz, że…

Język nasz rodzimy w wielu kwestiach potrafi zaskakiwać. Nie inaczej jest ze słowem całka. Za sprawą Jana Śniadeckiego słowo całka zostało wprowadzone do naszego języka jako tłumaczenie integral.

Została tu zastosowana tak zwana kalka wyrazowa. Nie pisałbym o tym, gdyby nie fakt tego, że jesteśmy chyba jedynym krajem w Europie obok Islandii, który nie używa nazwy integral lub jej podobnego brzmienia. Wystarczy sprawdzić rysunek poniżej!

 Nazwa całki w krajach europejskich.
Rysunek 6. Nazwa całki w krajach europejskich.

Zapis całki

Całka jest znana z jeszcze jednej rzeczy. Chodzi o jej zapis. 

Zacznijmy od środkowego elementu. W zaznaczony prostokąt wstawiana jest funkcja, którą aktualnie całkujemy. W przypadku powyżej (Rysunki 2-4) będzie to funkcja f(x).

Całkę oznaczamy znakiem łacińskiego słowa Summa (suma). Znak ten jest przedstawiony przed prostokątem.

Zakończenie zapisu oznaczone jest poprzez dx, czyli informacja, że całkowana jest funkcja (w naszym przypadku f(x)) po zmiennej x. Warto zaznaczyć, że jest to symboliczne zamknięcie operacji i przy prostych całkach jest to zapis jedynie formalny. Po prostu nie ma wpływu na wynik.

Podsumowanie

Wewnętrznie czułem, że chcę sprawdzić pracę zdalną w Tajlandii, więc potrzebowałem do tego mocnego tematu. Takim właśnie stał się temat „Całkowanie numeryczne — metoda prostokątów”.

Z tym problemem między innymi mierzyłem się też podczas studiów i przedmiotu metody numeryczne, o czym pisałem zresztą we wpisie numer 16

Chcę też raz jeszcze nadmienić, że całkowanie to bardzo potężna gałąź matematyki i wielu matematyków z całego świata codziennie się z nimi mierzy. Uważam nawet, że raptem może ułamek procenta poruszyłem w tej kwestii. Zachęcam z tego miejsca gorąco do nauki matematyki, a zwłaszcza analizy matematycznej, ponieważ ma ona swoje uroki, które ciężko na początku zauważyć, ale w późniejszym etapie potrafią uzależnić 🙂

Uciekam cieszyć się słonecznym dniem. Do następnego tygodnia!

PS. Będę wdzięczny za komentarze pod tym postem!

PS2. Czeka też na Ciebie prezent. Wystarczy, że zapiszesz się na Newsletter poniżej!

PS3. Dołącz do naszej grupy na Facebook!


Subskrybuj

Zapisz się na Newsletter, odbierz NAGRODĘ w postaci 10 omówionych algorytmów pojawiających się w pytaniach podczas REKRUTACJI.

Dodatkowo otrzymuj co niedzielę informacje na temat nowych wpisów, wiadomości ze świata IT i matematyki oraz ciekawych wydarzeniach. Nie przegap i dołącz już dziś do 599 osób!.

Źródła

 http://hint.org.pl/kat/HID=AD041;r=1;p=0c350004.1 
 http://dydmat.mimuw.edu.pl/analiza-matematyczna-i/calka 
 http://matematykadlastudenta.pl/strona/214.html 
 https://trudnyjezykpolski.pl/calki-buziaki-i-jan-sniadecki/ 
 http://www.math.us.edu.pl/~pgladki/faq/node77.html 
 https://epodreczniki.open.agh.edu.pl/tiki-index.php?page=Definicja+ca%C5%82ki+oznaczonej+Riemanna 
 https://epodreczniki.open.agh.edu.pl/tiki-index.php?page=Ca%C5%82ki+niew%C5%82a%C5%9Bciwe 
Autor

👨‍💻 .NET and Python programming passionate 🏦 Digtial Banking Solutions 🎓 Student 📊 Psychology 📚 Bookworm 🏠 Warsaw

8 komentarzy

  1. Mateusz,

    Kolejny artykuł który trzyma wysoki poziom – zdecydowanie bliższy oszacowania górnego 🙂
    Temat całek jest mi szczególnie bliski bo temat mojej pracy magisterskiej to Całka Riemanna – Stieltjesa i funkcje o wahaniu skończonym. Oj dawne czasy….

    • Dziękuje Krzysztofie!

      Chętnie porozmawiam kiedyś w wolnej chwili na tematy matematyczne, bo masz dużo większą wiedzę niż ja w tym zakresie 🙂

      Pozdrawiam, Mateusz.

  2. Super fajny artykul. Do tej pory nie wiedzialem co to Całka a teraz jest to juz bardziej dla mnie zrozumiale.

    Zastanawiam sie dlaczego w Polsce uzywa sie innej nazwy niz prawie na calym swiecie. Skad taka zmiana, czy odstepstwo?

    Staram sie uczyc matematyki codziennie i naprawde matematyka bardzo wciaga. Nawet byl taki kawal ze matematyk mial zone i kochanke i mawial ze jak zona mysli ze jest u kochanki a kochanka mysli ze jest u zony to moze w spokoju obcowac z matematyka oddajac sie rozwiazywaniu zadan i zagadnien matematycznych 🙂.

    Pozdrawiam 😊.

    • Dzięki Mateusz za komentarz! 🙂

      Ciekawa anegdota z tym matematykiem. Co do samej genezy powstania polskiego odpowiednika nazwy Integral to ciężko mi było znaleźć jednoznaczną odpowiedź.

  3. Prosto, logiczne, ciekawie. Jednym słowem super 😁, zaczynam właśnie metody numeryczne, a całkowanie trochę zapomniałem przez studia. Bardzo przydatny post.

Napisz komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.