Monday, January 28, 2019

HP 71B: Linear Regression, Open Channel, Sunrise/Sunset, Musical Mini-Piano

HP 71B:  Linear Regression, Open Channel, Sunrise/Sunset, Musical Mini-Piano

Feel free to use this pic whenever it's Friday.  Even if it's Monday.  :) 


Linear Regression with a User Keyboard

This program creates a user keyboard with the following keys defined:

[ I ]  Clears the statistics array and variables
[ A ]  Add a data point X,Y: the sample size is shown
[ D ]  Delete a data point X,Y:  the sample size is shown
[ M ] Sample Mean for X and Y data.  Press CONT for mean of Y values.
[ S ] Sums for X and Y data.  Press CONT for sum of Y values.
[ E ]  Standard Deviation for X and Y data.  Press CONT for standard dev. of Y values.
[ R ]  Execute Linear Regression.  A = intercept, B = slope, correlation is calculated, fit to the line Y = A + B*X
[ H ]  Help:  cycles what all the keys do
[ X ] Clears all the user keys, prepares you to go to the next program

PROGRAM STATLIN
689 bytes, 1/26/2019

10 DEF KEY "I", 'RUN 110'
20 DEF KEY "A", 'RUN 200'
30 DEF KEY "D", 'RUN 300'
40 DEF KEY "M", 'RUN 400'
45 DEF KEY "S", 'RUN 440'
50 DEF KEY "E", 'RUN 500'
60 DEF KEY "R", 'RUN 600'
70 DEF KEY "X", 'RUN 700'
75 DEF KEY "H", 'RUN 750'
80 USER ON
90 END

110 DESTROY S,A,B,X,Y,H$,I
120 STAT S(2) @ PRINT "ALL CLEAR"
130 END

200 INPUT "+ X,Y:";X,Y
210 ADD X,Y & DISP "N=";TOTAL(0)
220 END

300 INPUT "- X,Y:";X,Y
310 DROP X,Y & DISP "N=";TOTAL(0)
320 END

400 PRINT "X-BAR=";MEAN(1) @ PAUSE
420 PRINT "Y-BAR=";MEAN(2)
430 END

440 PRINT CHR$(28);"X=";TOTAL(1) @PAUSE
450 PRINT CHR$(28);"Y=";TOTAL(2)
460 END

500 PRINT "sX:";SDEV(1) @ PAUSE
510 PRINT "sY:";SDEV(2)
520 END

600 LR 2,1,A,B
610 PRINT "INT=";A @ PAUSE
620 PRINT "SLP=";B @ PAUSE
630 PRINT "r=";CORR(2,1) @ PAUSE
640 PRINT "Y=";A;"+";B;"X"
650 END

700 PURGE KEYS @ USER OFF
710 PRINT "EXIT COMPLETE"

750 FOR I=1 TO 8
760 READ H$ @ PRINT H$ @ WAIT 1
770 DATA "I: CLEAR","A: ADD","D: DEL","M: MEAN","S: SUMS","E: SDEV","R: A+BX","X: EXIT"
780 NEXT I
790 PRINT "READY." @ END

Example to try:

Data:  X,Y
-5.56, 0.79
-4.30, 0.84
1.86, 1.93
2.24, 2.01
3.95, 2.26

To add data:  (in USER mode) [ A ] -5.56, 0.79 [END LINE] (repeat for all data points)

Results:  n = 5

Mean:
[ M ]  "X-BAR=" -0.362  [ f ] [ + ] (CONT) "Y-BAR=" 1.566

Sums:
[ S ]  "∑X=" -1.81 [ f ] [ + ] (CONT) "∑Y=" 7.83

Standard Deviations:
[ E ] "sX=" 4.26696847891 [ f ] [ + ] (CONT) "sY=" 0.696512742166

Linear Regression:
[ R ] "INT=" 1.62489805306  [ f ] [ + ] (CONT)
"SLP=" 0.162701804029 [ f ] [ + ] (CONT)
"r=" 0.996741950615 [ f ] [ + ] (CONT)
"Y=1.6248905306 + 0.162701804029 X"

