| 1 | PROGRAM INTEGRATION(INPUT,OUTPUT); |
| 2 | |
| 3 | VAR ANFANG,ENDE,FLAECHE: REAL; |
| 4 | |
| 5 | |
| 6 | (*************** HIER INTEGRAND DEFINIEREN ******************) |
| 7 | FUNCTION F(X: REAL): REAL; |
| 8 | BEGIN |
| 9 | F := SIN(X) |
| 10 | END; |
| 11 | (************************************************************) |
| 12 | |
| 13 | |
| 14 | |
| 15 | FUNCTION INTEGRAL(A,B: REAL): REAL; |
| 16 | |
| 17 | CONST EPSILON = 1E-8; |
| 18 | VAR K,N,I,J: INTEGER; |
| 19 | DELTA,SUMME,LETZTWERT: REAL; |
| 20 | ROMBERG: ARRAY[0..12] OF REAL; |
| 21 | |
| 22 | BEGIN |
| 23 | K := 0; N := 1; DELTA := B-A; |
| 24 | ROMBERG[0] := ( F(A) + F(B) )*DELTA/2; |
| 25 | |
| 26 | REPEAT |
| 27 | LETZTWERT := ROMBERG[0]; |
| 28 | K := K+1; N := 2*N; DELTA := DELTA/2; |
| 29 | SUMME := 0; |
| 30 | FOR J := 1 TO N DIV 2 DO |
| 31 | SUMME := SUMME + F(A + (2*J-1)*DELTA); |
| 32 | ROMBERG[K] := ROMBERG[K-1]/2 + SUMME*DELTA; |
| 33 | I := 1; |
| 34 | FOR J := K-1 DOWNTO 0 DO |
| 35 | BEGIN I := 4*I; |
| 36 | ROMBERG[J] := (I*ROMBERG[J+1] - ROMBERG[J])/(I-1) |
| 37 | END |
| 38 | UNTIL ABS(ROMBERG[0]-LETZTWERT)<ABS(ROMBERG[0]*EPSILON); |
| 39 | |
| 40 | INTEGRAL := ROMBERG[0] |
| 41 | END (* INTEGRAL *); |
| 42 | |
| 43 | |
| 44 | BEGIN |
| 45 | WRITELN("B E S T I M M T E S I N T E G R A L"); |
| 46 | WRITELN; |
| 47 | WRITE("INTERVALLGRENZEN: "); READ(ANFANG,ENDE); |
| 48 | FLAECHE := INTEGRAL(ANFANG,ENDE); |
| 49 | WRITELN; |
| 50 | WRITELN("WERT DES INTEGRALS: ", FLAECHE :20:10) |
| 51 | END. |