![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
function f(x: real): real;
Begin
f:=1/x
End;
Var
a,b,e: real;
I: integer;
xa,xab,xb,dx,s1,s: real;
N: integer;
Begin
writeln('[a,b],e');
Readln(a,b,e);
{вычисление интеграла с количеством разбиений равным 1, т. е. одной фигурой с основанием равным [a,b]}
n:=1;
dx:=(b-a)/n;
s:=dx*(f(a)+4*f(a+dx/2)+f(b))/6;
Repeat
n:=n*2; {удвоение количества отрезков разбиения}
s1:=s;
s:=0;
{вычисление длины отрезка – основания прямоугольника (дельта) при новом количестве разбиений}
dx:=(b-a)/n;
{суммирование площадей - нахождение интеграла при заданном количестве разбиений}
for i:=0 to n-1 do
Begin
xa:=a+dx*(i);
xb:=xa+dx;
xab:=xa+dx/2;
s:=s+dx*(f(xa)+4*f(xab)+f(xb))/6;
End;
until abs(s-s1)<=abs(e);
writeln('int=',s);
End.
В данной программе используется подпрограмма функция f, которая вычисляет подынтегральную функцию .
Переменная s1 используется для сохранения значения интеграла, вычисленного при вдвое меньшем количестве разбиений.
Дата публикования: 2014-11-26; Прочитано: 208 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!