Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek

©2026 mgr Jerzy Wałaszek

obrazek

Całkowanie

Metoda prostokątów

SPIS TREŚCI REMANENT
Podrozdziały
 

Wstęp

Metoda Prostokątów (ang. Rectangle Method, z jej wariantami: lewymi, prawymi i środkowymi) to jedna z najstarszych i najbardziej intuicyjnych technik obliczeniowych w historii matematyki. Pomimo że dzisiaj kojarzymy ją głównie z formalną definicją całki Riemanna, jej początki można znaleźć już tysiące lat wstecz, na długo przed narodzinami współczesnego rachunku różniczkowego i całkowego.

Poniżej przedstawiamy krótko chronologiczny przegląd rozwoju tej metody – od starożytnych intuicji geometrycznych po rygorystyczną analizę matematyczną.

Starożytność – Metoda ekshaustii

Przed sformułowaniem pojęcia „całki”, matematycy próbowali rozwiązywać problem kwadratury, czyli znajdowania pól powierzchni figur o zakrzywionych brzegach.

Antyczna Grecja

Eudoksos z Knidos, a następnie Archimedes z Syrakuz (III w. p.n.e.), rozwinęli metodę ekshaustii (wyczerpywania). Wpisywali oni i opisywali na badanych obszarach (np. pod parabolą lub wewnątrz koła) wielokąty o znanych polach. Zwiększając liczbę boków, „wyszukiwali” dokładną wartość pola. Choć nie używali pojęcia „prostokąta” w sensie siatki kartezjańskiej, zasada aproksymacji sumą prostych figur geometrycznych była identyczna z ideą dzisiejszych sum prostokątów.

Starożytny Babilon

Tabliczki pismem klinowym z około 200 r. p.n.e. dowodzą, że babilońscy astronomowie używali geometrycznych przybliżeń (w tym trapezów i prostokątów) do obliczania drogi i pozycji Jowisza na niebie. Był to pierwszy znany przypadek wykorzystania tej idei do analizy ruchu.

Średniowiecze i Renesans – Zapowiedź nieskończoności

Nicole Oresme (XIV w.). Ten francuski filozof i matematyk jako jeden z pierwszych zaczął geometrycznie reprezentować intensywność cech (np. prędkość jako funkcję czasu). Dzielił czas na małe odcinki i przybliżał przebytą drogę za pomocą sumowania „pasków”, co bezpośrednio odpowiadało geometrycznej idei metody prostokątów.

Bonaventura Cavalieri (XVII w.). W 1635 roku włoski matematyk sformułował geometrię niepodzielnych (łac. indivisibles). Postrzegał on figury płaskie jako złożone z nieskończenie wielu równoległych linii (odcinków). Przejście od nieskończenie cienkich linii do „pasków” o mierzalnej szerokości stanowiło bezpośredni pomost techniczny do algorytmu prostokątów.

Wiek XVII: Newton, Leibniz i narodziny rachunku

W drugiej połowie XVII wieku Sir Isaac Newton oraz Gottfried Wilhelm Leibniz niezależnie odkryli podstawowe twierdzenie rachunku całkowego, łącząc pochodne z całkami.

Leibniz postrzegał całkę jako sumę nieskończenie wielu nieskończenie małych prostokątów o szerokości \(dx\) i wysokości \(f(x)\). To właśnie od słowa łacińskiego summa (suma) wprowadził on charakterystyczny znak całki \(\int \) (stylizowaną literę S). W tamtym okresie metoda prostokątów przestała być jedynie geometryczną sztuczką, a stała się fundamentalną intuicją stojącą za nowym aparatem matematycznym.

Wiek XIX: Formalizacja Riemanna i Darboux

Mimo sukcesów Newtona i Leibniza, rachunek całkowy przez ponad stulecie opierał się na nieostrym pojęciu „wielkości nieskończenie małych”. Dopiero w XIX wieku nastąpiła pełna rygoryzacja matematyczna.

Bernhard Riemann (1854 r.). Niemiecki matematyk zdefiniował całkę w sposób całkowicie uniezależniony od pojęcia pochodnej. Wprowadził konstrukcję znaną dziś jako suma Riemanna. Podzielił przedział na skończoną liczbę podprzedziałów, a nad każdym z nich wzniósł prostokąt o wysokości równej wartości funkcji w dowolnym punkcie tego podprzedziału. Pokazał, że jeśli przy zagęszczaniu podziału suma pól zmierza do jednej granicy, funkcja jest całkowalna.

