(*$B- *) PROGRAM integral; VAR a,b,eps, int :real; i, z,fall:integer; tf:text; stri:string[20]; FUNCTION f(x:real):real; BEGIN CASE fall OF (*$I F.PAS*) END; z := z + 1; END; (*$I trapez Algorithmus 7.1 *) (*$I simpson Algorithmus 7.2 *) (*$I romberg Algorithmus 7.3 *) FUNCTION ada(a,b,eps:real):real; VAR fa,fb,fm, is :real; v:integer; (*$I adapt Algorithmus 7.4 *) BEGIN fa:=f(a); fm:=f((a+b)/2); fb:=f(b); is := (b-a)/6*(fa+4*fm+fb) ; v:=1; IF is<0 THEN v:=-1; is := v*(abs(is)+b-a)/2*eps/1e-11; writeln(tf,'a':5,'b-a':15,'i1':16); ada:= adapt(a,b,fa,fm,fb,is); END; PROCEDURE menue; VAR f:text; stri: string[100]; BEGIN assign(f,'F.PAS'); reset(f); WHILE NOT eof(f) DO BEGIN readln(f,stri); writeln(stri) END; END; BEGIN writeln('Wohin mit dem Output ?'); read(stri); assign(tf,stri); rewrite(tf); menue; writeln('Fall');read(fall); writeln('a,b und eps eingeben'); read(a,b,eps); REPEAT writeln; writeln('Welche Integrationsmethode ?'); writeln('0: fertig '); writeln('1: Trapezregel 2: Simpson '); writeln('3: Romberg 4: Adaptive Quadratur '); read(i); z := 0; IF i IN [1,2,3,4] THEN BEGIN CASE i OF 1: int:= trapez(a,b,eps); 2: int:= simpson(a,b,eps); 3: int := romberg(a,b,eps); 4: int := ada(a,b,eps); END; write(tf,'Integral = ',int); writeln(tf,' Anzahl Fkt.Aufr. ',z); END; UNTIL i=0; close(tf) END.