1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM       SLOPE:  FINDS DERIVATIVES
4  REM
5  REM        36626 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
100  REM SECANT SLOPE OF A CURVE - Q. J. O'CONNOR  8-12-68
101  REM REVISED 8-7-70 (D. PESSEL)  (COMBINATION OF SLCUQ AND DIFFQ) 
102  REM IMPORTANT VARIABLES:  S-SECANT SLOPE; P-PERCENT CHANGE;
103  REM D-CHANGE IN X; Y-CHANGE IN Y 
105  LET S1=0
110  PRINT TAB(10);"SECANT SLOPE OF A CURVE - THE DERIVATIVE"
120  PRINT 
130  PRINT "THIS PROGRAM CONSIDERS A FUNCTION OF X (Y=F(X)) WHICH IS"
131  PRINT "DIFFERENTIABLE AT X=A AND AT ALL POINTS IN THE INTERVAL"
132  PRINT "(A,A+1).  THE VALUE OF THE DERIVATIVE AT X=A IS"
133  PRINT "APPROXIMATED THROUGH SECANT SLOPES."
134  PRINT 
139  PRINT "AFTER THE PROGRAM STOPS, TYPE IN THE FOLLOWING:"
140  PRINT "(END EACH LINE, INCLUDING 'RUN', WITH A 'CARRIAGE RETURN')"
141  PRINT 
142  PRINT "          1 GO TO 300"
143  PRINT "          300 DEF FNY(X)=....(YOUR FUNCTION OF X)...."
145  PRINT "          RUN"
146  PRINT 
147  PRINT "FOR EXAMPLE, TO FIND THE SLOPE OF THE EQUATION Y=X^3"
148  PRINT "YOU WOULD TYPE AS FOLLOWS:"
149  PRINT 
150  PRINT "          1 GO TO 300"
151  PRINT "          300 DEF FNY(X)=X^3"
153  PRINT "          RUN"
154  PRINT 
155  PRINT "YOU MIGHT TRY THAT AS YOUR FIRST RUN."
156  PRINT "FOR SUBSEQUENT RUNS, YOU NEED ONLY CHANGE LINE 300 FOR"
157  PRINT "A NEW FUNCTION, FOLLOWED BY 'RUN'."
160  STOP 
290  REM CALCULATION OF SLOPE AND PRINTOUT
300  DEF FNY()=^3
305  PRINT "FOR WHAT VALUE OF A IS THE SLOPE TO BE EVALUATED";
306  INPUT A
310  PRINT 
311  PRINT "'CHANGE IN X' IS THE DISTANCE FROM 'A', AND 'CHANGE IN Y'"
312  PRINT "IS THE DISTANCE FROM 'F(A)' UPON WHICH THE SLOPE IS CALCU";
313  PRINT "LATED."
316  PRINT 
317  PRINT 
320  PRINT "CHANGE IN X","CHANGE IN Y","SECANT SLOPE","% CHANGE IN SLOPE"
321  PRINT "------ -- -","------ -- -","------ -----","- ------ -- -----"
400  LET S1=0
410  FOR N=0 TO 11
420  LET D=2^N
430  LET Y=FNY(A+1/D)-FNY(A)
440  LET S=D*Y
444  IF S1>0 THEN 447
445  PRINT "1/"D,Y,S,"NO PREVIOUS VALUE"
446  GOTO 455
447  LET P=((ABS(S1-S))/S1)*100
450  PRINT "1/"D,Y,S,P
455  LET S1=S
460  NEXT N
470  PRINT 
480  PRINT "*****"
490  PRINT 
500  PRINT "DO YOU WISH TO USE A DIFFERENT VALUE OF X (1-YES, 0-N0)";
501  INPUT Q2
502  IF Q2>0 THEN 305
510  PRINT "TO CHANGE YOUR FUNCTION SEE THE INSTRUCTIONS."
520  PRINT "IF YOU ARE FINISHED, TYPE '1', AND THE 'RETURN' KEY"
530  PRINT "AFTER THE PROGRAM STOPS."
540  END 