Gaston Darboux (1875 r.). Uporządkował teorię Riemanna, wprowadzając sumy dolne (metoda prostokątów wpisanych/lewych/prawych w zależności od monotoniczności) oraz sumy górne (prostokąty opisane). Udowodnił, że zbieżność obu tych skrajnych wariantów metody prostokątów definiuje istnienie całki.

Wiek XX i XXI: Era komputerów i metod Newtona-Cotesa

Wraz z pojawieniem się pierwszych maszyn liczących i komputerów w XX wieku, metoda prostokątów zyskała nowe życie w analizie numerycznej. Została sklasyfikowana jako najprostszy przypadek wzorów Newtona-Cotesa stopnia zerowego (gdzie funkcję podcałkową przybliża się wielomianem stopnia 0, czyli funkcją stałą).

Choć w praktyce inżynierskiej szybciej wyparto ją na rzecz dokładniejszych metod (takich jak metoda trapezów czy metoda Simpsona), wariant środkowy (ang. Midpoint Rule) pozostał ceniony za optymalny stosunek prostoty do dokładności (posiada ten sam rząd zbieżności co metoda trapezów, mimo prostszej konstrukcji).


Intuicje geometryczne

W przeciwieństwie do współczesnej matematyki, która opiera się na formalnej logice symbolicznej i teorii zbiorów, starożytni „widzieli” matematykę poprzez kształty, proporcje i ruch.

Ich intuicje charakteryzowały się kilkoma kluczowymi cechami:

  1. Dominacja geometrii nad algebrą („Liczba to długość”).
    Dla starożytnych Greków (zwłaszcza pitagorejczyków) liczba nie była abstrakcyjnym symbolem na papierze. Była odcinkiem lub zbiorem punktów ułożonych w konkretny kształt (stąd pojęcia liczb trójkątnych czy kwadratowych).
    Intuicja: Mnożenie dwóch liczb, np. \({a \cdot b}\), nie było operacją arytmetyczną, lecz budowaniem prostokąta o bokach \(a\) i \(b\). Wynik operacji był polem powierzchni.
    Konsekwencja: Gdy Pitagoras odkrył niewymierność \(\sqrt{2}\), wywołało to kryzys filozoficzny. Starożytni nie potrafili pojąć tej liczby jako wartości, ale ich geometryczna intuicja pozwalała im ją bez problemu narysować jako przekątną kwadratu o boku 1.
  2. Myślenie dynamiczne i procesowe (Mechanika jako dowód).
    Geniusz Archimedesa polegał na tym, że potrafił połączyć intuicję fizyczną z matematyczną. W swoim słynnym dziele O metodzie opisywał, jak odkrywał wzory na objętość kuli, wyobrażając sobie... ważenie brył na wadze dźwigniowej.
    Intuicja: Dzielił bryły na nieskończenie wiele cienkich „plasterków” i mentalnie równoważył je na dźwigni z innymi, znanymi bryłami (walcem i stożkiem).
    Konsekwencja: Fizyczna intuicja środka ciężkości i równowagi pozwalała mu przewidzieć poprawny wynik matematyczny, który dopiero później dowodził rygorystycznie za pomocą geometrii.
  3. Strach przed nieskończonością (Zgroza apeironu).
    Współczesny rachunek całkowy bez problemu operuje pojęciem nieskończoności czy punktu o zerowym wymiarze. Starożytni Grecy odczuwali przed tym głęboki opór (paradoksy Zenona z Elei, np. Achilles i żółw).
    Intuicja: Zamiast mówić o „nieskończenie małych prostokątach”, ich intuicja podpowiadała im proces potencjalny. Twierdzili: „zawsze możemy dodać kolejny, mniejszy element, aby zbliżyć się do prawdy”.
    Konsekwencja: Zamiast przechodzić do granicy w sensie współczesnym, stworzyli wspomnianą metodę ekshaustii – wyczerpywali przestrzeń coraz gęstszymi siatkami figur, co było genialnym, intuicyjnym obejściem braku pojęcia nieskończoności.
  4. Praktyczna aproksymacja (Matematyka algorytmiczna).
    U Babilończyków i Egipcjan intuicja miała charakter czysto użytkowy i operacyjny. Wynikała z potrzeb kalendarza, astronomii, podatków i budownictwa.
    Intuicja: Zauważali powtarzalne wzorce w przyrodzie i ruchu planet. Nie szukali ogólnego dowodu „dlaczego” coś działa, ale rozwijali niesamowitą intuicję numeryczną – potrafili genialnie przybliżać skomplikowane wartości (np. babilońskie algorytmy obliczania pierwiastków czy pozycji Jowisza).

