Программа
CONST Eps=1e-5; { Точность }
VAR Left,Right:real; { Левая и правая границы интервала интегрирования }
Break:integer; { Разбиение }
FUNCTION F(X:real):real; { Вычисление интегрируемой функции }
Begin
F:=Sqrt(4+Sqr(X))/(1+Sqr(Sqr(Cos(X))))
End;
FUNCTION Integral(Left,Right:real;Break:integer):real;
{ Функция вычисления интеграла }
Var Sum1,Sum2, { Промежуточные суммы }
X, { Промежуточная абсцисса }
LengthStep, { Длина шага разбиения }
LeftY,RightX, { Левая и правая границы шага интегрирования }
RightY:real; { Значение интегрируемой функции
на правой границе шага интегрирования }
i:integer; { Счетчик }
Begin
LengthStep:=(Right-Left)/Break/2; { Вычисление длины шага интегрирования }
X:=Left+LengthStep; { Начальное определение промежуточной абсциссы }
Sum1:=0; { Обнуление промежуточной суммы 1 }
Sum2:=F(X); { Начальное определение промежуточной суммы 2 }
for i:=2 to Break do { Цикл набора промежуточных сумм }
begin
X:=X+LengthStep; { Переопределение абсциссы }
Sum1:=Sum1+F(X); { Набор промежуточной суммы 1 }
X:=X+LengthStep; { Переопределение абсциссы }
Sum2:=Sum2+F(X); { Набор промежуточной суммы 2 }
end;
Integral:=LengthStep/3*(F(Left)+F(Right)+2*Sum1+4*Sum2)
{ Определение значения интеграла }
End;
Function ExactIntegral(Left,Right:real;Eps:real):real;
{ Функция вычисления интеграла с заданной точностью }
var PredInt,Int:real; { Предыдущее и текущее значения интеграла }
Break:integer; { Разбиение }
Begin
Break:=1; { Оперделение начального разбиения }
Int:=Integral(Left,Right,Break);{ Предварительное вычисление интеграла }
repeat
PredInt:=Int; { Сохранение предыдущего значения интеграла }
Break:=Break*2; { Увеличение разбиения }
Int:=Integral(Left,Right,Break)
{ Вычисление нового значения интеграла }
until abs(Int-PredInt)<=Eps;
{ Выход из цикла при достижении заданной точности }
ExactIntegral:=Int { Определение значения функции }
End;
BEGIN
{ Ввод данных: }
Write('Введите левую границу интервала интегрирования ');
ReadLn(Left);
Write('Введите правую границу интервала интегрирования ');
ReadLn(Right);
WriteLn('=',ExactIntegral(Left,Right,Eps))
{ Вычисление и вывод результата }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию