Add README.md
[pdp8.git] / sw / src / pascal / INTEGR.V2
CommitLineData
81e70d48
PH
1PROGRAM 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
44BEGIN
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)
51END.