LINUX.ORG.RU
ФорумTalks

А вот еще задачка на геометрию


0

0

дан многоугольник на плоскости с координатами вершин. требуется найти координаты точки внутри него, такой, что расстояние от нее до вершин многоугольника приблизительно одинаково (дисперсия расстояний до вершин многоугольника минимальна)

★★★★★

не уверен что она хотя бы относительно просто алгоритмически решается для произвольного многоугольника - проблема будет с тем чтобы точка была не только на равном удалении но и чтобы находилась внутри...

vahvarh ★★★
()

А если плоскость не плоская?

anonymous
()

Дисперсия расстояний - функция от координат точки, простая, но недостаточно для того, чтобы в общем случае иметь минимум, который считается точно; численное решение получить елементарно - производные этой функции считаются просто, а дальше хоть двухмерным методом Ньютона.

grob ★★★★★
()
Ответ на: комментарий от vahvarh

> не уверен что она хотя бы относительно просто алгоритмически решается для произвольного многоугольника

Да вот как раз решается она просто.

xi, yi -- координаты точек. x, y -- координаты нашей точки

Невязка: S = sum[ (x - xi)**2 + (y - yi)**2 ];

Находим минимум по x и y. dS/dx = 2 * sum[ x - xi ] = 0; следовательно x = sum[xi]/n; аналогично y = sum[yi]/n; Усё.

balodja ★★★
()
Ответ на: комментарий от Xellos

хз, лично я такое в детсаду еще изучал, в яслях начинали

anonymous
()
Ответ на: комментарий от balodja

Фигня какая-то получается в твоём решении. Ето ты "центр масс" находишь. А нужно немного другое. Допустим у нас треугольник с координатами (0;0), (4;0) и (2;4) (равнобедренный такой треугольник). Так по твоему решению получится, что исвомая точка будет ниже, чем должна быть. И чем больше точек на оси (N;0), тем ниже эта точка будет.

anonymous
()
Ответ на: комментарий от balodja

или вот ещё - представь себе окружность. На одной её половине расставлены много вершин, и на другой стоит только одна - максимально удалена от всех. Искомая точка - это центр окружности, а в предлагаемом тобою решении он будет опять же не там где надо :)

тут нужно что-то вроде:
1. Пусть имеем N вершин
2. квадрат расстояния от A до B : F(A,B) = (Xa-Xb)**2 + (Ya-Yb)**2
3. Искома точка - X
4. Состовляем и решаем систему уравнений типо F(X,1) = F(X,2) = F(X,3)=...

Вроде бы как-то так... 

anonymous
()
Ответ на: комментарий от anonymous

Хотя здесь не учтено, что этой точки может и не быть.... где-то надо производную брать... :)

anonymous
()
Ответ на: комментарий от balodja

Да, конечно фигня. Тут невязка должно быть другой. Я решил задачу о максимальной близости конечной точки, а не о равноудаленности.

Ну, значит невязка должно быть такой: S = sum[ ( (x - xi)**2 + (y - yi)**2 - l**2)**2 ]; и минимизировать уже надо по x, y и l. Удачи.

balodja ★★★
()
Ответ на: комментарий от anonymous

Большими буквами: X, Y и L.

P.S. Смени шрифт в браузере.

balodja ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.