Программа
Program Trapezium;
{ Вычисление интеграла
методом трапеций
с заданной точностью }
CONST Eps=1e-7; { Точность }
Type Func=function(x:real):real; { Тип функция }
Var Left,Right:real; { Левая и правая границы интервала интегрирования }
Function F(x:real):real; far; { Вычисление интегрируемой функции }
Begin
F:=sin(x)
End;
Function Integral(Left,Right:real;Eps:real;F:Func):real;
{ Функция вычисления интеграла с заданной точностью }
var PredInt,Int:real; { Предыдущее и текущее значения интеграла }
FLeft,FRight:real;
{ Значение функции на левой и правой границах интервала }
Break:integer; { Разбиение }
Step:real; { Шаг разбиения }
dX:real; { Смещение }
Sum:real; { Сумма значений функций }
i:integer; { Счетчик }
Begin
Break:=1; { Оперделение начального разбиения }
{ Вычисление значений функции на концах интервала: }
FRight:=F(Right);
FLeft:=F(Left);
Int:=(FRight+FLeft)/2*(Right-Left); { Предварительное вычисление интеграла }
Sum:=0; { Обнуление суммы }
repeat { Цикл набора интегральной суммы до получения заданной точности }
PredInt:=Int; { Сохранение предыдущего значения интеграла }
Step:=(Right-Left)/Break; { Вычисление шага интегрирование }
dX:=Left+Step/2; { Определение первого шага интегрирования }
for i:=0 to Break-1 do Sum:=Sum+F(dX+i*Step); { Набор суммы }
Break:=Break*2; { Увеличение разбиения для следующей итерации }
Int:=(Sum+(FRight+FLeft)/2)*Step/2 { Вычисление значения интеграла }
until Abs(PredInt-Int)<Eps; { Выход из цикла при достижении заданной точности }
Integral:=Int { Определение значения функции }
End;
BEGIN
WriteLn; { Пропуск строки }
{ Ввод данных: }
Write('Введите левую границу интервала интегрирования ');
ReadLn(Left);
Write('Введите правую границу интервала интегрирования ');
ReadLn(Right);
WriteLn('=',Integral(Left,Right,Eps,F))
{ Вычисление и вывод результата }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию