home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 2.7 KB | 87 lines |
- 10 CLS: PRINT : DEFINT J,I,N,K
- 20 PRINT TAB(20) "TRANSIENT ANALYSIS PROGRAM"
- 30 PRINT : PRINT TAB(10) "COPYRIGHT DECEMBER 8, 1979 BY W.L. GILL" : PRINT
- 40 PRINT : PRINT "THE PROGRAM SOLVES THE TRANSIENT RESPONSE OF THE POLYNOMIAL"
- 50 PRINT "EQUATION A(M)S^M+A(M-1)^S(M-1)...+A(0) / B(N)S^N+B(N-1)S^(N-1).."
- 60 PRINT : PRINT "N MUST BE EQUAL TO OR GREATER THAN M. (S=(-1)[S*W)"
- 70 PRINT : PRINT "THE INPUT MUST BE A KNOWN FUNCTION OF TIME (T), BREAK AND"
- 80 PRINT "RELACE LINE 820 WITH EI = FCN(T)."
- 90 REM TRANSFER FUNCTION INPUT
- 91 FOR J = 1 TO 10000
- 92 NEXT J
- 100 FOR I = 0 TO 2000 : NEXT I : CLS
- 110 INPUT "ORDER OF DENOMINATOR " ; N
- 120 DIM X(1,N),A(N),B(N),EO(1000)
- 130 PRINT "INPUT COEFFICIENTS IN DECENDING ORDER IE. A4,A3,A2,A1,A0"
- 140 PRINT " NUMERATOR COEFFICIENTS"
- 150 FOR I = 0 TO N : PRINT "A(";N-I;") = " ; : INPUT A(I) : NEXT I
- 160 PRINT "DENOMINATOR COEFFICIENTS"
- 170 FOR I = 0 TO N : PRINT "B(";N-I;") = " ; : INPUT B(I) : NEXT I
- 180 REM TIME BASE INPUT
- 190 INPUT "INPUT MAXIMUM TIME LIMIT" ; TF
- 200 INPUT "FAST OR ACCURATE SOLUTION (F/A) " ; A$
- 210 IF A$ = "A" THEN K = 1000
- 220 IF A$ >< "A" THEN K = 100
- 230 TD = TF/K
- 240 REM STATE VARIABLE INTEGRATION LOOP
- 250 FOR J = 0 TO K : T = TD*J
- 260 FB = 0 : GOSUB 820
- 270 FOR I = 1 TO N : FB = FB+X(1,I)*B(I) : NEXT I
- 280 X(1,0) = (1/B(0))*(EI-FB)
- 290 FOR I = 1 TO N : X(1,I) = X(0,I)+0.5*(X(1,I-1)+X(0,I-1))*TD
- 300 X(0,I-1) = X(1,I-1) : NEXT I
- 310 X(0,N) = X(1,N)
- 320 EO(J) = 0
- 330 FOR I = 0 TO N : EO(J) = EO(J)+A(I)*X(1,I) : NEXT I
- 340 IF EO(J) > MA THEN MA = EO(J) : TM = T
- 350 IF EO(J) < MI THEN MI = EO(J) : TI = T
- 360 NEXT J
- 370 REM DISPLAY SELECT
- 380 INPUT "GRAPHIC PLOT (Y/N) " ; G$
- 390 IF G$ = "Y" THEN 590
- 400 INPUT " DISPLAY ONLY THE MAXIMUM - MINIMUM (Y/N) " ; M$
- 410 IF M$ = "Y" THEN 740
- 420 Z = 1
- 430 PRINT "VALUE" , "TIME"
- 440 FOR I = 0 TO 100
- 450 IF K > 100 THEN J = I*10
- 460 IF K = 100 THEN J = I
- 470 T = TD*J : PRINT EO(J) , T
- 480 Z = Z + 1
- 490 IF Z = 15 THEN PRINT " PRESS ENTER TO CONTINUE" ; : INPUT Z$
- 500 IF Z = 15 THEN Z = 0
- 510 NEXT I
- 530 PRINT : PRINT "MAXIMUM = " ; MA , "TIME" ; TM
- 540 PRINT "MINIMUM =" ; MI , "TIME" ; TI
- 550 INPUT "DO YOU WISH A NEW PLOT (Y/N)" ; Y$
- 560 IF Y$ = "N" THEN END
- 570 MI = 0 : MA = 0 : TM = 0 : TI = 0 : FOR I=0 TO K : EO(I) = 0 : NEXT I
- 580 FOR I = 0 TO N : X(0,I) = 0 : X(1,I) = 0 : NEXT I : GOTO 180
- 590 REM VIDEO DISPLAY ROUTINE
- 600 CLS:
- 610 FOR I = 27 TO 127
- 620 SET(I,20)
- 630 IF (I-27)/10 = INT((I-27)/10) THEN SET(I,19) : SET(I,21)
- 640 NEXT I
- 650 FOR I = 0 TO 40
- 660 SET(27,I)
- 670 IF I/2 = INT(I/2) THEN SET(26,I) : SET(28,I)
- 680 NEXT I
- 690 IF MA >= ABS(MI) THEN SY = MA
- 700 IF MA < ABS(MI) THEN SY = ABS(MI)
- 710 SM = -SY : PRINT, SY ; : PRINT, SM ;
- 720 PRINT*896, "TRANSIENT RESPONSE TIME BASE" ; IF ; "SECONDS" ;
- 730 FOR I = 0 TO 100
- 740 IF K = 1000 THEN J = 10*I
- 750 IF K >< 1000 THEN J = I
- 760 U = 27 + I : V = 20 - INT (EO(J)*20/SY)
- 770 SET (U,V)
- 780 NEXT I
- 790 PRINT, "DO YOU WISH A NEW PLOT (Y/N) " ; : INPUT Y$
- 800 IF Y$ = "Y" THEN CLS : GOTO 570
- 810 END
- 820 EI=1
- 830 IF J < 1 THEN EI = 1/TD
- 840 REM ****** IF J > = 1 THEN EI = 0
- 850 RETURN
-