File: NEWTON.PS of Tape: Various/Decus/decus-3
(Source file text) 

PROGRAM NEWTON(INPUT,OUTPUT);

  CONST NMAX=25;

  VAR   N,I,J: INTEGER;
        X,Y,C: ARRAY[0..NMAX] OF REAL;
        A: ARRAY[-1..NMAX] OF REAL;

BEGIN
    READ(N); N := N-1;
    WRITELN;
    WRITELN("I N T E R P O L A T I O N S P O L Y N O M   (NEWTON)");
    WRITELN("          C0 + C1*X + C2*X^2 + .... + CN*X^N");
    WRITELN;

(***** EINGABE DER STUETZSTELLEN *****)

    WRITELN("GEGEBENE PUNKTE:");
    FOR I := 0 TO N DO
        BEGIN   READ(X[I],Y[I]);
                WRITELN("P",I:1,X[I]:8:2,"  ,",Y[I]:8:2)
        END;

(***** BERECHNUNG DER DIVIDIERTEN DIFFERENZEN *****)

    FOR I := 1 TO N DO
        FOR J := N DOWNTO I DO  Y[J] := (Y[J-1]-Y[J])/(X[J-I]-X[J]);

(***** KOMPOSITION DER KOEFFIZIENTEN *****)

    A[-1] := 0;
    FOR I := 0 TO N DO
        BEGIN
            A[I] := 1;  C[I] := Y[I];
            FOR J := I-1 DOWNTO 0 DO
                BEGIN
                    A[J] := A[J-1] - A[J]*X[I-1];
                    C[J] := C[ J ] + A[J]*Y[ I ]
                END
        END;

(***** AUSGABE DER KOEFFIZIENTEN *****)

    WRITELN;
    WRITELN("DIE KOEFFIZIENTEN SIND:");
    FOR I := 0 TO N DO  WRITELN("C",I:1," =",C[I]:15:8)

END.