Całka oznaczona - Metoda Trapezów

Gdy stajemy przed problemem rozwiązania całki oznaczona, należy się zastanowić nad tym co to w zasadzie jest całka.

Oto problem jak znaleźć I?
Pierwsza myśl jak przychodzi na myśl jest podstawowy wzór rachunku całkowego (wzór Leibniza-Newtona):

Jednakże jest to dobry pomysł o ile rozwiązujemy zagadnienie analitycznie, to znaczy potrafimy na kartce lub w inny sposób znaleźć funkcję pierwotną do f(x). W numeryce natomiast bardziej przydatna okaże się całka oznaczona w pojęciu Riemanna. Jeżeli funkcja f(x) będzie ograniczona i określona w przedziale [a,b]. Wówczas możemy podzielić przedział [a,b] punktami x1, x2, ... , xN na przedziały częściowe: [x0,x1],[x1,x2],[x2,x3],...[x(N-1),xN]
(x0=a i xN=b) o długościach kolejno Δx1=x1-x0, Δx2=x2-x1, ... , ΔxN=xN-x(N-1). Największa spośród tych długości nazywa się średnicą danego przedziału; w każdym z przedziałów częściowych [x(i-n),x(i)] wybiera się dowolnie liczbę i tworzy sumę całkową Riemanna Teraz można określić sumę całkową Riemanna:

Wówczas gdy n doży do nieskończoności wielkość tych sum doży do zera. Jeżeli dla każdego ciągu podziałów o średnicach dążących do zera (tzw. ciąg normalny podziałów) i każdego wyboru punktów ξi odpowiadające im sumy całkowe δn dążą do tej samej granicy, to granica ta daje poszukiwane I. My przy całkowaniu numerycznym wykorzystujemy geometryczne własności sum całkowych. Suma całkowa jest równa polu zakropkowanych figur (suma pól prostokątów, które przy kolejnych podziałach będą coraz „cieńsze”), zaś całka oznaczona — polu ograniczonemu wykresem funkcji y = f (x), osią OX i pionowymi prostymi wystawionymi w punktach x0=a i x6=b. Pole nad osią uważa się za dodatnie, pod osią — za ujemne.
Jak widać sprawa zaczyna się klarować pozostaje jeszcze problem z wysumowaniem miejsc, które znajdują się nad prostokątami a pod wykresem funkcji. Nie możemy za bardzo zmniejszać kroku całkowania, ponieważ pojawia się wówczas problem dokładności maszyny liczącej i czasu operacji. Dobrym pomysłem jest zamienienie prostokątów na trapezy które będą dokładniej „przylegać” do wykresu funkcji.
No to przerobiliśmy już całą potrzebną teorię pozostaje jeszcze problem zaimplementowania wszystkiego :)
Algorytm wygląda następująco:
- Dzielimy przedział [a,b] na przedziały częściowe. Można to zrobić np. definiując krok, który będziemy dodawać do zmiennej po której będziemy całkować.
- Liczymy pole trapezu w przedziale [x0,x1]. wysokością trapezu jest długość przedziału, długość podstawy a to wartość funkcji f od x0, a długość podstawy b to wartość funkcji f od x1. Wzór na pole trapezu to: P=(a+b)h/2.
- przesuwamy się do przedziału [x1, x2] i liczymy pole trapezy w tym przedziale.
- sumujemy wszystkie pola trapezów na przedziale [a,b]
program calka_trapez;
function f(x:real):real;
begin
f:=sin(x); {funkcja podcalkowa}
end;
var a,b : real; {poczatek i koniec przedzialu}
krok : real; {krok calkowania}
x : real; {zmienna calkowania}
wynik: real; {no comment}
begin
a:=0;
b:=pi;
krok:=(b-a)/1000;
x:=a;
wynik:=0;
while (x<b) do
begin
x:=x+krok;
wynik:=wynik+ ((f(x-krok)+f(x))*krok/2);
end;
writeln('wynik numeryczny : ',wynik);
writeln('wynik rzyczywisty: ',cos(0)-cos(pi));
end.
No to tyle. Programu nie kompilowałem, bo nie miałem na czym, ale powinien być dobry. Metoda ta obarczona jest dużym błedem. Jak omówie interpolację, postaram się poprawić tę metodę.
Bibliografia:
- G.M. FICHTENHOLZ Rachunek różniczkowy i całkowy ,t.2, Warszawa 1997.
Aby dodawać komentarze musisz być zalogowany!
