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