cambridgetempFourier.frink

View or download cambridgetempFourier.frink in plain text format


// This file gives the average temperature in Cambridge, MA for any moment of
// the year.   It's based on some Fourier analysis I did of temperatures over
// a 30-year span.  Thanks to Sarang Gupta and David Bergman for providing
// raw temperature data.  It includes all Fourier terms with magnitude greater
// than 0.2 degree F.  This data is very likely overfitted to the noise in the
// original data (which you'll see if you plot it using
// plotCambridgeTemp.frink.)  It would probably be better and faster to remove
// more terms.

// 

cambridgeTemp[date] :=
{
   yearfmt = ### yyyy ###
   yearString = date -> [yearfmt, "Eastern"]
   startOfYear = parseDate["$yearString-01-01 00:00 Eastern"]
   //  is the number of hours since the beginning of the year (as a floating-
   // point number.  This includes variations over the course of a day.)
   
   d = (date - startOfYear) / hours

   /* The coefficients below can be converted into the period of each
      oscillation.  For example, the term with the coefficient 1/8784
      corresponds to a frequency of 1/(8784 hours) or once/year.  (There are
      8784 hours in 366 days.)  The period can be obtained by inverting.
      The coefficient 1/8784 corresponds to a period of (8784 hours/1) or 366
      days.

      The next-largest coefficient with coefficient 366/8784 corresponds to
      a frequency of 366/(8784 hours) or a period of (8784 hours)/366 or 1 day,
      (which is what you would hope you would see!)

      So, we see that:

      * the average temperature over a whole year is 57.94 F,

      * the annual temperature average varies around this by plus and
                      minus 21.10 degrees,

      * the daily component of variation varies around the daily average by
        plus and minus 9.250 degrees.

      * Interestingly, the third-largest component has a period of 8784/732,
        which is 12 days.  What's up with that?
   */

   return F[57.942890 +
   21.099806 cos[2 pi 1/8784 d - -2.906732] +
   1.356891 cos[2 pi 2/8784 d - 2.233304] +
   1.336084 cos[2 pi 3/8784 d - 2.193206] +
   0.223166 cos[2 pi 4/8784 d - -1.090373] +
   0.521739 cos[2 pi 5/8784 d - 1.560452] +
   0.492775 cos[2 pi 6/8784 d - 1.439721] +
   0.263230 cos[2 pi 8/8784 d - 0.417370] +
   0.556417 cos[2 pi 10/8784 d - 2.246992] +
   0.527294 cos[2 pi 11/8784 d - 1.969223] +
   0.254602 cos[2 pi 13/8784 d - -2.251578] + 
   0.217195 cos[2 pi 16/8784 d - -0.332239] +
   0.316010 cos[2 pi 17/8784 d - 0.773907] +
   0.444743 cos[2 pi 18/8784 d - 2.923433] +
   0.265131 cos[2 pi 19/8784 d - 3.096506] +
   0.386864 cos[2 pi 22/8784 d - 2.064502] +
   0.213935 cos[2 pi 23/8784 d - 3.138032] +
   0.209864 cos[2 pi 25/8784 d - -2.698274] +
   0.210136 cos[2 pi 26/8784 d - -0.895948] +
   0.386686 cos[2 pi 28/8784 d - -0.020524] +
   0.263972 cos[2 pi 29/8784 d - -1.972257] +
   0.273588 cos[2 pi 30/8784 d - -1.537358] +
   0.382904 cos[2 pi 31/8784 d - -0.290935] +
   0.459307 cos[2 pi 32/8784 d - 1.758215] +
   0.248827 cos[2 pi 33/8784 d - 2.639307] +
   0.321330 cos[2 pi 34/8784 d - 0.734143] +
   0.261203 cos[2 pi 36/8784 d - -0.526883] +
   0.382089 cos[2 pi 40/8784 d - 1.726138] +
   0.277952 cos[2 pi 42/8784 d - -1.709813] +
   0.351550 cos[2 pi 47/8784 d - -2.988918] +
   0.228715 cos[2 pi 50/8784 d - 0.349665] +
   0.290932 cos[2 pi 55/8784 d - -1.062905] +
   0.250276 cos[2 pi 56/8784 d - 0.899870] +
   0.215393 cos[2 pi 57/8784 d - 1.793273] +
   0.345179 cos[2 pi 62/8784 d - -0.519825] +
   0.208761 cos[2 pi 63/8784 d - -1.109292] +
   0.246095 cos[2 pi 73/8784 d - -0.547546] +
   0.297484 cos[2 pi 76/8784 d - -0.249699] +
   0.223039 cos[2 pi 79/8784 d - -2.698298] +
   0.297275 cos[2 pi 87/8784 d - -1.849753] +
   0.281730 cos[2 pi 100/8784 d - 1.104291] +
   0.299084 cos[2 pi 113/8784 d - -2.426574] +
   0.242557 cos[2 pi 363/8784 d - -2.234784] +
   0.283761 cos[2 pi 364/8784 d - 1.835604] +
   0.429462 cos[2 pi 365/8784 d - 2.729831] +
   9.249708 cos[2 pi 366/8784 d - -0.555028] +
   1.055960 cos[2 pi 367/8784 d - 1.931133] +
   0.392247 cos[2 pi 368/8784 d - -2.936348] +
   0.243464 cos[2 pi 369/8784 d - 1.750387] +
   0.426907 cos[2 pi 731/8784 d - -1.320502] +
   1.805608 cos[2 pi 732/8784 d - -2.232321] +
   0.299388 cos[2 pi 733/8784 d - -2.079456] +
   0.369901 cos[2 pi 1098/8784 d - -0.200385] +
   0.228087 cos[2 pi 1099/8784 d - 2.390151] +
   0.280292 cos[2 pi 1464/8784 d - -1.966137]]
}


View or download cambridgetempFourier.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17357 days, 6 hours, 38 minutes ago.