PROGRAM USEWLREG;{$e+,i+} {THIS PROGRAM WAS WRITTEN TO USE AND TEST THE PROCEDURES PLOT AND WLREG} {THREE ARRAYS,X,Y AND WEIGHTS ARE FILLED FROM THE CONSOLE,A WEIGHTED } {LINEAR REGRESSION PERFORMED,AND THEN Y AND E(Y) ARE PLOTTED ON THE } {CONSOLE SCREEN AS FUNCTIONS OF X. } LABEL 30; {END OF PROGRAM,USED TO ABORT.} CONST LAST = 100; TYPE DATA = ARRAY[1..LAST] OF REAL; VAR I,N:INTEGER; TIME,AMPLITUDE,WEIGHTS,Y_CALC,VAR_Y:DATA; REG_COEFF,Y_INTCPT,COEFF_DET,CRL8N:REAL; VAR_TTL,VAR_INTCPT,VAR_RC,COVARIANCE,T:REAL; ZERO,TOOBIG,TOOSMALL,STOP:BOOLEAN; ANSWER:CHAR; {$IPLOT.PAS } {$IWLREG.PAS } PROCEDURE STATS_OUT; BEGIN WRITE(' REGRESSION COEFFICIENT ...............= '); WRITELN(REG_COEFF:9:4); WRITE(' VARIANCE OF REGRESSION COEFFICIENT ...= '); WRITELN(VAR_RC:9:4); WRITE(' Y INTERCEPT ..........................= '); WRITELN(Y_INTCPT:9:4); WRITE(' VARIANCE OF Y INTERCEPT ..............= '); WRITELN(VAR_INTCPT:9:4); WRITE(' COVARIANCE OF REGRESSION PARAMETERS ..= '); WRITELN(COVARIANCE:9:4); WRITE(' COEFFICIENT OF DETERMINATION .........= '); WRITELN(COEFF_DET:9:4); WRITE(' CORRELATION COEFFICIENT ..............= '); WRITELN(CRL8N:9:4); WRITELN(' t = ',T:7:4,' for ',n-2:3,'degrees of freedom'); END;{STATS_OUT} BEGIN REPEAT WRITELN('YOU MAY ENTER UP TO 100 SETS OF DATA POINTS.'); WRITELN('AMPLITUDE & EXPECTED AMPLITUDE WILL BE PLOTTED AGAINST TIME'); WRITELN('HOW MANY DATA SETS DO YOU WISH TO ENTER?'); WRITELN('ENTERING 0 WILL TERMINATE PROGRAM.'); N:=0; REPEAT READ(I); ZERO:=I=0; TOOBIG:=I>100; TOOSMALL:=I<1; IF ZERO THEN GOTO 30; IF TOOBIG OR TOOSMALL THEN WRITELN('PLEASE TRY AGAIN.') ELSE N:=I UNTIL N <> 0; WRITE('PLEASE ENTER FIRST DATA SET:'); WRITELN('AMPLITUDE FIRST,TIME NEXT,THEN WEIGHT.'); I:=0; REPEAT I:=I+1; READLN(AMPLITUDE[I],TIME[I],WEIGHTS[I]); IF I'Y'; 30: END. .