Ну вот, пожалуйста.
Хотя, сами видите - получилось громоздко, нечитабельно и некрасиво. Так что осваивайте работу с процедурами и функциями!
Код:
Var
a,b,AV,T,S,h:Real;
i,k,N:Byte;
Begin
Write('a = ');
Readln(a);
Write('b = ');
Readln(b);
AV:=0.5*(Exp(b)+Exp(-b))-0.5*(Exp(a)+Exp(-a));
WriteLn('Accurate value: ', AV:0:8);
Writeln;
for k:=1 to 8 do
begin
h:=(b-a)/(k*10);
T:=(0.5*(Exp(a)-Exp(-a))+0.5*(Exp(b)-Exp(-b)))/2*h;
for i:=1 to k*10-1 do
T:=T+h*0.5*(Exp(a+h*i)-Exp(-a-h*i));
N:=k*10 div 2;
h:=(b-a)/(2*N);
S:=(0.5*(Exp(a)-Exp(-a))+0.5*(Exp(b)-Exp(-b)))/3*h;
for i:=1 to N do
S:=S+4.0*h/3.0*0.5*(Exp(a+h*(2*i-1))-Exp(-a-h*(2*i-1)));
for i:=2 to N do
S:=S+2.0*h/3.0*0.5*(Exp(a+h*(2*i-2))-Exp(-a-h*(2*i-2)));
Writeln('k= ',k, ' Trapezium: ',T:0:8, ' Abs.Err: ',Abs(T-AV):0:8,' Rel.Err: ',Abs(T-AV)/AV*100:0:8,'%');
Writeln('k= ',k, ' Simpson: ',S:0:8, ' Abs.Err: ',Abs(S-AV):0:8,' Rel.Err: ',Abs(S-AV)/AV*100:0:8,'%');
end;
Readln;
End.