Как найти среднее значение комплекта подшипников

Возможный дубликат:
Как рассчитать среднее значение углов?

Если у меня есть набор подшипников от 1 до 360, как я могу найти средний? Обычно, чтобы найти среднее, их все складывают и делят на количество элементов. Проблема здесь в том, что это в случае [1, 359], 2 подшипника приведет к 180, что на самом деле должно быть 360. Есть идеи?


person Kenny    schedule 04.03.2011    source источник


Ответы (3)


Представьте углы как векторы с Norm = 1 и усредните сумму.

x1 = {cos(a),sin(a)}

x2 = {cos(b),sin(b)} 

(x1+x2)/2 = {(cos(a)+cos(b))/2,(sin(a)+sin(b))/2} 

что означает угол для среднего

atan2((sin(a)+sin(b)) /(cos(a)+cos(b)))  

Только будьте осторожны с контролем возможного переполнения, когда знаменатель близок к нулю.

введите описание изображения здесь

person Dr. belisarius    schedule 04.03.2011
comment
Я не уверен, что эта строка верна: atan2 ((sin (a) + sin (b)) / (cos (a) + cos (b))), потому что atan2 принимает два аргумента. - person Kit; 12.02.2020

Из вашего вопроса неясно, что вы пытаетесь определить как «среднее» ... для направлений по кругу нет четкого и очевидного понятия среднего.

Одна интерпретация - это значение x, которое наиболее близко подходит к набору предоставленных значений в смысле наименьших квадратов, где расстояние между двумя подшипниками определяется как наименьший угол между ними. Вот код для вычисления этого среднего:

In[2]:= CircDist[a_, b_] := 180 - Mod[180 + a - b, 360]

In[6]:= Average[bearings_] := 
 x /. NMinimize[
    Sum[CircDist[x, bearings[[i]]]^2, {i, 1, Length[bearings]}], 
    x][[2]]

In[10]:= Average[{1, 359}]

Out[10]= -3.61294*10^-15
person user168715    schedule 04.03.2011
comment
+1 Или, кстати, любое другое определение среднего (гармоническое, геометрическое, арифметическое и т. Д.). Это зависит от того, как вы хотите его использовать. - person Dr. belisarius; 04.03.2011

Итак, что вам нужно, это середина двух подшипников - что произойдет, если у вас есть {90, 270}? Желаемый ответ 0 или 180? Это то, что нужно учитывать .. и что такое средний из трех подшипников?

Вы могли бы сделать следующее:

  • Возьмите первые два подшипника из вашего набора
  • Определите разницу между ними в любом направлении (например, [1, 359] даст 2 градуса в одном направлении и 358 в другом).
  • Если вы хотите, чтобы желаемый угол был посередине самого острого из двух, примите это как свою разницу и добавьте к большей части пары против часовой стрелки (т. Е. 359).
  • Используйте этот подшипник в качестве нового подшипника, а следующий (т.е. 3-й в наборе) в качестве другого подшипника и повторяйте до тех пор, пока все не станут «средними».

Вне всяких сомнений, я не думаю, что это будет справедливо, хотя, вероятно, это смещает его в одном направлении (то есть, возможно, в пользу более поздних значений в вашем наборе).

person chrisb    schedule 04.03.2011