home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
turbopas
/
pas_sci.arc
/
TRAPEZ.LIB
< prev
next >
Wrap
Text File
|
1985-09-06
|
929b
|
40 lines
{ -> 270 }
procedure trapez(
lower,upper,tol: real;
var sum : real);
{ numerical integration by the trapezoid method }
{ function is f (as parameter), limits are LOWER and UPPER }
{ with number of regions equal to PIECES }
{ fixed partition is DELTA_X, answer is SUM }
var pieces,i : integer;
x,delta_x,end_sum,mid_sum,
end_cor,sum1 : real;
begin
pieces:=1;
delta_x:=(upper-lower)/pieces;
end_sum:=fx(lower)+fx(upper);
end_cor:=(dfx(upper)-dfx(lower))/12.0;
sum:=end_sum*delta_x/2.0;
writeln(' 1',sum);
mid_sum:=0.0;
repeat
pieces:=pieces*2;
sum1:=sum;
delta_x:=(upper-lower)/pieces;
for i:=1 to pieces div 2 do
begin
x:=lower+delta_x*(2.0*i-1.0);
mid_sum:=mid_sum+fx(x)
end;
sum:=(end_sum+2.0*mid_sum)*delta_x*0.5-sqr(delta_x)*end_cor;
writeln(pieces:5,sum)
until abs(sum-sum1)<=abs(tol*sum)
end; { TRAPEZ }