Podsumowując: starożytna intuicja matematyczna była niezrównanym mistrzostwem wyobraźni przestrzennej. Tam, gdzie my dziś używamy skomplikowanych wzorów algebraicznych, oni używali oka, harmonii, proporcji i fizycznego poczucia przestrzeni.


do podrozdziału  do strony 

Algorytm

Metoda obliczania całki oznaczonej za pomocą prostokątów jest następująca:

Mamy pewną funkcję \(y = f(x)\), której całkę oznaczoną chcemy policzyć w wybranym przedziale \({[x_p;x_k]}\). Zgodnie z definicją wartość całki oznaczonej jest równa polu obszaru pod wykresem funkcji. Pole jest dodatnie, gdy obszar znajduje się ponad osią OX, a ujemne, gdy obszar jest pod osią OX. Pola tych obszarów są sumowane z uwzględnieniem znaku pola.

Przedział \({[x_p;x_k]}\) wypełniamy \(n\) w równych odstępach punktami:

Aby równo rozmieścić punkty \(x_i\) w przedziale \({[x_p;x_k]}\), musimy znaleźć wartość odstępu \(h\) pomiędzy dwoma sąsiednimi punktami. Wyliczamy ją ze wzoru:

\[
h = \frac{x_k - x_p}{n - 1}
\]

Dlaczego tak? Długość przedziału na osi OX jest równa różnicy współrzędnych \(x\) jego końca i początku, czyli \({x_k - x_p}\). A dlaczego tę długość dzielimy przez \({n - 1}\)? Spójrzmy niżej.

Każde dwa kolejne punkty \(x_i\) wyznaczają jeden podprzedział (segment):

Liczba punktów Liczba podprzedziałów Podział przedziału
n = 2 n - 1 = 2 - 1 = 1
n = 3 n - 1 = 3 - 1 = 2
n = 4 n - 1 = 4 - 1 = 3
n = 5 n - 1 = 5 - 1 = 4
... ... ...

Jak widzisz, liczba podprzedziałów jest zawsze o 1 mniejsza od liczby punktów rozłożonych równomiernie w przedziale \({[x_p;x_k]}\). Dlatego, aby obliczyć szerokość \(h\) podprzedziału (wszystkie podprzedziały mają tę samą szerokość), szerokość całego przedziału dzielimy przez liczbę podprzedziałów, a ta jest równa liczbie punktów minus jeden, co wyjaśnia nasz wzór.

Gdy znamy szerokość \(h\), czyli odległość pomiędzy każdymi dwoma kolejnymi punktami podziałowymi:

\[
h = x_{i+1} - x_i, \; i = 1,2, \dots , n - 1
\]

możemy prosto wyznaczyć każdy z punktów podziałowych. Pierwszy punkt \({x_1 = x_p}\). Ostatni punkt \({x_n = x_k}\). Pozostałe punkty wyliczymy dodając do \(x_p\) odpowiednią ilość szerokości \(h\):

\[
\begin{aligned}
&x_1 = x_p \\
&x_2 = x_p + h \\
&x_3 = x_p + 2h \\
&x_4 = x_p + 3h \\
&... \\
&x_i = x_p + (i - 1) \cdot h
\end{aligned}
\]

Po tym wstępie możemy przejść do właściwej metody prostokątów. Metoda ta występuje w trzech odmianach. Obszar pomiędzy wykresem funkcji \({y = f(x)}\) wypełniamy prostokątami o szerokości \(h\) i wysokości uzależnionej od wartości funkcji.

Metoda prostokątów lewostronnych (ang. Left Riemann Sum lub Left Endpoint Rule), wysokość każdego prostokąta wyznacza wartość funkcji na początku podprzedziału, czyli z lewej strony, stąd pochodzi nazwa tej metody.

