[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 76

 
Mathemat:

К прямой можно провести всегда единственный перпендикуляр. Он и будет указывать расстояние от точки до прямой.

К окружности от заданной точки - почти всегда два "расстояния":


От точки А до окружности в данном случае - это АВ и АС. И какое из них выбрать как "правильное" - неочевидно.

Если решаем задачу минимизации, то можно выбрать минимальное из двух. Похоже, я немного поторопился с выводами. Сейчас переформулирую задачу и напишу алгоритм решения, минут 5-10.
 
alsu:
решений может возникать больше, чем одно, если не бесконечное множество. Требуется уточнение условий.
Необходимо найти координаты центра окружности, при котором расстояние от трех точек до окружности САМОЕ минимальное. Слово САМОЕ означает, что другого варианта, где это расстояние "еще минимальнее", просто нет. А это и есть единственное решение.
 
alsu: Если решаем задачу минимизации, то можно выбрать минимальное из двух.
Минимизации какой суммы - суммы расстояний или суммы квадратов? Я до сих пор не получил ответ от автора.
 
atztek:
МТ4 может Вам спокойно выдать Ask=1.45612121212 вместо 1.4561, но сам он (играет роль лишь при работе с ордерами) не в состоянии "понять" то что сотворил.
Чтобы исправить используют функцию (пример для Ask):

NormalizeDouble(Ask, Digits)

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

Не все значения, а значения цен - цена установки отложенного ордера, цена открытия рыночной позиции, СтопЛосс и ТейкПрофит.

А то ж можно понять чересчур прямолинейно и нормализовать ... комментарий например :)

 
Mathemat:
Минимизации какой суммы - суммы расстояний или суммы квадратов? Я до сих пор не получил ответ от автора.

 
Mathemat:

К прямой можно провести всегда единственный перпендикуляр. Он и будет указывать расстояние от точки до прямой.

К окружности от заданной точки - почти всегда два "расстояния":


От точки А до окружности в данном случае - это АВ и АС. И какое из них выбрать как "правильное" - неочевидно.


Конечно же AB.
 

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

Elenn: Конечно же AB.

Разумеется, АВ, кто же спорит - при нарисованном рисунке.

Вот и представьте, что будет происходить при попытке решения задачи методом небольших движений окружности среди этих трех точек. Это самое "конечно же АВ" будет все время перескакивать с одной "ветки" на другую. ОК, посмотрим, как Алексей справится.

 

Итак, условие в удобоваримой форме:

Даны N попарно несовпадающих точек на плоскости. Задача состоит в том, чтобы для любых трех точек из набора найти окружность, сумма квадратов расстояний до которой от данных трех точек были бы минимальной. После этого из всех C(N,3) окружностей следует выбрать ту (те), для которой(ых) искомая сумма квадратов расстояний до "своих" точек оказалась меньше остальных.

Решение.

Минимальное из расстояний от данной точки до окружности вычисляется достаточно просто. Если на рисунке Алексея координаты точки А - (xA,yA), а координаты центра окружности (x0,y0), то

d = |r - sqrt((xA-x0)^2 + (yA-y0)^2)|,

где r - радиус окружности, причем это выражение корректно как для точек А, лежащих за пределами окружности, так и внутри нее. Для трех точек имеем три таких уравнения, в каждом - 3 неизвестных параметра (xA, yA, r). Дифференцируя сумму трех d по каждому из них, получаем три уравнения, решая которые, находим искомые параметры.

Последний шаг - для каждой тройки рассчитать соответствующую сумму и выбрать минимальную.

Кстати, ввиду нелинейности уравнений советую решать задачу численно, с аналитикой тут делать нечего.

 

Сложность задачи быстро увеличивается с ростом N, т.к. требуется рассчитать и перебрать N*(N-1)*(N-2)/6 окружностей (56 в случае N=8)

 
alsu: Сложность задачи быстро увеличивается с ростом N, т.к. требуется рассчитать и перебрать N*(N-1)*(N-2)/6 окружностей (56 в случае N=8)
Ой, откуда ты это N! / ( (N-3)!*3! ) взял?
Причина обращения: