Path: csiph.com!news.mixmin.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.programming Subject: Re: Another little puzzle Date: Sun, 01 Jan 2023 01:24:27 +0000 Organization: A noiseless patient Spider Lines: 69 Message-ID: <87tu1bgi7o.fsf@bsb.me.uk> References: <87tu1diu2s.fsf@bsb.me.uk> <864jtdtkt5.fsf@linuxsc.com> <87o7rlhtsv.fsf@bsb.me.uk> <878rioifnh.fsf@bsb.me.uk> <868rinskhk.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: reader01.eternal-september.org; posting-host="f378404b147b12236a02e89857bb1e08"; logging-data="1238596"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18XyJGWKrbJqzmvh7oihlgMyNxIzAd9xec=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cancel-Lock: sha1:7qNjBpK7Yn4EnGiuGApc7ErpJ3s= sha1:LcgaCTmkSr32jRYanBG5ibI+/No= X-BSB-Auth: 1.595200ba0aaa81df5027.20230101012427GMT.87tu1bgi7o.fsf@bsb.me.uk Xref: csiph.com comp.programming:16205 "Dmitry A. Kazakov" writes: > On 2022-12-31 15:42, Tim Rentsch wrote: >> Ben Bacarisse writes: > >>> For the "vector average", we convert the t(i) to unit vectors u(i) and >>> we calculate the mean if the u(i) to get a vector m. The "average", A, >>> is just the direction of this vector -- another point on the unit >>> circle. In this case we are minimising the sum of squares of the >>> /chord/ lengths between A and the t(i). >> I think of this approach differently. I take the time values >> t(i) as being unit masses on the unit circle, and calculate the >> center of mass. As long as the center of mass is not the origin >> we can project it from the origin to find a corresponding time >> value on the unit circle (which in my case is done implicitly by >> using atan2()). > > Center of mass of a set of ideal points (particles) and vector average are same: > > CoM = Sum Mi * Ri / Sum Mi > i = 1..n i = 1..n > > Mi = masses, Ri = vectors. If all Mi are same you get > > CoM = Sum Ri / n > i = 1..n > >>> This distinction between arc lengths and chord lengths helps to >>> visualise where these averages differ, and why the conventional >>> average may seem more intuitive. >> Interesting perspective. I wouldn't call them chord lengths >> because I think of a chord as being between two points both on >> the same circle, and the center of mass is never on the unit >> circle (not counting the case when all the time values are the >> same). Even so it's an interesting way to view the distinction. > > Arc length is proportional to angle: > > L = Rα, R is radius, α is angle in radians. > > Averaging arcs is equivalent to averaging angles. Sure. I'm certain Tim knows that! The question is what "average" are we interested in. An average, angle A, minimises Sum_{i=1,n} distance(A, t(i))^2 for some measure of distance. The most common circular (or spherical) average, sums the unit vectors and, where possible, projects the resultant vector onto the unit circle. This average, it turns out, minimises the sum of squares of the chords between A and the t(i). Another average, which is more complicated to calculate, minimises the sum of squares of the arc lengths or, as you say, the angular distances between A and the t(i). >> Now that I think about it, finding the point that minimizes the >> great circle distances squared would be at least computationally >> unpleasant. > > See above, it is just angles to average. Yes, but that's hard. The simple average (just sum the unit vectors) does not minimise the sum of squares of the angle differences, and, despite being a reasonable concept, is not discussed in any of the text I've been able to find. -- Ben.