Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0025/difplt.bas
There are 2 other files named difplt.bas in the archive. Click here to see a list.
00002 DIM A(80,4),C(30),G(50)
00006 LET K0=0
00008 FOR J=1 TO 4
00010 LET R(J)=1
00012 NEXT J
00014 GO TO 100
00016 LET M=N+1
00017 LET K0=2
00018 LET Z(1)=1
00020 LET Z(2)=2
00022 LET Z(3)=2
00024 LET Z(4)=1
00026 LET X = C(2*M+1)
00028 FOR I=2 TO M
00030 LET I2=I+2*M
00032 LET Y (I-1)=C(I2)
00034 LET I3=I2+M
00036 LET D(I-1)=C(I3)
00038 LET C(I)=0
00040 NEXT I
00042 FOR J=1 TO 4
00044 FOR I=2 TO M
00046 LET I1=I+M
00048 LET C(I1)=D(I-1)*D1
00050 LET C(I)=C(I)+C(I1)*Z(J)
00052 NEXT I
00054 IF J=4 THEN 190
00056 IF J>4 THEN 240
00058 LET X=C(2*M+1)+D1/Z(J+1)
00060 FOR I=2 TO M
00062 LET I1=I+M
00064 LET I2=I1+M
00066 LET Y(I-1)=C(I2)+C(I1)/Z(J+1)
00068 NEXT I
00100	GO TO 2130
00110	R(1)=0
00120	R(2)=0
00130 LET R(3)=0
00140 LET R(4)=0
00150	IF K0=0 THEN 400
00160	IF K0=2 THEN 180
00170	RETURN
00180	NEXT J
00190 LET X=C(2*M+1)+D1
00200 FOR I=2 TO M
00210 LET I2=I+2*M
00220 LET Y(I-1)=C(I2)+C(I)/6
00230 NEXT I
00240 RETURN
00250 LET M=N+1
00260 LET K0=1
00270 LET C(2*M+1)=X
00280 FOR I=2 TO M
00290 LET I2=I+2*M
00300 LETC(I2)=Y(I-1)
00310 NEXT I
00320 LET K0=1
00330 RETURN
00340 LET C(3*M+1)=D1
00350 FOR I=2 TO M
00360 LET I3=I+3*M
00370 LET C(I3)=D(I-1)
00380 NEXT I
00390 RETURN
00400 FOR N=4 TO 1STEP-1
00410 IF R(N)=1 THEN 430
00420 NEXT N
00430 READ T0,T1,D1
00440 LET N3=N
00450 PRINT"GIVE"N"INITIAL VALUES FOR THE 'Y'S'."
00460 FOR I=1 TO N
00470 PRINT"Y("I") =";
00480 INPUT V(I)
00490 NEXT I
00500 PRINT
00510 PRINT"TYPE '1' FOR A PRINTOUT, '3' FOR A PLOT, OR '5' FOR BOTH";
00520 INPUT A0
00530 LET B0=0
00540 IF A0=3 THEN 1080
00550 LET D2=D1
00560	PRINT
00570 PRINT"THE CURRENT STEPSIZE IS =";D2
00580 PRINT
00590 PRINT"DO YOU WISH TO CHANGE THE STEPSIZE: '1'=YES, '0'=NO";
00600 INPUT K9
00610 IF K9=0 THEN 640
00620 PRINT"WHAT IS THE NEW STEPSIZE";
00630 INPUT D2
00640 PRINT
00650 LET T=T0
00660 LET P1=T
00670 FOR I= 1 TO N
00680 LET Y(I)=V(I)
00690 NEXT I
00700 IF B0<>1 THEN 720
00710 RETURN
00720 PRINT
00730 PRINT"  TIME  ",
00740 FOR I=1 TO N3
00750 PRINT"Y("I")",
00760 NEXT I
00770 PRINT" "
00780 LET N7=0
00790 LET X=T
00800 LET X=P1
00810 GOSUB 250
00820 GOSUB 110
00830 GOSUB 340
00840 IF P1-X+.5*D1<0 THEN 950
00850 IF B0=1 THEN 950
00860 FOR I=1 TO 3
00870 LET A(1,I)=Y(I)
00880 NEXT I
00890 IF B0=1 THEN 950
00900 PRINT"     "P1,
00910 FOR I=1 TO N3
00920 PRINT A(1,I),
00930 NEXT I
00940	PRINT" "
00950	LET N7=N7+1
00960	IF D2<=0 THEN 1000
00970	LET P1=P1+D2
00980 LET D1=D2
00990 GO TO 1010
01000 LET P1=P1+D1
01010 IF B0=0 THEN 1050
01020 FOR I=1 TO N3
01030 LET A(N7,I)=Y(I)
01040 NEXT I
01050 IF X+.5*D1-T1>=0 THEN 1080
01060 GOSUB 16
01070 GOTO 810
01080 PRINT
01090 IF B0=1 THEN 1190
01100 IF A0=1 THEN 1940
01110 PRINT"P L O T   O F   T H E   I N T E G R A T E D   F U N C T I O N" 
01130 LET B0=1
01140 IF A0=3 THEN 1170
01150 GOSUB 560
01160 GOTO 1180
01170 GOSUB 550
01180 GOTO 780
01190 FOR I=1 TO N3
01200 LET A3=A(1,I)
01210 LET A4=A(1,I)
01220 FOR J=1 TO N7
01230 IF A3-A(J,I)>=0 THEN 1250
01240 LET A3=A(J,I)
01250 IF A4-A(J,I)<=0 THEN 1270
01260	LET A4=A(J,I)
01270	NEXT J
01280	LET W(I)=A3+1E-6
01290 LET F(I)=A4+1E-6
01300 LET H(I)=49/(W(I)-F(I))
01310 PRINT"   Y("I") MAX =";W(I);TAB(27);"HORIZ. INCR =";H(I)
01320 PRINT"          MIN =";F(I)
01330 NEXT I
01340 PRINT
01350 PRINT"  START PT. ="T0"  END PT. ="T1"  VERT. INCR. (TIME) ="D1
01360 PRINT
01370 PRINT
01380 PRINT"THE INDIVIDUAL SCALING INCREMENTS FOR THE FUNCTION(S) OF";
01390 PRINT" 'Y' ARE"
01400 PRINT
01410 FOR I=1 TO N3
01420 LET V(I)=(W(I)-F(I))/2
01430 LET U(I)=V(I)+F(I)
01440 PRINT"Y("I")"F(I),U(I),"          "W(I)
01450 NEXT I
01460 PRINT" TIME    ^...:....:....:....:....^....:....:....:....:....^"
01470 LETT=T0
01480 FOR L8= 1 TO N7
01490 PRINT"  ";T;TAB(9);":";
01500 FOR I=1 TO N3
01510 LET J=INT(H(I)*(A(L8,I)-F(I))+1)
01520 LET G(I)=J
01530 NEXT I
01540 LET L=1
01550 LET R2=0
01560 LET I=1
01570 LET R1=100
01580 IF G(I)>=R1 THEN 1610
01590 LET R1=G(I)
01600 LET K=I
01610 LET I=I+1
01620 IF I<=N3 THEN 1580
01630 LET G(K) = 101
01640 LET R3=R1-R2-1
01650 IF R3<0 THEN 1890
01660 IF R3<9 THEN 1700
01670 PRINT"         ";
01680 LET R3=R3-9
01690 GO TO 1660
01700 IF R3<3 THEN 1740
01710 PRINT"   ";
01720	LET R3=R3-3
01730	GO TO 1700
01740	IF R3<1 THEN 1780
01750 PRINT" ";
01760 LET R3=R3-1
01770 GO TO 1740
01780 IF K<>1 THEN 1810
01790 PRINT"*";
01800 GO TO 1880
01810 IF K<>2 THEN 1840
01820 PRINT".";
01830 GO TO 1880
01840 IF K<>3 THEN 1870
01850 PRINT"+";
01860 GO TO 1880
01870 PRINT"X";
01880 LET R2=R1
01890 LET L=L+1
01900 IF L<=N3 THEN 1560
01910 PRINT" "
01920 LET T=T+D1
01930 NEXT L8
01940 PRINT
01950 LET T0=P1-D1
01960 LET T1=T1+T0
01970 PRINT
01980 PRINT"GIVEN THE NEW START PT."T0", THE NEW END PT."T1", AND"
01990 PRINT"THE LAST VALUES FOR THE CALCULATED Y'S AS INITIAL GUESSES"
02000 PRINT
02010 FOR I=1TON
02020 IF A0=1 THEN 2040
02030 LET A(1,I)=A(N7,I)
02040 LET V(I)=A(1,I)
02050 PRINT" Y("I") ="V(I);
02060 NEXT I
02070 PRINT" "
02080 PRINT
02090 PRINT"TYPE '1' FOR MORE OUTPUT, OR '0' TO STOP NOW.  WHICH";
02100 INPUT E0
02110 IF E0=1 THEN 500
02120 GO TO 2150
02130 PRINT"LIST DPLOTX*** FOR INSTRUCTIONS."
02140 DATA 0,0,0
02150 END