Suppose you are observing the movement of an object on the Earth's surface. At any given moment, you know its current position (in lat/lon coordinates) and three prior positions. Each prior position is separated in time from the one after it by a small but variable number of seconds (say several seconds). For emphasis, the time differences can be different. Given this information, I want to approximate the current speed of the object in, say, miles per hour, minimizing oscillations in the results. This is a sort of problem of backwards finite differences but I'm struggling to get it right. I'm currently using the formula f'(t_0) = [11 * f(t_0) - 18 * f(t_1) + 9 * f(t_2) - 2 * f(t_3)] / 6h derived from the Taylor series where t_3 < t_2 < t_1 < t_0 and h is the average of the successive time deltas. I'm applying this separately to the latitudes and longitudes to get a tangent vector in lat/lon coordinates per unit time, then converting this into a great circle distance. This approach is highly inaccurate. I see far fewer oscillations just doing the much more naive [(great circle distance between current position and last position) / (time between current position and last position)], ignoring the extra positions I have. This approach still has the occasional oscillation though, and for other reasons I'd like to get a smoother approximation. Any ideas?