Open Channel Parameters

Source: 

Michael R. Lindberg, PE  Civil Engineering Reference Manual for the PE Exam 11th Edition  Professional Publications Inc., Belmont, CA  2008  ISBN-13:  978-1-59126-129-2

The program OPENFLOW calculates the following:

Area
Wetted Perimeter
Hydraulic Radius
Hydraulic Depth
Uniform Section Factor

of conductors of four shapes: rectangle, trapezoid, triangle, and circle.



PROGRAM OPENFLOW
781 bytes, 1/25/2019

10 DESTROY K,D,B,P,R,T,H,W
20 DEGREES
30 DISP "1. RECTANGLE" @ WAIT 1
40 DISP "2. TRAPEZOID" @ WAIT 1
50 DISP "3. TRIANGLE" @ WAIT 1
60 DISP "4. CIRCLE" @ WAIT 1
70 DISP "ELSE. REPEAT" @ WAIT .5
80 INPUT "CHOICE (1-4,E):"; K
90 IF K=1 THEN 1010
100 IF K=2 THEN 2010
110 IF K=3 THEN 3010
120 IF K=4 THEN 4010
130 GOTO 30

1010 INPUT "WIDTH,DEPTH:";W,D
1020 A=D*W @ P=2*D+W @ R=A/P
1030 H=A/W @ S=A*R^(2/3)
1040 GOTO 5010

2010 INPUT "DEPTH:";D
2012 INPUT "WIDTH-LONG:";W
2014 INPUT "WIDTH-SHORT:";B
2016 INPUT "ANGLE:";T
2020 A=D*(B+D/TAN(T)) @ P=B+2*(D/SIN(T)) @ R=A/P
2030 H=A/W @ S=A*R^(2/3)
2040 GOTO 5010

3010 INPUT "WIDTH:";W
3012 INPUT "DEPTH:";D
3014 INPUT "ANGLE:";T
3020 A=D^2/TAN(T) @ P=2*D/SIN(T) @ R=A/P
3030 H=A/W @ S=A*R^(2/3)
3040 GOTO 5010

4010 INPUT "RADIUS:";R
4012 INPUT "ANGLE:";T @ T=PI*T/180
4014 RADIANS
4020 A=1/8*(T-SIN(T))*D^2 @ P=T*D/2 @ R=A/P
4030 H=A/D @ S=A*SQR(D)
4040 GOTO 5010

5010 PRINT "AREA=";A @ PAUSE
5020 PRINT "WET PERIM.=";P @ PAUSE
5030 PRINT "HYD. RADIUS=";R @ PAUSE
5040 PRINT "HYD. DEPTH=";H @ PAUSE
5050 PRINT "SECTION FACTOR=";S
5060 END


Approximate Time of Sunrise and Sunset

Source:

Hewlett Packard "HP-65 Aviation Pac" 1974

The program SUNTIME approximates the time of sunset and sunrise based on a date in a general 365-day calendar, the person's location (longitude (east is negative, west is positive) and latitude (north is positive, south is negative)), and the time zone.

Time Zone Table (United States/Mexico/Canada) 
Hours from GMT:
Hawaii:   Standard and Daylight: -10
Alaska:  Standard: -9, Daylight: -8
Pacific:  Standard: -8, Daylight: -7
Mountain: Standard: -7, Daylight: -6
Central: Standard: -6, Daylight: -5
Eastern: Standard: -5, Daylight: -4

Program SUNTIME
494 bytes, 1/24/2019

