9000 !***** ROOTER ***** MATHEMATICS PROGRAM ***** 9001!***** VERSION #1 ***** 7/31/69 ***** 9002!***** UPDATE TO PDP 11/20 ***** 8/8/72 9003 DIM A(26),B(26),X(26) 9004 G8=0:M8=0 9005 &:C1=0:D1=1:O=0 9006 G8=G8+1:& 9007 IF M8=1 THEN PRINT "DO YOU WANT TO CONTINUE":INPUT N$:IF N$="NO" THEN 9999 9009 G8=G8+1:& 9010 PRINT "WHAT IS THE ORDER OF THE POLYNOMIAL":INPUT N 9011 M8=1: IF N=0 THEN 9133 9012 PRINT "ENTER THE COEFFICIENTS, ONE AT A TIME,IN DESCENDING ORDER" 9013 FOR I=1 TO N+1:INPUT A(I):NEXT I 9014 PRINT:PRINT"POLYNOMIAL IS OF ORDER ";N 9015 &:&" COEFFICIENTS (IN DESCENDING ORDER) ARE:" 9017 &:&" "; 9019 FOR I=1 TO N+1 9021 &A(I); 9022B(I)=A(I) 9023 NEXT I:&:& 9026 &" THE ROOT S ARE:" 9028 &:IF N<=2 THEN 9093 9030 IF (N/2-INT(N/2))<1.E-25 THEN 9033 9031 GOSUB 9109 9032 GOTO9028 9033 IF ABS(A(N-1))<1.E-25 THEN 9037 9034 P=A(N)/A(N-1) 9035 Q=A(N+1)/A(N-1) 9036 GOTO9039 9037 P=A(N) 9038 Q=A(N+1) 9039 FOR I=1 TO N+1 9040 X(I)=A(I):NEXT I 9042 GOSUB 9104 9043 FOR I=1 TO N-1 9044B(I)=X(I):NEXT I 9046 R=X(N) 9047 S=A(N+1)-P*X(N)-Q*X(N-1) 9048 GOSUB 9104 9049 X(N)=P*X(N-1)-Q*X(N-2) 9050 D=X(N-1)^2-X(N)*X(N-2) 9051 IF ABS(D)>1.E-25 THEN 9054 9052 &" SOLUTIONS UNOBTAINABLE IN THIS PROGRAM" 9053 GOTO9005 9054 P1=P+(R*X(N-1)-S*X(N-2))/D 9055 Q1=Q+(S*X(N-1)-R*X(N))/D 9056 IF ABS(P)>1.E-25 THEN 9060 9057 IF ABS(P1)>1.E-25 THEN 9060 9058 IF ABS(Q)>1.E-25 THEN 9061 9059 GOTO 9062 9060 IF ABS(P1/P-1)>.000001 THEN 9062 9061 IF ABS(Q1/Q-1)<.000001 THEN 9076 9062 LET P=P1 9063 LET Q=Q1 9064 LET C1=C1+1 9065 IF C1=D1*25 THEN 9067 9066 GOTO 9039 9067 PRINT 9068 PRINT "THE SOLUTION DID NOT CONVERGE AFTER";C1;"ITERATIONS TO" 9069 PRINT "CONTINUE THE SOLUTION FOR 25 MORE ITERATIONS TYPE 1 OTHERWISE" 9070 PRINT "TYPE 0." 9071 INPUT K1 9072 IF K1=1 THEN9074 9073 GOTO 9005 9074 LET D1=D1+1 9075 GOTO 9039 9076 FOR I=2 TO N-1 9077 LET A(I)=B(I) 9078 NEXT I 9079 LET N=N-2 9080 LET D=P*P-4*Q 9081 IF D<0 THEN 9088 9082 LET D=SQR(D) 9083 PRINT" ";(-P+D)/2;" AND ";(-P-D)/2 9084 LET C1=0 9085 LET D1=1 9086 IF N-2>0 THEN 9029 9087 GOTO 9093 9088 LET D=SQR(-D) 9089 PRINT" ";-P/2;" + J *";D/2" AND ";-P/2;" - J *";D/2 9090 LET C1=0 9091 LET D1=1 9092 IF N-2>0 THEN 9029 9093 IF N=1 THEN 9099 9094 IF N=0 THEN 9005 9095 LET P=B(2)/B(1) 9096 LET Q=B(3)/B(1) 9097 LET N=0 9098 GOTO 9080 9099 PRINT " ";-B(2)/B(1) 9100 GOTO 9005 9101 PRINT " 0.00000" 9102 LET N=N-1 9103 GOTO 9028 9104 LET X(2)=X(2)-P*X(1) 9105 FOR I=3 TO N 9106 X(I)=X(I)-P*X(I-1)-Q*X(I-2) 9107 NEXT I 9108 RETURN 9109 IF B(2)=0 THEN 9112 9110 LET X=-B(2)/B(1) 9111 GOTO 9113 9112 LET X=-B(N+1)/B(1) 9113 LET F=0 9114 LET F1=0 9115 FOR I=1 TO N+1 9116 LET J=N-I+2 9117 IF B(J)=0 THEN 9121 9118 LET F=B(J)*X^(I-1)+F 9119 IF I-1=O THEN 9121 9120 LET F1=(I-1)*B(J)*X^(I-2)+F1 9121 NEXT I 9122 LET X1=X-F/F1 9123 IF ABS(X/X1-1)<.000001 THEN 9126 9124 LET X=X1 9125 GOTO 9113 9126 PRINT " ";X1 9127 LET N=N-1 9128 FOR I=2 TO N+1 9129 LET A(I)=B(I)+X1*A(I-1) 9130 LET B(I)=A(I) 9131 NEXT I 9132 RETURN 9133 GOTO9999 9999 END