Sprawozdanie z ćwiczenia
Temat: Całkowanie numeryczne
Skład grupy:
• Łukasz Kłyk
• Mateusz Ligiżyński
Opis badanego zagadnienia
Zadanie polegało na napisaniu programu wyznaczającego całki oznaczone funkcji:
1. f(x)= 4x3+3x2
2. f(x)= 3sin(x2)
przy użyciu 3 metod:
Prostokątów
Trapezów
Paraboli.
Wzory podanych funkcji umieściliśmy w poszczególnych M-plikach, które będą wywoływane w zadanych metodach:
Oto przykład jednego z równań:
function [y]=row1(x)
y=4*x.^3+3*x.^2;
Obliczenie całki oznaczonej można zrealizować w programie MATLAB przy użyciu funkcji quad. Wykorzystuje ona rekursywną adaptacyjna metodę Simsona.
Poniżej przedstawione są wyniki całek poszczególnych funkcji f(x) na przedziale [-1,1].
1. f(x)= 4x3+3x2=2
2. f(x)= 3sin(x2)=1,8618
Metoda prostokątów
• Omówienie przygotowanego programu.
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. Sumę tę przybliżamy przy pomocy sumy pól odpowiednio dobranych prostokątów.
function [calka]=calkowanie(funkcja,a,b,n)
h=(b-a)/n;
x=a+h/2:h:b-h/2;
y=feval(funkcja,x);
calka=h*sum(y);
Powyższy fragment kodu to funkcja obliczająca całkę opisaną metodą. Jako argumenty podawane są: a- dolna granica całkowania, b- górna granica całkowania oraz n - liczba przedziałów. Funkcja zawiera również parametr, do którego przypisywana jest długość przedziału. Wynik całki to suma pól prostokątów
Wykres przedstawia wyniki całek funkcji w przedziale[-1,1] w zależności od ilości przedziałów
|
10 |
25 |
50 |
100 |
1000 |
10000 |
. f(x)=4x3+3x2 |
2.6400 |
2.2464 |
2.1226 |
2.0604 |
2.0060 |
2.0006 |
f(x)=3sin(x2) |
2.3883 |
2.0670 |
1.9635 |
1.9123 |
1.8667 |
1.8621 |
Metoda ta obarczona jest dosyć dużym błędem, ponieważ prostokąty niezbyt dobrze przybliżają pole pod wykresem funkcji. Błąd maleje wraz ze wzrostem n.
Metoda trapezowa
• Omówienie przygotowanego programu.
function [calka]=met_trap(funkcja,a,b,n)
h=(b-a)/n;
x=a:h:b;
y=feval(funkcja,x);
calka=h*(sum(y(2:n))+(y(n+1))/2);
Inna funkcja do obliczania całek oznaczonych to funkcja opierająca się na metodzie trapezowej. Metoda ta opiera się tak jak metoda prostokątów na skończonej liczbie przedziałów Im większa liczba przedziałów tym dokładniejsze będą obliczenia.
W tej funkcji również użyliśmy takich parametrów jak w poprzedniej metodzie.
Tabela przedstawia wyniki całek funkcji w przedziale [-1,1] w zależności od ilości przedziałów
|
10 |
25 |
50 |
100 |
1000 |
10000 |
. f(x)=4x3+3x2 |
2.0400 |
2.0064 |
2.0016 |
2.004 |
2.000 |
2.0000 |
f(x)=3sin(x2) |
1.8834 |
1.8651 |
1.8625 |
1.8618 |
1.8616 |
1.8616 |
Trapezy dużo lepiej przybliżają pole pod wykresem funkcji. Dlatego metoda ta jest dokładniejsza od metody prostokątów.
Metoda paraboli
W metodzie Simpsona stosujemy jako przybliżenie parabolę - będziemy obliczali sumy wycinków obszarów pod parabolą
% Metoda Paraboli
for k = 1:n/2
x1= a + (h*(k*2-1));
wynik1 = wynik1 + ((4*x1^3)+(3*x1^2));
end
for k = 1:n/2
x2= a + (h*(k*2));
wynik2 = wynik2 + ((4*x2^3)+(3*x2^2));
end
x0=((4*a^3)+(3*a^2));
x2=((4*b^3)+(3*b^2));
parabola = (h/3)*(wynik1*4 + wynik2*2 + ((4*a^3)+(3*a^2)) + ((4*b^3)+(3*b^2)))
end
W podanej metodzie również a i b stanowią granicę całkowania, natomiast n określa liczbę przedziałów. W podanym kodzie zastosowaliśmy 2 pętle które stanowią podział podanej funkcji na wycinki, o kształtach paraboli, które dają po zsumowaniu przybliżoną wartość funkcji. W tej metodzie wykorzystujemy wzór Simsona.
Tabela przedstawia wyniki całek funkcji w przedziale [-1,1] w zależności od ilości wycinków
|
10 |
25 |
50 |
100 |
1000 |
10000 |
. f(x)=4x3+3x2 |
2.9333 |
2.8325 |
2.1867 |
2.0933 |
2.0093 |
2.0009 |
f(x)=3sin(x2) |
2.1794 |
1.7978 |
1.9289 |
1.8953 |
1.8650 |
1.8619 |
Parabole przybliżają wykres funkcji z małym błędem. Stąd metoda paraboliczna jest najdokładniejszą metodą wyznaczania wartości całek oznaczonych z tutaj opisanych.