Вы бы вычисляли собственные векторы матрицы 2х2, что можно сделать с помощью нескольких простых формул, так что это не так сложно. В псевдокоде:
// sums are over all points
b = -(sum(x * x) - sum(y * y)) / (2 * sum(x * y))
evec1_x = b + sqrt(b ** 2 + 1)
evec1_y = 1
evec2_x = b - sqrt(b ** 2 + 1)
evec2_y = 1
Вы можете даже сделать это, суммируя только некоторые из точек, чтобы получить оценку, если вы ожидаете, что выбранное вами подмножество точек будет представлять полный набор.
Редактировать : Я думаю, что x и y должны быть переведены в среднее значение нуля, то есть вычесть среднее из всех x, y сначала (eed3si9n) .