Розглянемо приклади програм, що використовують методи цифрового інтегрування.
Приклад 14.3. Обчислити інтеграл, використовуючи різні методи цифрового інтегрування. Інтегрування оформити у вигляді підпрограми.
Рішення: Для обчислення інтеграла доцільно використовувати підпрограму - функцію.
При цьому в тексті програми необхідно:
1) Включити директиву далекого виклику {$F+} або виконати необхідні налаштування в середовищі програмування оскільки з однієї функції викликається інша. (Підключити до тексту програми, які нею директиви можна за допомогою клавіш Ctrl-OO
2) Описати тип функції.
3) У списку формальних параметрів послатися на тип (тобто використовувати параметр-Funftion).
Текст програми
Program pr_intF;
{ Обчислити інтеграл, використовуючи різні методи цифрового
інтегрування. Інтегрування оформити у вигляді підпрограми}
Uses crt;
{$F+} {Директива підтримуюча далекий виклик підпрограм}
Type par =function(x:real):real; {Опис типу функції}
Var C,D,Y :real;
n :integer;
Function F1(x:real):real;
begin
F1:=x
end;
Function pnint(F:par; a,b:real;n:integer):real;
{Метод прямокутників з недоліком}
Var
s,h :real;
i :integer;
Begin
h:=(b-a)/n; s:=0;
For i:=0 to n-1 do s:=s+f(a+i*h);
pnint:=h*s
End;
Function pkint(F:par; a,b:real;n:integer):real;
{Метод прямокутників з надлишком}
Var
s,h :real;
i :integer;
Begin
h:=(b-a)/n; s:=0;
For i:=1 to n do s:=s+f(a+i*h);
pkint:=h*s
End;
Function psint(F:par; a,b:real;n:integer):real;
{Метод прямокутників по середній лінії}
Var
s,h :real;
i :integer;
Begin
h:=(b-a)/n; s:=0;
For i:=1 to n do s:=s+f(a+i*h-h/2);
psint:=h*s
End;
Function tint(F:par; a,b:real;n:integer):real;
{Метод трапецій}
Var
s,h :real;
i :integer;
Begin
h:=(b-a)/n; s:=f(a)/2+f(b)/2;
For i:=1 to n-1 do s:=s+f(a+i*h);
tint:=h*s
End;
Function sint(F:par; a,b:real;n:integer):real;
{Метод Сімпсона}
Var
s,h :real;
i :integer;
Begin
h:=(b-a)/n; s:=f(a)/2+f(b)/2;
if odd(n) then n:=n+1;
For i:=1 to n-1 do s:=s+(i mod 2+1)*f(a+i*h);
sint:=2*h*s/3
End;
Begin
ClrScr;
Writeln("Уведіть межі інтегрування (C і D) а число подинтервалов n");
Readln (C,D,n);
{Y:=pnint(F1,C,D,n);}
{Y:=pkint(F1,C,D,n);}
Y:=psint(F1,C,D,n);
{Y:=tint(F1,C,D,n);}
{Y:=sint(F1,C,D,n);}
Writeln("Результат інтегрування" );
Writeln(" ":10,"Y=",Y:10);
Readln;
End.
Результат роботи програми:
Введіть межі інтегрування (C і D) а число інтервалів n
0 10 100
Результат інтегрування
Y= 5.000E+01