Консультация № 162753
19.03.2009, 15:36
0.00 руб.
0 1 1
Решите пожалуйста задачу:
Написать программу для вычисления определенного интеграла указанными методами.

²∙⁴ 1
∫ ——————―― dx , метод прямоугольников, Симпсона.
0.8 √ 2x²+3

Обсуждение

Неизвестный
19.03.2009, 16:41
общий
23.03.2009, 06:42
это ответ
Здравствуйте, Андреев Андрей Андреивич!
Программа:
Код:

program Pascal_162753;

type
TIFunc=function (x:double):double;
{ Интегрируемая функция }
function f(x:double):double;
begin
f:=1.0/sqrt(2*x*x+3);
end;
{ Метод прямоугольников }
function IRect(IFunc:TIFunc;A,B:double;Intervals:word):double;
var
sum,step:double;
begin
sum:=0;
step:=(B-A)/Intervals;
A:=A+step/2;
while A<B do begin
sum:=sum+step*IFunc(A);
A:=A+step;
end;
IRect:=sum;
end;
{ Метод симпсона }
function ISympson(IFunc:TIFunc;A,B:double;Intervals:word):double;
var
sum,step:double;
i:LongInt;
function x(i:LongInt):double;
begin
x:=A+step*i;
end;
begin
step:=(B-A)/2/Intervals;
sum:=IFunc(x(1))*4;
for i := 1 to Intervals-1 do
sum:=sum+IFunc(x(i*2+1))*4+IFunc(x(i*2))*2;
ISympson:=(IFunc(x(0))+IFunc(x(2*Intervals))+sum)*step/3;
end;

var
A,B:double;
Intervals:word;
begin
Write('A=');ReadLn(A);
Write('B=');ReadLn(B);
Write('Intervals=');ReadLn(Intervals);
WriteLn('Rectangles=',IRect(@f,A,B,Intervals):0:5);
WriteLn('Sympson=',ISympson(@f,A,B,Intervals):0:5);
ReadLn;
end.

Пример работы:
Код:

A=0.8
B=2.4
Intervals=10
Rectangles=0.57373
Sympson=0.57383
Форма ответа