(* Algorithmus 7.3 *) FUNCTION romberg(a,b,eps:real):real; VAR h,s,x,vhj : real; t : ARRAY[0..10] OF real; i,j,zhi : integer; (*GLOBAL FUNCTION F : REAL*) BEGIN h:=b-a; s:=(f(a)+f(b))/2; t[0]:=s*h; zhi:=1 ;i:=1; writeln(tf,t[0]:13:9); i:=0; REPEAT (*NEUE TRAPEZSUME *) zhi:=2*zhi; h:=h/2;j:=1; REPEAT s:=s+f(a+j*h); j:=j+2 UNTIL j>zhi; t[i]:=s*h; write(tf,t[i]:13:9); (*EXTRAPOLATION*) vhj:=1; FOR j:=i-1 DOWNTO 0 DO BEGIN vhj:=vhj/4; x:=t[j]; t[j]:=(t[j+1]-vhj*x)/(1-vhj); write(tf,t[j]:13:9) END; i:=i+1; writeln(tf) UNTIL (abs(x-t[0])<=eps*abs(t[0])) OR (i>10); romberg := t[0];; END;