- •1.Вступ
- •2.Математична частина
- •2.1. Обчислення визначеного інтегралу методом середніх.
- •2.2. Обчислення визначеного інтегралу методом трапецій.
- •2.3. Обчислення визначеного інтегралу методом Сімпсона
- •2.4. Обчислення визначеного інтегралу методом Буля
- •4.2.Алгоритм пошуку визначеного інтеграла методом Буля
- •5.Текст програми:
- •6. Тестові приклади
- •6.1. Приклад
- •3.Теоретичний висновок:
- •4. Алгоритми
- •4.1.Алгоритм пошуку визначеного інтеграла методом Сімпсона
- •6.2. Приклад
- •6.3. Приклад
- •6.4. Приклад
- •6.5. Приклад
- •6.6. Приклад
- •6.7. Приклад
- •6.8. Приклад
- •6.9. Приклад
- •6.10. Приклад
- •Висновок
- •Список використаної літератури
3.Теоретичний висновок:
Кожен метод є по своєму унікальний. Методи з використанням інтерполяції виявилися більш точними але для пошуку інтеграла потрібно обчислювати більше значень. Загалом вибір методу залежить від поставлених задач точності та часу обчислення.
4. Алгоритми
4.1.Алгоритм пошуку визначеного інтеграла методом Сімпсона
Алгоритм розв'язку зображений на рисунку 1
В блоці 1 алгоритм починає роботу.
В блоці 2 вводяться функція та межі інтегрування.
В блоці 3 обчислюється середина відрізку.
В блоці 4 перевірка нев‘язки |f(b)-f(a)|<e.
В блоці 5 за формулою Сімпсона обчислюємо суму.
В блоці 6 повернення отриманого результату.
В блоці 7 рекурсивний виклик функції Сімпсона з параметрами f,a,c.
В блоці 8 рекурсивний виклик функції Сімпсона з параметрами f,c,b.
В блоці 9 сумування двох останніх виразів.
В блоці 10 повернення отриманого результату.
В блоці 11 алгоритм завершає свою роботу.
4.2.Алгоритм пошуку визначеного інтеграла методом Буля
Алгоритм розв'язку зображений на рисунку 2
В блоці 1 алгоритм починає роботу.
В блоці 2 вводяться функція та межі інтегрування.
В блоці 3 обчислюється середина відрізку.
В блоці 4 перевірка нев‘язки |f(b)-f(a)|<e.
В блоці 5 за формулою Буля обчислюємо суму.
В блоці 6 повернення отриманого результату.
В блоці 7 рекурсивний виклик функції Буля з параметрами f,a,c.
В блоці 8 рекурсивний виклик функції Буля з параметрами f,c,b.
В блоці 9 сумування двох останніх виразів.
В блоці 10 повернення отриманого результату.
В блоці 11 алгоритм завершає свою роботу.
5.Текст програми:
function [ S ] = average( f,a,b )
c=(a+b)/2;
if abs(f(b)-f(a))<=1.e-3
S=(b-a)*f(b);
return
end
[S1]=...
average(f,a,c);
[S2]=...
average(f,c,b);
S=S1+S2;
end
function [ S ] = trapeze( f,a,b )
c=(a+b)/2;
if abs(f(b)-f(a))<=1.e-3
S=(b-a)/2*(f(a)+f(b));
return
end
[S1]=...
trapeze(f,a,c);
[S2]=...
trapeze(f,c,b);
S=S1+S2;
end
function [ S ] = simpson( f,a,b )
c=(a+b)/2;
if abs(f(b)-f(a))<=1.e-3
S=(b-a)/6*(f(a)+4*f(c)+f(b));
return
end
[S1]=...
simpson(f,a,c);
[S2]=...
simpson(f,c,b);
S=S1+S2;
end
function [ S ] = boole( f,a,b)
c=(a+b)/2;
S=boolestep(f,a,b,c);
end
function [S]=boolestep(f,a,b,c)
x=[(a+c)/2 (c+b)/2];
y=f(x);
if abs(f(b)-f(a))<=1.e-3
S=(b-a)/90*(7*f(a)+32*y(1)+12*f(c)+32*y(2)+7*f(b));
return
end
[S1]=...
boolestep(f,a,c,x(1));
[S2]=...
boolestep(f,c,b,x(2));
S=S1+S2;
end
Скрипт програми:
Calc.m
function Calc(a,b)
Q=quad(@func,a,b); %це стандартна функція MatLab%
A=average(@func,a,b);
T=trapeze(@func,a,b);
S=simpson(@func,a,b);
B=boole(@func,a,b);
fprintf('Quad=%8.25f\n',Q)
fprintf('Average=%8.25f\n error=%8.25f\n',A,Q-A)
fprintf('Trapeze=%8.25f\n error=%8.25f\n',T,Q-T)
fprintf('Simpson=%8.25f\n error=%8.25f\n',S,Q-S)
fprintf('Boole=%8.25f\n error=%8.25f\n',B,Q-B)
end
6. Тестові приклади
6.1. Приклад
f(x)= 1./exp(x.^3)
a=0;b=2;
>> Calc(0,2)
Quad=0.8929534944257634400000000
Average=0.8922816855615781600000000
error=0.0006718088641852748600000
Trapeze=0.8929533153654341000000000
error=0.0000001790603293416737100
Simpson=0.8929535183356427400000000
error=-0.0000000239098792986780500
Boole=0.8929535142948337200000000
error=-0.0000000198690702779558140
