 
 
 
17.1.4  Trigonometric interpolation
The triginterp
command computes a trigonometric polynomial which interpolates given data.
- 
triginterp takes four arguments:
- 
L, a list of numbers.
- a, a number (the beginning of an interval).
- b, a number (the end of the interval).
- x, the name of a variable.
 The last three arguments can also be given as x=a..b.
- triginterp(L,a,b,x) or
triginterp(L,x=a..b)
returns the trigonometric polynomial that interpolates data given in the list
L. It is assumed that the list L contains
ordinate components of the points with equidistant abscissa components
between a and b such that the first element of L
corresponds to a and the last element to b.
L may be a list of experimental measurements
of some quantity taken at regular intervals, with the first
observation at time t=a and the last observation at time
t=b. The resulting trigonometric polynomial has period
T=n/n−1(b−a), where n=size(L)
is the number of observations.
As an example, assume that the following data is obtained by
measuring the temperature every three hours during one day:
| Hour of the day | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 
| Temperature (∘C) | 11 | 10 | 17 | 24 | 32 | 26 | 23 | 19 | 
 
Suppose that an estimate of the temperature at 13:45 is
required. To obtain a trigonometric interpolation of the data:
| tp:=triginterp([11,10,17,24,32,26,23,19],x=0..21) | 
|  | |  | |  |  | + |  |  | ⎛ ⎜
 ⎝
 | −21 | √ |  | −42 | ⎞ ⎟
 ⎠
 | cos | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | + |  |  | ⎛ ⎜
 ⎝
 | −11 | √ |  | −12 | ⎞ ⎟
 ⎠
 | sin | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | + |  | cos | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | − | 
 |  |  |  |  |  |  |  |  |  |  |  | |  |  | sin | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | + |  |  | ⎛ ⎜
 ⎝
 | 21 | √ |  | −42 | ⎞ ⎟
 ⎠
 | cos | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | + |  |  | ⎛ ⎜
 ⎝
 | −11 | √ |  | +12 | ⎞ ⎟
 ⎠
 | sin | ⎛ ⎜
 ⎜
 ⎝
 |  | π  x | ⎞ ⎟
 ⎟
 ⎠
 | + |  | 
 |  |  |  |  |  |  |  |  |  | 
 | 
To plot the interpolant, enter:
| labels=["time","temperature"]; legend=["hours","°C"]; plot(tp,x=0..21) | 
The interpolant is smooth, without oscillations, and appears realistic in
the given context. Now a temperature at 13:45 can be approximated by
the value of tp for x=13.75:
 
 
