Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.students.chemport.ru/materials/pascal/p5.pas
Дата изменения: Thu Jan 15 18:04:43 2009
Дата индексирования: Mon Oct 1 21:05:59 2012
Кодировка: Windows-1251
{Программа по теме 4, задание 1
"Интегрирование простой функции"}
uses wincrt;
var
n,k,d,x,s,r,h,y,v,t,u,c,a:real;
function
f(x:real):real;
begin
f:=1/x;
end;
begin
writeln(' Число элементарных отрезков ?');
writeln;
write(' ');
read(n);
writeln;
{Метод прямоугольников: лев. гр.}
{Здесь d-индекс суммирования, х-точка-левая граница элементарного отрезка,
f(x)-значение подынтегральной функции в данной точке, k-длина элемен-
тарного отрезка, s-сумма}
k:=1/n;d:=0;s:=0;
while d<=(n-1) do
begin
x:=0.5+d*k;
d:=d+1;
s:=s+f(x);
end;
s:=s*k;
{Метод прямоугольников: пр. гр.}
{Здесь d-индекс суммирования, х-точка-правая граница элементарного отрезка,
f(x)-значение подынтегральной функции в данной точке, k-длина элемен-
тарного отрезка, r-сумма}
d:=1;r:=0;
while d<=n do
begin
x:=0.5+d*k;
d:=d+1;
r:=r+f(x);
end;
r:=r*k;
{Метод трапеций}
{Здесь d-индекс суммирования, х-точка-правая граница элементарного отрезка,
f(x)-значение подынтегральной функции в данной точке, k-длина элемен-
тарного отрезка, а-сумма, f(0,5)-значение подынтегральной функции в
точке x=0.5, f(1,5)-значение подынтегральной функции в точке x=1.5}
d:=1;
while d<=(n-1) do begin
x:=0.5+k*d;
a:=a+f(x);
d:=d+1;
end;
H:=k*((f(0.5)+f(1.5))/2+a);
{Метод парабол (формула Симпсона)}
{Здесь d-индекс суммирования, х-точка-правая граница элементарного отрезка,
f(x)-значение подынтегральной функции в данной точке, k-длина элемен-
тарного отрезка, а-сумма, f(0,5)-значение подынтегральной функции в
точке x=0.5, f(1,5)-значение подынтегральной функции в точке x=1.5}
d:=1;v:=0;u:=0;
while d<=(n/2) do
begin
x:=0.5+(2*d-1)*k;
y:=0.5+2*d*k;
v:=v+f(x);
u:=u+f(y);
d:=d+1;
end;
c:=k/3*(f(0.5)-f(1.5)+4*v+2*u);
t:=ln(3);{t-аналитическое решение интеграла}
writeln(' метод полученное значение погрешность');
writeln;
writeln(' прямоуг.(лев.гр.) ',s:9:6,' ',(-s+t):13);
writeln(' прямоуг.(прав.гр.) ',r:9:6,' ',(-r+t):13);
writeln(' трапеций ',h:9:6,' ',(-h+t):13);
writeln(' парабол ',c:9:6,' ',(-c+t):13);
end.