# cambridgetempFourier.frink

``` // 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.)  You would think that it would probably be better // and faster to remove more terms, but when you remove too many high and // low terms, the Fourier series creates unreliable high and low temperatures. cambridgeTemp[date] := {    startOfYear = beginningOfYear[date, "US/Eastern"]    // t is the time elapsed since the beginning of the year, as a unit with    // dimensions of time.  We can thus get continuous variations over the    // course of a day.    t = date - startOfYear        /* The coefficients below can be converted into the period of each       oscillation.  For example, the term with the coefficient 1/(8784 hours)       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 hours) corresponds to a period of (8784 hours)/1       or 366 days.       The next-largest coefficient with coefficient 366/(8784 hours)       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!)       This gives a daily swing of +/- 9.25 degrees F around the daily average.       This means that the average daily temperature varies about 18.5 degrees       F from coldest to hottest.       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.0998 degrees F (see the component with frequency of         1/(8784 hours)),       * the daily temerature varies around the daily average by plus and minus         9.25 degrees F  (see the component with frequency of 366/(8784 hours),         which corresponds to a period of (8784 hours)/366 which is equal to         24 hours.)       * Interestingly, the third-largest component has a period of         (8784 hours) / 732, which is 12 hours or 1/2 of a day.         (Previous versions of this file got the calculation wrong and stated          that the period was 12 days.  12 hours is much less surprising.)    */    return F[57.942890 +    21.099806 cos[2 pi 1/(8784 hours) t - -2.906732] +    1.356891 cos[2 pi 2/(8784 hours) t - 2.233304] +    1.336084 cos[2 pi 3/(8784 hours) t - 2.193206] +    0.223166 cos[2 pi 4/(8784 hours) t - -1.090373] +    0.521739 cos[2 pi 5/(8784 hours) t - 1.560452] +    0.492775 cos[2 pi 6/(8784 hours) t - 1.439721] +    0.263230 cos[2 pi 8/(8784 hours) t - 0.417370] +    0.556417 cos[2 pi 10/(8784 hours) t - 2.246992] +    0.527294 cos[2 pi 11/(8784 hours) t - 1.969223] +    0.254602 cos[2 pi 13/(8784 hours) t - -2.251578] +     0.217195 cos[2 pi 16/(8784 hours) t - -0.332239] +    0.316010 cos[2 pi 17/(8784 hours) t - 0.773907] +    0.444743 cos[2 pi 18/(8784 hours) t - 2.923433]+     0.265131 cos[2 pi 19/(8784 hours) t - 3.096506] +    0.386864 cos[2 pi 22/(8784 hours) t - 2.064502] +    0.213935 cos[2 pi 23/(8784 hours) t - 3.138032] +    0.209864 cos[2 pi 25/(8784 hours) t - -2.698274] +    0.210136 cos[2 pi 26/(8784 hours) t - -0.895948] +    0.386686 cos[2 pi 28/(8784 hours) t - -0.020524] +    0.263972 cos[2 pi 29/(8784 hours) t - -1.972257] +    0.273588 cos[2 pi 30/(8784 hours) t - -1.537358] +    0.382904 cos[2 pi 31/(8784 hours) t - -0.290935] +    0.459307 cos[2 pi 32/(8784 hours) t - 1.758215] +    0.248827 cos[2 pi 33/(8784 hours) t - 2.639307] +    0.321330 cos[2 pi 34/(8784 hours) t - 0.734143] +    0.261203 cos[2 pi 36/(8784 hours) t - -0.526883] +    0.382089 cos[2 pi 40/(8784 hours) t - 1.726138] +    0.277952 cos[2 pi 42/(8784 hours) t - -1.709813] +    0.351550 cos[2 pi 47/(8784 hours) t - -2.988918] +    0.228715 cos[2 pi 50/(8784 hours) t - 0.349665] +    0.290932 cos[2 pi 55/(8784 hours) t - -1.062905] +    0.250276 cos[2 pi 56/(8784 hours) t - 0.899870] +    0.215393 cos[2 pi 57/(8784 hours) t - 1.793273] +    0.345179 cos[2 pi 62/(8784 hours) t - -0.519825] +    0.208761 cos[2 pi 63/(8784 hours) t - -1.109292] +    0.246095 cos[2 pi 73/(8784 hours) t - -0.547546] +    0.297484 cos[2 pi 76/(8784 hours) t - -0.249699] +    0.223039 cos[2 pi 79/(8784 hours) t - -2.698298] +    0.297275 cos[2 pi 87/(8784 hours) t - -1.849753] +    0.281730 cos[2 pi 100/(8784 hours) t - 1.104291] +    0.299084 cos[2 pi 113/(8784 hours) t - -2.426574] +    0.242557 cos[2 pi 363/(8784 hours) t - -2.234784] +    0.283761 cos[2 pi 364/(8784 hours) t - 1.835604] +    0.429462 cos[2 pi 365/(8784 hours) t - 2.729831] +    9.249708 cos[2 pi 366/(8784 hours) t - -0.555028] +    1.055960 cos[2 pi 367/(8784 hours) t - 1.931133] +    0.392247 cos[2 pi 368/(8784 hours) t - -2.936348] +    0.243464 cos[2 pi 369/(8784 hours) t - 1.750387] +    0.426907 cos[2 pi 731/(8784 hours) t - -1.320502] +    1.805608 cos[2 pi 732/(8784 hours) t - -2.232321] +    0.299388 cos[2 pi 733/(8784 hours) t - -2.079456] +    0.369901 cos[2 pi 1098/(8784 hours) t - -0.200385] +    0.228087 cos[2 pi 1099/(8784 hours) t - 2.390151] +    0.280292 cos[2 pi 1464/(8784 hours) t - -1.966137]] } ```

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 18289 days, 2 hours, 0 minutes ago.