Obliczanie całek oznaczonych

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 <xp,xk> jest liczbą przedstawianą symbolem:

 

xk
obrazek
xp
 f(x)dx

 

i obliczaną na różne sposoby. Przedział <xp,xk> nazywa się przedziałem całkowania. Krańce tego przedziału nazywa się granicami całkowania. xp jest dolną granicą całkowania, a xk górną granicą.

 

Całka oznaczona Riemanna

obrazek

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 f(x) oraz osią OX. Obszary leżące pod osią mają w tej interpretacji pola ujemne.

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
obrazek

 

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 (xi - xi-1) i wysokości f(ti), czyli

 

obrazek

 

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.

 

obrazek

Obliczanie całki oznaczonej metodą prostokątów

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 f(x) w tym punkcie:

 

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>.

 

obrazek

 

Specyfikacja problemu

Dane wejściowe

xp - początek przedziału całkowania,  xp obrazek R
xk - koniec przedziału całkowania,  xk obrazek R
n - liczba punktów podziałowych,  n obrazek N
f(x) - funkcja rzeczywista, której całkę liczymy

Dane wyjściowe

s  - przybliżona wartość całki oznaczonej funkcji f(x) w przedziale <xp,xk>. s  obrazek R

Zmienne pomocnicze

dx - odległość między dwoma sąsiednimi punktami podziałowymi,  dx obrazek R
i - licznik punktów podziałowych,  i obrazek N

 

Lista kroków

Krok 1: s ← 0
Krok 2:
dx ←   xk - xp
n
Krok 3: i  ← 1
Krok 4: Jeśli i  > n, to idź do kroku 8
Krok 5: ss  + f(xp + i  × dx)
Krok 6: i  ← i  + 1
Krok 7: Idź do kroku 4
Krok 8: ss  × dx
Krok 9: Zakończ

 

Program

Program wylicza całkę oznaczoną funkcji f(x) = x2 + 2x. Przedział całkowania jest dzielony na n=1000 punktów. W przedziale <0,1> całka oznaczona ma wartość dokładną równą 4/3 = 1.3333...

 

// 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;
}

 

obrazek

Obliczanie całki oznaczonej metodą trapezów

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 <xp,xk> dzielimy na n+1 równo odległych punktów x0,x1,x2,...,xn. Punkty te wyznaczamy w prosty sposób wg wzoru:

 

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 f(x) w tym punkcie:

 

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
 

obrazek

 

Wyprowadzony na końcu wzór jest podstawą przybliżonego wyliczania całki w metodzie trapezów.

 

obrazek

 

Specyfikacja problemu

Dane wejściowe

xp -  początek przedziału całkowania,  xp obrazek R
xk - koniec przedziału całkowania,  xk obrazek R
n - liczba punktów podziałowych,  n obrazek N
f(x) - funkcja rzeczywista, której całkę liczymy

Dane wyjściowe

s  - wartość całki oznaczonej funkcji f(x) w przedziale <xp,xk>. s obrazek R.

Zmienne pomocnicze

dx - odległość między dwoma sąsiednimi punktami podziałowymi,  dx obrazek R
i - licznik punktów podziałowych,  i obrazek N

 

Lista kroków

Krok 1: s ← 0
Krok 2:
dx ←   xk - xp
n
Krok 3: i  ← 1
Krok 4: Jeśli i  ≥ n, to idź do kroku 8
Krok 5: ss  + f(xp + i  × dx)
Krok 6: i  ← i  + 1
Krok 7: Idź do kroku 4
Krok 8:
s  ← (s  +  f(xp) + f(xk)  ) × dx
2
Krok 9: Zakończ

Program

Program wylicza całkę oznaczoną funkcji f(x) = x2 + 2x. Przedział całkowania jest dzielony na n=1000 punktów. W przedziale <0,1> całka oznaczona ma wartość dokładną równą 4/3 = 1.3333...

 

// 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   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

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