Формула Симпсона
Введите число точек - 100
Искомый определенный интеграл равен 1.999836
Введите левую и правую границы отрезка - 0 3.1415
Введите число точек - 1000
Искомый определенный интеграл равен 1.999998
Введите левую и правую границы отрезка - 0 3.1415
Введите число точек - 10000
Искомый определенный интеграл равен 2.000000
Найдем коэффициенты формулы ,
где , i=0,1,…,n при n=2.
При i = 0
При i = 1
При i = 2
Формула на отрезке [x0, x2] примет вид:
При n=2m применив формулу к каждой паре частичных отрезков [x2i-2, x2i] (i=1,2,…,m) получим формулу Симпсона:
Рассмотрим погрешность:
На отрезке [a, b]
или , где
При вычислении по методу повторного счета можно использовать формулу: . Если при вычислении интеграла требуемая точность не достигнута (т.е.
), предусматривается повторный счет с шагом, уменьшенным вдвое.
Программа вычисления по формуле Симпсона методом повторного счета:
program lab4_2;
var n: integer;
S,a,b,e,h,x,I_n,I_n2,M: real;
function f(x: real):real;
begin {записать, функцию в виде f:=[математическое выражение]}
f:=sin(x);
end;
begin
write('Введите концы отрезка интегрирования: ');
readln(a,b);
write('Введите погрешность e: '); readln(e);
I_n:=0;
n:=4;
Repeat
h:=abs(b-a)/n;
s:=(f(a)-f(b))/2;
x:=a+h;
repeat s:=s+2*f(x)+f(x+h);
x:=x+2*h;
until x>=b;
I_n2:=2*h*s/3;
n:=n*2;
M:=abs(I_n - I_n2);
I_n:=I_n2;
Until M<=15*e;
writeln('Интеграл I=',I_n2:12:7);
readln;
end.
Блок-схема вычисления по формуле Симпсона методом повторного счета | Результаты работы программы: |
![]() | Введите концы отрезка интегрирования: 0 3.1415 Введите погрешность e: 0.001 Интеграл I= 2.0002691 Введите концы отрезка интегрирования: 0 3.1415 Введите погрешность e: 0.000001 Интеграл I= 2.0000001 |