Obliczamy wartości funkcji w początkach podprzedziałów, czyli z lewej strony:

\[
y_i = f(x_i), \; i = 1,2, \dots, n - 1
\]

Obliczamy pole prostokąta zbudowanego na każdym podprzedziale:

\[
P_i = h \cdot y_i, \; i = 1,2, \dots, n - 1
\]

Pola prostokątów sumujemy i otrzymujemy przybliżoną wartość całki oznaczonej. Zwróć uwagę, iż wartości \(y_i\) leżące pod osią OX są ujemne, zatem pola prostokątów pod osią będą również ujemne, co jest zgodne z definicją całki oznaczonej. Przy sumowaniu pól prostokątów możemy wyciągnąć ich szerokość \(h\) przed nawias:

\[
\begin{aligned}
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx P_1 + P_2 + ... + P_{n - 1} \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot y_1 + h \cdot y_2 + ... + h \cdot y_{n - 1} \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot (y_1 + y_2 + ... + y_{n - 1}) \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot \sum\limits_{i = 1}^{n - 1} y_i
\end{aligned}
\]

I ostatecznie:

\[
\begin{aligned}
&h = \frac{x_k-x_p}{n - 1} \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot \sum\limits_{i = 1}^{n - 1} f(x_p + (i - 1) \cdot h)
\end{aligned}
\]

Zwróć uwagę, iż całka może być obliczana w locie na podstawie \(i\), \(x_p\) oraz szerokości \(h\).

Metoda prostokątów prawostronnych (ang. Right Riemann Sum lub Right Endpoint Rule) jest dokładnym odpowiednikiem metody prostokątów lewostronnych. Jedyną różnicą jest to, iż jako wysokości prostokątów bierzemy wartości funkcji w prawych krańcach podprzedziałów, czyli od strony prawej.

Wyznaczamy wartości funkcji w końcach podprzedziałów, czyli z prawej strony:

\[
y_i = f(x_i), \; i = 2, 3, \dots, n
\]

Obliczamy pole prostokąta zbudowanego na każdym podprzedziale:

\[
P_i = h \cdot y_i, \; i = 2, 3, \dots, n
\]

Pola prostokątów sumujemy i otrzymujemy przybliżoną wartość całki oznaczonej. Przy sumowaniu pól prostokątów możemy wyciągnąć \(h\) przed nawias:

\[
\begin{aligned}
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx P_2 + P_3 + ... + P_n \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot y_2 + h \cdot y_3 + ... + h \cdot y_n \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot (y_2 + y_3 + ... + y_n) \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot \sum\limits_{i = 2}^{n} y_i
\end{aligned}
\]

I ostatecznie:

\[
\begin{aligned}
&h = \frac{x_k-x_p}{n - 1} \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot \sum\limits_{i = 2}^{n} f(x_p + (i - 1) \cdot h)
\end{aligned}
\]

Tak jak poprzednio całka może być liczona w locie na podstawie \(i\), \(x_p\) oraz wyliczonej szerokości \(h\).

Metoda prostokątów punktu środkowego (ang. Midpoint Rule) wyznacza wysokości prostokątów dla podprzedziałów jako wartości funkcji \(f(x)\) w ich środkach.

Na rysunku poglądowym powyżej specjalnie rozszerzyłem podprzedziały, aby lepiej było widać zasadę tworzenia prostokątów.

Współrzędne środków podprzedziałów  obliczymy łatwo wg wzoru:

\[
x_{t_i} = x_p + \frac{h}{2} + (i - 1) \cdot h , \; i = 1, 2, \dots, n - 1
\]

Reszta odpowiada metodzie prawostronnej. Jedynie przesuwamy punkt startowy \(x_p\) o połowę szerokości podprzedziału, co ułatwi rachunki:

\[
\begin{aligned}
&h = \frac{x_k-x_p}{n - 1} \\
&x_{tp} = x_p + \frac{h}{2} \\
&\int\limits_{x_p}^{x_k} f(x) \, dx \approx h \cdot \sum\limits_{i = 1}^{n-1} f(x_{tp} + (i - 1) \cdot h)
\end{aligned}
\]

