Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2010 mgr
Jerzy Wałaszek |
Całka (ang. integral) jest jednym z najważniejszych pojęć współczesnej analizy matematycznej. Zastosowania ma tak liczne, iż trudno je wymienić. Stosuje się ją w matematyce, fizyce, technice i wielu innych dziedzinach nauki. W matematyce badaniem własności i obliczaniem wartości całek zajmuje się dział zwany rachunkiem całkowym. Za twórców tego rachunku uważa się dwóch wielkich matematyków Newtona oraz Leibniza, którzy opracowali teorię i metody związane z pojęciem całki i wprowadzili terminologię i oznaczenia zbliżone do stosowanych współcześnie, ukazujące związek rachunku całkowego z rachunkiem różniczkowym.
Całka oznaczona (ang. definite integral)
funkcji f(x)
w przedziale
xk xp |
f(x)dx |
i obliczaną na różne sposoby. Przedział
Dużo większe zastosowanie w obliczeniach numerycznych ma
definicja Riemanna, w której całka oznaczona jest
interpretowana jako suma pól obszarów ograniczonych wykresem funkcji
Przedział całkowania <xp,xk> dzielimy na rozłączne podprzedziały wyznaczając n+1 punktów podziałowych:
xp = xo < x1 < ... < xn-1 < xn = xk
Punkty podziałowe muszą być tak dobrane, aby przy wzroście n do nieskończoności maksymalna odległość między sąsiednimi punktami malała do zera, czyli:
dla i =
1, 2, ..., n |
Pomiędzy parami sąsiednich punktów xi-1 i xi wybieramy dowolne punkty ti spełniające nierówność:
dla i =
1, 2, ..., n
xi-1
< ti < xi
Całka oznaczona Riemanna jest wtedy granicą sum n
prostokątów o podstawie równej
Jeśli f(ti) jest mniejsze od zera, to pole tego prostokąta zostanie zsumowane ze znakiem minus. Gdy odległości pomiędzy punktami podziałowymi zbliżają się do zera, suma pól prostokątów dąży do pola obszaru ograniczonego wykresem funkcji.
Różnicę pomiędzy wartością pola pod wykresem funkcji a polem otrzymanym jako suma skończonej ilości prostokątów nazywamy błędem całkowania. Wraz ze wzrostem liczby prostokątów w całce Riemanna błąd całkowania dąży do zera.
W metodzie prostokątów korzystamy z definicji całki oznaczonej Riemanna , w której wartość całki interpretowana jest jako suma pól obszarów pod wykresem krzywej w zadanym przedziale całkowania <xp,xk>. Sumę tę przybliżamy przy pomocy sumy pól odpowiednio dobranych prostokątów. Sposób postępowania jest następujący:
Przedział całkowania <xp,xk>
dzielimy na n równo odległych punktów
x1,x2,...,xn.
Punkty te wyznaczamy w prosty sposób wg wzoru:
dla i = 1,2,...,n
xi = xp + | i | (xk - xp) |
n |
Obliczamy odległość między dwoma sąsiednimi punktami - będzie to podstawa każdego prostokąta:
dx = | xk - xp |
n |
Dla każdego wyznaczonego w ten sposób punktu obliczamy
wartość funkcji
fi = f(xi), dla i = 1,2,...,n
Obliczamy sumę iloczynów wyznaczonych wartości funkcji przez odległość dx między dwoma sąsiednimi punktami - da to sumę pól poszczególnych prostokątów ograniczonych wykresem funkcji:
S = f1 dx + f2 dx + ... + fn dx
a po wyprowadzeniu wspólnego czynnika przed nawias:
S = dx (f1 + f2 + ... + fn)
Otrzymana suma jest przybliżoną wartością całki oznaczonej funkcji f(x) w przedziale <xp,xk>.
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 |
Krok 1: | s ← 0 | |||
Krok 2: |
|
|||
Krok 3: | i ← 1 | |||
Krok 4: | Jeśli i > n, to idź do kroku 8 | |||
Krok 5: | s ← s + f(xp + i × dx) | |||
Krok 6: | i ← i + 1 | |||
Krok 7: | Idź do kroku 4 | |||
Krok 8: | s ← s × dx | |||
Krok 9: | Zakończ |
Program wylicza całkę oznaczoną funkcji
// Obliczanie całki oznaczonej // metodą prostokątów // (C)2011 ILO w Tarnowie //----------------------- #include <iostream> using namespace std; // Tutaj wstawiamy całkowaną funkcję //---------------------------------- double f(double x) { return x * (x + 2); } int main() { int i, n; double xp, xk, dx, s; // odczytujemy liczbę punktów cout << "n = "; cin >> n; // odczytujemy granice przedziału całkowania cout << "xp = "; cin >> xp; cout << "xk = "; cin >> xk; // obliczamy całkę oznaczoną s = 0; dx = (xk - xp) / n; for(i = 1; i <= n; i++) s += f(xp + i * dx); s *= dx; // wyświetlamy wynik cout << "-------------------\n" "S = " << s << endl; return 0; } |
Opisana w powyżej metoda prostokątów nie jest zbyt dokładna, ponieważ pola użytych w niej prostokątów źle odwzorowują pole pod krzywą. 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
xi = xp + | i | (xk - xp) |
n |
Obliczamy odległość między dwoma sąsiednimi punktami - będzie to wysokość każdego trapezu:
dx = | xk - xp |
n |
Dla każdego wyznaczonego w ten sposób punktu obliczamy
wartość funkcji
dla
i = 0,1,2,...,n
fi
= f(xi)
Pole pod wykresem funkcji przybliżane jest polami n trapezów. Pole i-tego trapezu obliczamy wg wzoru:
dla i=1,2,...,n
Pi = | fi-1 + fi | dx |
2 |
Przybliżona wartość całki jest sumą pól wszystkich otrzymanych w ten sposób trapezów:
s = P1
+ P2
+ ... + Pn
czyli
Wyprowadzony na końcu wzór jest podstawą przybliżonego wyliczania całki w metodzie trapezów.
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 - 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 |
Krok 1: | s ← 0 | ||||
Krok 2: |
|
||||
Krok 3: | i ← 1 | ||||
Krok 4: | Jeśli i ≥ n, to idź do kroku 8 | ||||
Krok 5: | s ← s + f(xp + i × dx) | ||||
Krok 6: | i ← i + 1 | ||||
Krok 7: | Idź do kroku 4 | ||||
Krok 8: |
|
||||
Krok 9: | Zakończ |
Program wylicza całkę oznaczoną funkcji
// Obliczanie całki oznaczonej // metodą trapezów // (C)2011 ILO w Tarnowie //----------------------- #include <iostream> using namespace std; // Tutaj wstawiamy całkowaną funkcję //---------------------------------- double f(double x) { return x * (x + 2); } int main() { int i, n; double xp, xk, dx, s; // odczytujemy liczbę punktów cout << "n = "; cin >> n; // odczytujemy granice przedziału całkowania cout << "xp = "; cin >> xp; cout << "xk = "; cin >> xk; // obliczamy całkę oznaczoną s = 0; dx = (xk - xp) / n; for(i = 1; i < n; i++) s += f(xp + i * dx); s = dx * (s + (f(xp) + f(xk)) / 2); // wyświetlamy wynik cout << "-------------------\n" "S = " << s << endl; return 0; } |
Wykorzystaj program obliczania całki oznaczonej do wyznaczenia przybliżonej pracy, którą wykonuje prąd sinusoidalny I w ciągu jednego okresu T przepływając przez opór R.
Dane:
Imax | = | 1 [A] |
R | = | 1 [Ω] |
T | = | 1 [sek] |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe