Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0025/sixcur.bas
There are 2 other files named sixcur.bas in the archive. Click here to see a list.
00010	DIMA(6),B(6),C(7),X(180),Y(180),U(180),V(180),Z(6)
00012	LET I=0
00015	LETC(0)=-2
00020	LET T1=0
00025	LET T2=0
00030	LET T3=0
00035	LET M=0
00040	LET A2=0
00045	LET A3=0
00050	LETB2=0
00055	LETB3=0
00065	LET I=0
00070	FORK=1TO6
00075	LETZ(K)=0
00080	NEXTK
00085	LETI=I+1
00090	READX(I),Y(I)
00100	GO TO 1990
00150	DATA 1E37,1E37
00151	IFX(I)<>1E37THEN 85
00152	IFY(I)<>1E37THEN 85
00153	LETN=I-1
00154	FORI=1TON
00155	LETT1=T1+X(I)
00156	LETT2=T2+Y(I)
00157	LETT3=T3+Y(I)^2
00160	IFX(I)<>0THEN 175
00165	LETA2=A2+1
00170	GOTO 180
00175	LETA2=A2
00180	IFX(I)>=0THEN 195
00185	LETA3=A3+1
00190	GOTO 200
00195	LETA3=A3
00200	IFY(I)<>0THEN 220
00205	LETB2=B2+1
00210	GOTO 225
00220	LETB2=B2
00225	IFY(I)>=0THEN 240
00230	LETB3=B3+1
00235	GOTO 241
00240	LETB3=B3
00241	NEXTI
00245	FORI=1TON-1
00250	FORJ=I+1TON
00255	IFX(I)<=X(J)THEN 295
00260	LETP=X(I)
00265	LET Q=Y(I)
00270	LETX(I)=X(J)
00275	LETY(I)=Y(J)
00280	LETX(J)=P
00285	LETY(J)=Q
00290	NEXTJ
00295	NEXTI
00300	IFA2<=0THEN 320
00305	LETZ(3)=-1
00310	LETZ(4)=-1
00315	LETZ(6)=-1
00320	IFA3<=0THEN 330
00325	LETZ(3)=-1
00330	IFB2<=0THEN 355
00335	LETZ(2)=-1
00340	LETZ(3)=-1
00345	LETZ(5)=-1
00350	LETZ(6)=-1
00355	IFB3<=0THEN 370
00360	LETZ(2)=-1
00365	LETZ(3)=-1
00370	PRINT
00375	PRINT"LEAST SQUARES FIT OF SIX CURVE TYPES:"
00380	PRINT
00385	PRINT"NUMBER"," CURVE"," INDEX","    A","    B"
00390	PRINT
00395	LETR2=C(0)
00400	LETX2=T1/N
00405	LETY4=T2/N
00410	FORK=1TO6
00415	PRINTK,
00420	GOSUB 1000
00425	IFK<>1THEN 435
00430	PRINT"Y=A+B*X",
00431	GOTO 485
00435	IFK<>2THEN 445
00440	PRINT"Y=A*EXP(B*X)",
00441	GOTO 485
00445	IFK<>3THEN 455
00450	PRINT"Y=A*(X^B)",
00451	GOTO 485
00455	IFK<>4THEN 465
00460 PRINT"Y=A+(B/X)",
00461	GOTO 485
00465	IFK<>5THEN 475
00470	PRINT"Y=1/(A+B*X)",
00471	GOTO 485
00475	IFK<>6THEN 485
00480	PRINT"Y=X/(A*X+B)",
00485	IFZ(K)<0THEN 520
00490	IFL3<>0THEN 505
00495	LETA(K)=EXP(A(K))
00500	GOTO 510
00505	LETA(K)=A(K)
00510	PRINT,C(K),A(K),B(K)
00511	NEXTK
00515	GOTO 525
00520	PRINT"CAN'T FIT....SOME DATA IS ZERO OR NEGATIVE"
00525	PRINT
00530	PRINT"FOR WHICH CURVE ARE DETAILS DESIRED (NUMBER) ";
00535	INPUT M
00536	IF M= 0 GO TO 1999
00540	IFM>0 THEN 545
00541	GO TO 550
00545	IFM<7THEN 565
00550	PRINT
00555	PRINT"....ANSWER 1,2,3,4,5, OR 6...."
00560	GOTO 530
00565	IFZ(M)>=0THEN 590
00570	PRINT
00575	PRINT"....THAT CURVE HAS NOT BEEN FITTED....TRY ANOTHER?"
00580	PRINT
00585	GOTO 530
00590	LETK=M
00595	GOSUB 1000
00600	LETM=K
00605	LETS8=SQR((D2-B1*D3)/(N*(N-2)))
00610	LETS9=S8/SQR(D1/N)
00615	LETS6=S8/SQR(N)
00620	LETT4=1.95996+2.37226/(N-2)+2.8225/((N-2)^2)
00625	LETP=T4*S6
00630	LETQ=T4*S9
00635	LETA2=A1-P
00640	LETA3=A1+P
00645	LETB2=B1-Q
00650	LETB3=B1+Q
00655	IFL3<>0THEN 675
00660	LETA1=EXP(A1)
00665	LETA2=EXP(A2)
00670	LETA3=EXP(A3)
00675	PRINT
00680	PRINT"RESULTS FOR THE SELECTED CURVE ARE:"
00685	PRINT
00690	PRINT"COEFFICIENTS:"
00695	PRINT
00700	PRINT"           EXPECTED VALUE    95 PCT CONFIDENCE LIMITS"
00705	PRINT
00710	PRINT"      A:",A1,A2,A3
00715	PRINT"      B:",B1,B2,B3
00720	PRINT
00725	PRINT"MEAN VALUES:"
00730	PRINT
00735	PRINT"      XBAR =",X2,"      YBAR =",Y4
00740	PRINT
00745	PRINT"ESTIMATED VALUE AND CONFIDENCE LIMITS FOR:"
00750	PRINT"THE INDIVIDUAL VALUE OF Y FOR EACH X:"
00755	PRINT
00760	PRINT"X-ACTUAL","Y-ACTUAL","Y-ESTIM","95 PCT CONFIDENCE LIMITS"
00765	PRINT
00770	FORI=1TON
00775	LETT=U(I)
00780	GOSUB 1500
00785	LETU(I)=T
00790	PRINTX(I),Y(I),P,Y2,Y3
00795	NEXTI
00799	PRINT
00800	GO TO 530
00815	DATA 9E37
00820	PRINT"CALCULATED VALUES OF Y FOR EXTRA X'S SUPPLIED:"
00825	PRINT
00830	PRINT"X-EXTRA"," ","Y-ESTIM","95 PCT CONFIDENCE LIMITS"
00835	PRINT
00840	READT1
00845	IFT1<>9E37THEN 870
00850	RESTORE
00854	FOR I=1 TO N+1
00855	READX(I),Y(I)
00856	NEXT I
00860	PRINT
00865	GOTO 530
00870	IFM<>3THEN 885
00875	LETR2=LOG(T1)
00880	GOTO 905
00885	IFL1=0THEN 900
00890	LETR2=T1
00895	GOTO 905
00900	LETR2=1/T1
00905	LETT=R2
00910	GOSUB 1500
00920	PRINTT1," ",P,Y2,Y3
00930	GOTO 840
01000	IFZ(K)>=0THEN 1030
01010	LETC(K)=0
01020	GOTO 1480
01030	LETL1=(K-4)*(K-6)
01040	LETL2=(K-5)*(K-6)
01050	LETL3=(K-2)*(K-3)
01060	LETS1=0
01070	LETS2=0
01080	LETS3=0
01090	LETS4=0
01100	LETS5=0
01110	FORI=1TON
01120	IFL3<>0THEN 1150
01130	LETV(I)=LOG(Y(I))
01140	GOTO 1190
01150	IFL2<>0THEN 1180
01160	LETV(I)=1/Y(I)
01170	GOTO 1190
01180	LETV(I)=Y(I)
01190	IFK<>3THEN 1220
01200	LETU(I)=LOG(X(I))
01210	GOTO 1260
01220	IFL1<>0THEN 1250
01230	LETU(I)=1/X(I)
01240	GOTO 1260
01250	LETU(I)=X(I)
01260	LETS1=S1+U(I)
01270	LETS2=S2+V(I)
01280	LETS3=S3+U(I)^2
01290	LETS4=S4+V(I)^2
01300	LETS5=S5+U(I)*V(I)
01310	NEXTI
01320	LETX1=S1/N
01330	LETY1=S2/N
01340	LETD1=N*S3-S1^2
01350	LETD2=N*S4-S2^2
01360	LETD3=N*S5-S1*S2
01370	LETB1=B(K)
01375	LETB1=D3/D1
01380	LETB(K)=D3/D1
01390	LETA1=A(K)
01395	LET A1=Y1-B1*X1
01400	LETA(K)=Y1-B1*X1
01430	LETS1=0
01440	LETS3=0
01450	FORI=1TON
01452	LETW=Y1+B1*(U(I)-X1)
01454	IFL3<>0THEN 1460
01456	LETW=EXP(W)
01458	GOTO 1466
01460	IFL2<>0THEN 1464
01462	LETW=1/W
01463	GOTO 1466
01464	LETW=W
01466	LETW=Y(I)-W
01468	LETS1=S1+W
01470	LETS3=S3+W^2
01472	NEXTI
01474	LETC(K)=1-(N*S3-S1^2)/(N*T3-T2^2)
01476	IFC(K)>=0THEN 1480
01478	LETC(K)=0
01480	RETURN
01500	LETS7=S8*SQR(1+1/N+((T-X1)^2)/(D1/N))
01510	LETP=Y1+B1*(T-X1)
01520	LETS1=T4*S7
01530	LETY2=P-S1
01540	LETY3=P+S1
01550	IFL3<>0THEN 1590
01560	LETP=EXP(P)
01570	LETY2=EXP(Y2)
01580	LETY3=EXP(Y3)
01590	IFL2<>0THEN 1630
01600	LETP=1/P
01610	LETY2=1/Y2
01620	LETY3=1/Y3
01630	RETURN
01990	PRINT"LIST THE FILE 'SIXEXP*' FOR INSTRUCTIONS ON USING SIXCUR*"
01999	END