|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
| SPIS TREŚCI |
|
| Podrozdziały |

Opisana w poprzednim rozdziale metoda prostokątów nie jest zbyt dokładna, ponieważ pola użytych w niej prostokątów źle odwzorowują powierzchnię pola pod krzywą (dokładność odwzorowania rośnie wraz ze wzrostem liczby prostokątów). Dużo lepszym rozwiązaniem jest zastosowanie zamiast nich trapezów o wysokości dx i podstawach równych odpowiednio wartości funkcji w punktach krańcowych.. Sama zasada nie zmienia się.
Przedział całkowania
[
dla i =
0,1,2,...,n

Obliczamy odległość między dwoma sąsiednimi punktami - będzie to wysokość każdego trapezu:

Dla każdego wyznaczonego w ten sposób punktu obliczamy wartość
funkcji

Pole pod wykresem funkcji przybliżane jest polami n trapezów. Pole i-tego trapezu obliczamy wg wzoru:
dla i=1,2,...,n

Przybliżona wartość całki jest sumą pól wszystkich otrzymanych w ten sposób trapezów:

czyli

Wyprowadzony na końcu wzór jest podstawą przybliżonego wyliczania całki w metodzie trapezów.
![]() |
Przykład:
Obliczymy ręcznie przybliżoną wartość całki oznaczonej z funkcji
Przedział podzielimy na n+1 = 5 punktów:

Odległość między dwoma sąsiednimi punktami wynosi:

Dla każdego z wyznaczonych punktów obliczamy wartość funkcji

Obliczamy sumę pól trapezów:


Otrzymaliśmy wynik identyczny jak w przypadku metody prostokątów - dlaczego?
| xp | - początek przedziału całkowania, xp ∈ R |
| xk | - koniec przedziału całkowania, xk ∈ R |
| n | - liczba punktów podziałowych, n ∈ N |
| f (x) | - funkcja rzeczywista, której całkę liczymy |
| s | - przybliżona wartość całki oznaczonej funkcji f (x) w przedziale [xp,xk], s ∈ R |
| dx | - odległość między dwoma sąsiednimi punktami podziałowymi, dx ∈ R |
| i | - licznik punktów podziałowych, i ∈ N |
| K01: | s ← 0 |
| K02: | ![]() |
| K03: | Dla i = 1,2,...,n : wykonuj: s ← s + f (xp + i ·dx) |
| K04: | ![]() |
| K05: | Zakończ |

Po odczytaniu informacji o krańcach xp i xk przedziału całkowania ustawiamy sumę s na 0, obliczamy odległość dx pomiędzy sąsiednimi punktami podziałowymi i ustawiamy ich licznik na 1.
Rozpoczynamy pętlę iteracyjną, która wykona się
Po zakończeniu pętli do sumy s dodajemy średnią wartość funkcji na krańcach przedziału i całość przemnażamy przez dx Po tej operacji s zawiera wartość przybliżoną całki. Zwracamy ją użytkownikowi i kończymy algorytm.
C++//****************************************************
//** Obliczanie całki oznaczonej metodą trapezów **
//** ---------------------------------------------- **
//** (C)2004 mgr Jerzy Wałaszek I LO w Tarnowie **
//****************************************************
#include <iomanip>
#include <iostream>
#include <cstdlib>
using namespace std;
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
double f(double x)
{
return(x * x + 2 * x);
}
//********************
//** Program główny **
//********************
int main()
{
const int N = 1000; //liczba punktów/trapezów podziałowych
double xp,xk,s,dx;
int i;
cout << setprecision(3) // 3 cyfry po przecinku
<< fixed; // format stałoprzecinkowy
cout << "Obliczanie calki oznaczonej\n"
" za pomoca metody trapezow\n"
"----------------------------\n"
"(C)2004 mgr J.Walaszek I LO\n\n"
"f(x) = x * x + 2 * x\n\n"
"Podaj poczatek przedzialu calkowania\n\n"
"xp = ";
cin >> xp;
cout << "\nPodaj koniec przedzialu calkowania\n\n"
"xk = ";
cin >> xk;
cout << endl;
s = 0;
dx = (xk - xp) / N;
for(i = 1; i < N; i++) s += f(xp + i * dx);
s = (s + (f(xp) + f(xk)) / 2) * dx;
cout << "Wartosc calki wynosi : " << setw(8) << s
<< endl << endl;
system("pause");
return 0;
}
|
Pascal//*************************************************
//** Obliczanie całki oznaczonej metodą trapezów **
//** ------------------------------------------- **
//** (C)2004 mgr Jerzy Wałaszek I LO w Tarnowie **
//*************************************************
program int_trapez;
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
function f(x : double) : double;
begin
f := x * x + 2 * x;
end;
//********************
//** Program główny **
//********************
const N = 1000; //liczba punktów/trapezów podziałowych
var
xp,xk,s,dx : double;
i : integer;
begin
writeln('Obliczanie calki oznaczonej');
writeln(' za pomoca metody trapezow');
writeln('----------------------------');
writeln('(C)2004 mgr J.Walaszek I LO');
writeln;
writeln('f(x) = x * x + 2 * x');
writeln;
writeln('Podaj poczatek przedzialu calkowania');
writeln;
write('xp = '); readln(xp);
writeln;
writeln('Podaj koniec przedzialu calkowania');
writeln;
write('xk = '); readln(xk);
writeln;
s := 0;
dx := (xk - xp) / N;
for i := 1 to N - 1 do s := s + f(xp + i * dx);
s := (s + (f(xp) + f(xk)) / 2)* dx;
writeln('Wartosc calki wynosi : ',s:8:3);
writeln;
writeln('Nacisnij klawisz Enter...');
readln;
end.
|
Basic'************************************************* '** Obliczanie całki oznaczonej metodą trapezów ** '** ------------------------------------------- ** '** (C)2004 mgr Jerzy Wałaszek I LO w Tarnowie ** '************************************************* Declare Function f(x as Double) As Double '******************** '** Program główny ** '******************** const N = 1000 'liczba punktów/trapezów podziałowych Dim As Double xp,xk,s,dx Dim As Integer i Print "Obliczanie calki oznaczonej" Print " za pomoca metody trapezow" Print "----------------------------" Print "(C)2004 mgr J.Walaszek I LO" Print Print "f(x) = x * x + 2 * x" Print Print "Podaj poczatek przedzialu calkowania" Print input "xp = ", xp Print Print "Podaj koniec przedzialu calkowania" Print Input "xk = ", xk Print s = 0 dx = (xk - xp) / N for i = 1 to N - 1: s = s + f(xp + i * dx): Next s = (s + (f(xp) + f(xk)) / 2) * dx print Using "Wartosc calki wynosi : #####.###";s Print Print "Nacisnij klawisz Enter..." Sleep End '******************************* '** Tutaj definiujemy funkcję ** '******************************* function f(x as Double) As Double f = x * x + 2 * x End Function |
JavaScript<html>
<head>
<title>Całkowanie numeryczne metodą trapezów</title>
</head>
<body>
<script language="JavaScript">
//****************************************************
//** Obliczanie całki oznaczonej metodą trapezów **
//** ---------------------------------------------- **
//** (C)2004 mgr Jerzy Wałaszek I LO w Tarnowie **
//****************************************************
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
function f(x)
{
return(x * x + 2 * x);
}
function js_trapez()
{
var N = 1000; //liczba punktów/trapezów podziałowych
var xp,xk,s,dx,i,t;
xp = parseFloat(document.frm_trapez.xp_inp.value);
xk = parseFloat(document.frm_trapez.xk_inp.value);
if(isNaN(xp) || isNaN(xk))
t = "<font color=red><b>Popraw dane wejściowe!</b></font>";
else
{
s = 0;
dx = (xk - xp) / N;
for(i = 1; i < N; i++) s += f(xp + i * dx);
s = (s + (f(xp) + f(xk)) / 2) * dx;
t = Math.floor(s * 1000) / 1000;
};
document.getElementById("t_out").innerHTML = t;
}
</script>
<form method="POST"
name="frm_trapez"
style="border: 2px solid #FF9900;
padding-left: 4px;
padding-right: 4px;
padding-top: 1px;
padding-bottom: 1px;
background-color: #FFFFCC">
<h2 style="text-align: center">
Obliczanie całki oznaczonej<br>
za pomocą metody prostokątów
</h2>
<hr>
<p style="text-align: center">
(C)2004 mgr Jerzy Wałaszek I LO w Tarnowie
</p>
<p style="text-align: center">
Całkowana funkcja:
</p>
<p style="text-align: center">
<i>f(x) = x<sup>2</sup> + 2x</i>
</p>
<p style="text-align: center">
Tutaj określ przedział całkowania
</p>
<p style="text-align: center">
Początek <i>x<sub>p</sub></i> =
<input type="text" name="xp_inp" size="20" value="0">
i koniec <i>x<sub>k</sub> </i>=
<input type="text" name="xk_inp" size="20" value="1">
</p>
<p style="text-align: center">
<input onclick="js_trapez();" type="button"
value="Oblicz całkę" name="B1">
</p>
<p style="text-align: center">
Wartość całki wynosi
</p>
<p id="t_out" style="text-align: center">...</p>
</form>
</body>
</html>
|
| Wynik: |
| Obliczanie całki
oznaczonej za pomocą metody trapezów ---------------------------- (C)2006 mgr J.Wałaszek I LO f(x) = x * x + 2 * x Podaj początek przedziału całkowania xp = 0 Podaj koniec przedziału całkowania xk = 1 Wartość całki wynosi : 1,333 KONIEC. Naciśnij dowolny klawisz... |
![]() |
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.