
3. Автоматизация метода
Автоматизация метода прямоугольников позволяет оптимизировать его использование на практике и упростить расчеты.
Программа на Pascal – это набор некоторых команд. Начинается программа с ключевого слова PROGRAM, после которого следует имя программы:
PROGRAM pryam;
Далее идёт раздел переменных VAR, в котором описываются переменные:
VAR
n, i: integer;
a, b, h, l, s, p, lpr, srpr, ppr, lpg, spg, ppg, x1, x2, x3: real;
где:
n – количество разбиений интервала;
a и b – нижний и верхний пределы интегрирования;
h – шаг;
l, s, p – переменные для вычисления суммы по формулам;
lpr, srpr, ppr – переменные результата вычислений без учета погрешности;
lpg, spg, ppg – погрешности или остаточные члены формул метода прямоугольников;
x1, x2, x3 – результативные переменные.
В этом разделе указывается имена переменных и имена типов данных.
После описания переменных вводятся функции. Объявление функции состоит из:
- ключевого слова function, имени функции, списка формальных параметров и типа возвращаемого значения;
- раздела объявления локальных переменных или констант, если он требуется;
- тела функции, заключенного в операторные скобки begin end.
В функции помещаются формулы, по которым будут вычисляться приближенное значение интеграла и вторая производная в точке, принадлежащей промежутку интегрирования:
function f(x: real): real;
begin
f:= Sqr(x)*sin(x);
end;
function f2(x: real): real;
begin
f2:= 2*sin(x)+4*cos(x)-Sqr(x)*sin(x);
end;
После всего этого переходим к основному телу программы. Код программы содержит различные команды. Самые распространенные:
Write (Writeln) – команда вывода текста на экран;
Read (Readln) – запрос данных.
Итак, запрашиваем пределы интегрирования и число разбиений:
BEGIN
Writeln (‘Введите пределы интегрирования a и b ‘);
Readln (a, b);
Writeln (‘Введите число разбиений n ‘);
Readln (n);
Далее производим вычисления по формуле (5):
h:=(b-a)/n;
Для расчета суммы требуется обнулить переменные, которые заданы для вычисления суммы в разделе переменных, и организовать цикл, который будет обеспечивать суммирование:
l:=0;
s:=0;
p:=0;
For i:=0 to n Do begin
l:=l+f(a+(i-1)*h);
lpr:=h*l;
s:=s+f((a+h)/2+(i-1)*h);
srpr:=h*s;
p:=p+f(a+h+(i-1)*h);
ppr:=h*p;
end;
После реализации цикла все расчеты по формуле (5) произведены.
Далее следует вычислить погрешности или остаточные члены по формулам (11) и (12):
lpg:=f2(8/10)*h*(b-a)/2;
ppg:=lpg;
spg:=f2(8/10)*Sqr(h)*(b-a)/24;
x1:=lpr+lpg;
x2:=srpr+spg:
x3:=ppr+ppg;
Вывод результатов на экран:
WriteLn(‘Левые ‘,’ Средние ’,’Правые’);
WriteLn(lpr:4:5,’ ‘,srpr:4:5,’ ‘,ppr:4:5);
WriteLn(‘Остаточные члены’);
WriteLn(lpg:4:5,’ ‘,spg:4:5,’ ‘,ppg:4:5);
WriteLn(‘Результат’);
WriteLn(x1:4:5,’ ‘,x2:4:5,’ ‘,x3:4:5);
ReadLn;
Конец программы фиксируется служебным словом END, после которого обязательно ставится точка:
END.