10 DESTROY T,E,D,A,Z,G,C
11 DESTROY S,S1,S2,S3
12 DESTROY O1,O2,O3,O,U1,U2,U3,U
14 DEGREES
16 INPUT "MONTH: ";M
20 INPUT "DAY: ";D
26 INPUT "LONG (E/W):D,M,S:";O1,O2,O3
27 O=O1+O2/60+O3/3600
30 INPUT "LAT (S/N):D,M,S:";U1,U2,U3
32 U=U1+U2/60+U3/3600
35 INPUT "TIME ZONE:";Z
40 T=.988*(D-1+30.3*(M-1))
45 E=.123*COS(T+87)-1/6*SIN(2*T+20)
50 C=-23.439*COS(T+10)
55 S=(O-ACOS(-TAN(C)*TAN(U)))/15-E+12+Z
57 S1=IP(S)
59 S2=IP(FP(S)*60)
61 S3=FP(FP(S)*60)*60
65 DISP "Sunrise: ";S1;":";S2;":";S3 @ PAUSE
75 N=(O+ACOS(-TAN(C)*TAN(U)))/15-E+12+Z
77 N1=IP(N)
79 N2=IP(FP(N)*60)
81 N3=FP(FP(N)*60)*60
85 DISP "Sunset: ";N1;":";N2;":";N3

Example:
Time:  January 26  (Month = 1, Day = 26)
Place:  Farifield, CA:   38°15′28″N 122°3′15″W
Time Zone: -8 (Standard)

Inputs:
MONTH: 1
DAY: 26
LONG: 122,3,15
LAT: 38,15,28
TIME ZONE: -8

Results:
Sunrise: 7 : 24 : 19.09497708
Sunset: 17 : 16 : 17.62419468

Musical Mini-Piano

Key map:

[ A ]:  A
[ W ]:  A#
[ S ]: B
[ D ]: C
[ R ]: C#
[ F ]: D
[ T ]: D#
[ G ]: E
[ H ] : F
[ U ]: F#
[ J ]: G
[ I ]: G#
[ K ]: A (higher octave)

[ O ]: One octave higher
[ L ]:  One octave lower

[ P ]: Double the length of the note
[ = ]: Halve the length of the note

[ X ]:  Exit, clears all the user keys

Default octave:  A4 (220 HZ) to A5 (440 Hz)
Default note length:  1/4 second

Program PIANO
743 bytes, 1/27/2019

100 DESTROY A,N,P
110 A=2^(1/12) @ N=0 @ P=0
112 DEF KEY "A", 'BEEP 220.0*2^N,.25*2^P': ! A
114 DEF KEY "W", 'BEEP 233.1*2^N,.25*2^P': ! A#
116 DEF KEY "S'", 'BEEP 246.9*2^N,.25*2^P': ! B
118 DEF KEY "D", 'BEEP 261.6*2^N,.25*2^P': ! C
120 DEF KEY "R", 'BEEP 277.2*2^N,.25*2^P': ! C#
122 DEF KEY "F", 'BEEP 293.7*2^N,.25*2^P': ! D
124 DEF KEY "T", 'BEEP 311.0*2^N,.25*2^P': ! D#
126 DEF KEY "G", 'BEEP 329.6*2^N,.25*2^P': ! E
128 DEF KEY "H", 'BEEP 349.2*2^N,.25*2^P': ! F
129 DEF KEY "J", 'BEEP 392.0*2^N,.25*2^P': ! G
130 DEF KEY "U", 'BEEP 370.0*2^N,.25*2^P': ! G#
132 DEF KEY "I", 'BEEP 415.3*2^N,.25*2^P': ! F
134 DEF KEY "K", 'BEEP 440.0*2^N,.25*2^P': ! A
136 DEF KEY "O", 'N=N+1@ PRINT "OCTAVE UP" ':
138 DEF KEY "L", 'N=N-1 @ PRINT "OCTAVE DOWN" ':
140 DEF KEY "P", 'P=P+1 @ PRINT "NOTE x2" ':
142 DEF KEY "=", 'P=P-1 @ PRINT "NOTE /2" ': 
144 DEF KEY "X", 'RUN 400':
146 USER ON
148 END
400 DESTROY A,N,P
410 PURGE KEYS
420 USER OFF
430 PRINT "EXIT COMPLETE"
440 END

Eddie

All original content copyright, © 2011-2019.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

RPN with HP 15C & DM32: Swapping Items in the Stack

RPN with HP 15C & DM32: Swapping Items in the Stack A New Series Welcome to a new series: RPN with the HP 15C & DM32. ...