Самым простым способом интегрирования функции одной переменной является метод прямоугольников. Суть метода состоит в том, что заданный интервал разбивается на большое количество прямоугольников, одна сторона которого является шагом (как правило, равным точности вычисления), вторая сторона - значением функции в точке x. Сумма площадей этих прямоугольников и будет результатом интегрирования заданной функции.
Этот метод подразделяется на три способа расчетов, который зависит от того, какая сторона (либо высота) прямоугольника участвует в расчете.
Для примера возьмем первый способ - левых треугольников. Для программирования все эти способы отличаются только начальной точкой расчета, остальной алгоритм не отличается.
Составим программу вычисления определенного интеграла функции
Назовем нашу программу integral.
Program integral;
Поскольку функции вычисления тангенса в pascal не существует, мы создадим подпрограмму, которая будет вычислять тангенс.
function Tg(x:real):real; // формула расчета тангенса
begin
Tg:= sin(x)/cos(x);
end;
А также отдельно сделаем подпрограмму для вычисления значения функции в точке x.
function f(x: real): real; // расчет значения функции в точке x
begin
f := (1+tg(x)*tg(x))/(1+tg(x));
end;
Объявляем переменные, необходимые для расчета интеграла. Переменные a и b - границы интервала, dx - шаг интегрирования (ширина прямоугольников), x - значение аргумента по оси абсцисс, y - значение интеграла. Все математические переменные нецелочисленные, поэтому описываем их, как real - вещественные. Количество прямоугольников, на которое будет разбит интервал - целочисленная переменная n.
var a,b,dx,x,y: real;
n: integer;
Вводим значения границ интервала и количество прямоугольников, на которое будет разбит интервал.
begin
write ('Введите a:'); readln (a);
write ('Введите b:'); readln (b);
write ('Введите n:'); readln (n);
Рассчитываем шаг, с которым будем перемещаться в интервале по оси x
dx := (b-a)/n;
Теперь в цикле рассчитываем значение самого интеграла путем сложения значений функций в каждой точке шага и перемножения результат на ширину прямоугольников - шаг. По сути - сложение площадей прямоугольников.
{По формуле левых прямоугольников}
y := 0;
x := a; //начинаем с начального значения диапазона
while x < b do begin // пока x в пределах диапазона
y := y + f(x); // складываем значение функции в каждой точке шага
x := x + dx; // смещаемся на шаг
end;
y := y * dx; // умножаем результат на шаг
Выводим на экран результат расчета определенного интеграла
writeln ('Значение интеграла, рассчитанное по формуле прямоугольников:', y: 10: 3);
end.
Самый точный расчет считается по методу средних прямоугольников. При использовании этого метода начальной точке вычисления x надо присвоить значение не начала интервала, а a+dx/2, т.е. по сути - это середина прямоугольника.
При расчете методом правых прямоугольников начальная точка расчета будет: x:=a+dx