hp41programs

Meteo

Meteorology & Markov Chains for the HP-41


Overview
 

-We assume that the weather on day j+1 only depends on the weather on day j  ( Markov property )
-This is perhaps not completely true but it's a good approximation.
-The following routine simply computes the Transition Matrix from observations of N consecutive days

-The weather is defined by n states, for example  1 = sunny day , 2 = cloudy ( without rain ) , 3 = rainy day
  ( do not use 0 )
 

Program Listing
 
 

Data Registers:           •  R00 = n = number of states                     ( Registers R00 and Rbb thru Ree are to be initialized before executing "METEO" )

                                      •  Rbb = x1  ......................  •  Ree = xN        bb >  n2+n                                Rn2+1 to Rn2+n:  temp

        >>>> When the program stops,  R01 thru Rn2 contain the elements of the Transition Matrix

Flags: /
Subroutines: /

-Lines 02 and 53-54  are only useful to save  bbb.eee   otherwise, they can be deleted
-If you don't have an HP-41CX, replace line 10 by  SIGN  CLX  LBL 00  STO IND L  ISG L  GTO 00
 
 

01  LBL "METEO"
02  STO M     
03  RCL 00
04  X^2
05  LASTX
06  +
07   E3
08  /
09  ISG X
10  CLRGX 
11  X<>Y
12  LBL 01
13  RCL IND X   
14  ENTER^
15  ISG Z
16  X=0?
17  GTO 02
18  RCL 00
19  ST* Y
20  -
21  RCL IND Z
22  +
23  X<>Y
24  RCL 00
25  X^2
26  +
27  SIGN
28  ST+ IND Y    
29  ST+ IND L
30  R^
31  GTO 01
32  LBL 02
33  RCL 00
34  ENTER^
35  X^2
36  .1
37  %
38  +
39  ST+ Y
40  LBL 03
41  RCL 00          
42   E3
43  /
44  -
45  LBL 04
46  RCL IND Z   
47  ST/ IND Y
48  RDN
49  DSE X
50  GTO 04
51  DSE Y
52  GTO 03
53  CLX
54  X<> M
55  END

 
  ( 87 bytes )
 
 

      STACK        INPUT      OUTPUT
           X       bbb.eee       bbb.eee

   with  bbb > n2+n

Example:   You observe the weather during 21 consecutive days, it yields:   112212333231122322121   ( 1 = Sun , 2 = Clouds without Rain , 3 = Rain )

  n = 3  STO 00  and store these 21 integers into registers  R13 R14 .............. R33  control number = 13.033

  13.033  XEQ "METEO"  >>>>  13.035      --- Execution time = 15s ---

  And we get:

      R01   R04   R07        1/3   1/3   1/5
      R02   R05   R08   =   2/3   1/3   2/5   =   Transition Matrix  =  T
      R03   R06   R09         0     1/3   2/5

-What will be tomorrow's weather ?

  1- If today is a sunny day, look at the 1st column:

         the probability that tomorrow will be sunny is 1/3
         the probability that tomorrow will be cloudy is 2/3
         the probability that tomorrow will be  rainy is 0

  2- If today is a cloudy day, look at the 2nd column:

        the probability that tomorrow will be sunny is 1/3
        the probability that tomorrow will be cloudy is 1/3
        the probability that tomorrow will be  rainy is 1/3

  3- If today is a rainy day, look at the 3rd column:

        the probability that tomorrow will be sunny is 1/5
        the probability that tomorrow will be cloudy is 2/5
        the probability that tomorrow will be  rainy is 2/5

Notes:

-The sum of the elements of each column is always 1

-Limit of Tk as k tends to infinity =

       0.3    0.3    0.3
      0.45  0.45  0.45
      0.25  0.25  0.25

-Using one register to store just a one-digit number is of course wasteful.
-With the following variant, you can store the data by groups of up to 10 states, provided that n < 10

-If you don't have an HP-41CX, replace line 16 by  SIGN  CLX  LBL 00  STO IND L  ISG L  GTO 00
 
 

01  LBL "METEO"
02  STO N
03  INT
04  DSE X
05  LASTX
06  FRC
07  RCL 00
08  X^2
09  LASTX
10  +
11   E3
12  ST* Z
13  ST/ T
14  /
15  ISG X
16  CLRGX  
17  RDN
18  +
19  STO M
20  RCL IND X   
21  STO Y
22  10
23  ST/ Z
24  MOD
25  X<>Y
26  LBL 01
27  INT
28  X=0?
29  GTO 02
30  RCL X
31  10
32  ST/ Z
33  MOD
34  STO O
35  RCL 00
36  ST* Y
37  -
38  ST+ Z
39  SIGN
40  ST+ IND Z
41  RCL 00
42  X^2
43  RCL O
44  +
45  X<>Y
46  ST+ IND Y    
47  LASTX
48  R^
49  GTO 01
50  LBL 02
51  DSE M
52  X<0?
53  GTO 02
54  CLX
55  RCL IND M  
56  GTO 01
57  LBL 02
58  RCL 00
59  ENTER^
60  X^2
61  .1
62  %
63  +
64  ST+ Y
65  LBL 03
66  RCL 00
67   E3
68  /
69  -
70  LBL 04
71  RCL IND Z   
72  ST/ IND Y
73  RDN
74  DSE X
75  GTO 04
76  DSE Y
77  GTO 03
78  RCL N
79  CLA
80  END

 
   ( 127 bytes )
 
 

      STACK        INPUT      OUTPUT
           X       bbb.eee       bbb.eee

   with  bbb > n2+n

Example:   With the same observations,   112212333231122322121  may be stored as follows:

    112212333   STO 13                    1122123332   STO 13
    231122322   STO 14         or        3112232212   STO 14        and many other ways
          121         STO 15                             1            STO 15

-In both cases,   13.015   XEQ "METEO"  gives  13.015  ( in 18 seconds )  and the same transition matrix.
 

Note:

 The weather model may of course be improved, for instance:

   1 = Sun without wind
   2 = Sun & wind
   3 = Cloud ( without rain ) without wind
   4 = Cloud & wind ( without rain )
   5 = Rain without wind
   6 = Rain & wind

 ... and so on ...