Metoda prostokątów punktu środkowego jest najdokładniejszą z tych trzech opisanych metod obliczania całki oznaczonej.


do podrozdziału  do strony 

Przykładowa implementgacja

Program liczy całkę oznaczoną:

\[
\int\limits_0^{\pi} \left(\sin(x) + cos(x)\right) \, dx
\]

Całka ta ma wartość dokładną (analityczną) 2. Program liczy całkę dla 100 punktów trzema metodami prostokątów, a następnie wyświetla wyniki porównawcze. Wyjaśnienia są w komentarzach

C++
// Całkowanie metodą prostokątów
// (C)2026 mgr Jerzy Wałaszek
// Metody numeryczne 0081
//------------------------------

#define _USE_MATH_DEFINES
#include <iostream>
#include <windows.h>
#include <iomanip>
#include <cmath>

using namespace std;

// Definicje stałych
//------------------

// Liczba punktów
const int N = 100;
// Przedział całkowania
const double Xp = 0;
const double Xk = M_PI;
// Szerokość prostokątów
const double H = (Xk - Xp) / (N - 1);

// Całkowana funkcja
double f(double x)
{
  return sin(x) + cos(x);
}

// Metoda prostokątów lewostronnych
double left_r()
{
  int i;
  double s;

  // Wartość całki
  s = 0;
  for(i = 1; i < N; i++)
    s += f(Xp + (i - 1) * H);
  s *= H;
  return s;
}

// Metoda prostokątów prawostronnych
double right_r()
{
  int i;
  double s;

  // Wartość całki
  s = 0;
  for(i = 2; i <= N; i++)
    s += f(Xp + (i - 1) * H);
  s *= H;
  return s;
}

// Metoda prostokątów
// punktu środkowego
double middle_r()
{
  int i;
  double x,s;

  // Wartość całki
  s = 0;
  // Punkt startowy
  x = Xp + H / 2;
  for(i = 1; i < N; i++)
    s += f(x + (i - 1) * H);
  s *= H;
  return s;
}

// Program główny
//---------------
int main()
{
  SetConsoleOutputCP(CP_UTF8);
  SetConsoleCP(CP_UTF8);

  cout << setprecision(5)
       << fixed;

  cout
  << "Obliczanie całki oznaczonej "
     "metodami prostokątów:\n\n"
  << "prawostronnych    : " << setw(7)
  << right_r() << endl
  << "lewostronnych     : " << setw(7)
  << left_r() << endl
  << "punktu środkowego : " << setw(7)
  << middle_r() << endl;
  cout << endl;
  system("pause");
  return 0;
}
Wynik:
Obliczanie całki oznaczonej metodami prostokątów:

prawostronnych    : 1.96810
lewostronnych     : 2.03157
punktu środkowego : 2.00008
Python (dodatek)
# Całkowanie metodą prostokątów
# (C)2026 mgr Jerzy Wałaszek
# Metody numeryczne 0081
#------------------------------

from math import sin, cos, pi

# Definicje stałych
#------------------

# Liczba punktów
n = 100
# Przedział całkowania
xp = 0
xk = pi
# Szerokość prostokątów
h = (xk - xp) / (n - 1)

# Całkowana funkcja
def f(x):
    return sin(x) + cos(x)

# Metoda prostokątów lewostronnych
def left_r():
    # Wartość całki
    s = 0
    for i in range(n - 1):
        s += f(xp + i * h)
    s *= h
    return s

# Metoda prostokątów prawostronnych
def right_r():
    # Wartość całki
    s = 0
    for i in range(1, n):
        s += f(xp + i * h)
    s *= h
    return s

# Metoda prostokątów
# punktu środkowego
def middle_r():
    # Wartość całki
    s = 0
    # Punkt startowy
    x = xp + h / 2
    for i in range(n - 1):
        s += f(x + i * h)
    s *= h
    return s

# Program główny
#---------------

print(f"Obliczanie całki oznaczonej "
      f"metodami prostokątów:\n\n"
      f"prawostronnych    : "
      f"{right_r():7.5f}\n"
      f"lewostronnych     : "
      f"{left_r():7.5f}\n"
      f"punktu środkowego : "
      f"{middle_r():7.5f}\n")
input("Naciśnij Enter...")

 


do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.