Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2017, 23:23   #1
gogo12
Новичок
Джуниор
 
Регистрация: 16.09.2017
Сообщений: 3
По умолчанию программа для математике

Здравствуйте! Не направите или не подскажите как реализовать идею. Задача заключается в следующем. Есть множество точек в которое необходимо вписать окружность и определить центр окружности и радиус. Через три точки однозначно можно провести окружность эт ясно, если больше то возникает неоднозначность. Я думал через уравнение окружности как то попытаться решить, но не знаю как отбирать точки и как в них вписать окружности. Помоги кто может плиз
gogo12 вне форума Ответить с цитированием
Старый 17.09.2017, 00:17   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от gogo12 Посмотреть сообщение
Через три точки однозначно можно провести окружность эт ясно
А если они лежат на одной прямой?
Вадим Мошев вне форума Ответить с цитированием
Старый 17.09.2017, 00:37   #3
gogo12
Новичок
Джуниор
 
Регистрация: 16.09.2017
Сообщений: 3
По умолчанию

Да это я понимаю, что это является необходимым условием.
gogo12 вне форума Ответить с цитированием
Старый 17.09.2017, 07:29   #4
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Первый шаг, очевидно, выбрать радиусы. Сначала нужно его ограничить его.
Считаем попарно расстояния м-у всеми точками. Берем минимальное и макс. расстояния. Это будут макс и мин ДИАМЕТРЫ, соотв. радиусы = половины.

Далее, берем все возможные радиусы от мин до макс, с каким-то шагом точности. Далее, для каждого такого радиуса из каждой точки строим уравнение окружности c центром в этой точке.

Далее ищем пересечения всех окружностей с одинаковым радиусом, и считаем, сколько окружностей пересклось в 1 точке (с какойто точностью 2).

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


......ну вот такое на вскидку придумал ) Эт примерно так рисуется маска Батхинова из треугольников циркулем.
alexzk вне форума Ответить с цитированием
Старый 17.09.2017, 09:19   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Видимо речь о минимальной описанной окружности множества точек. Для начала - интересны только граничные точки, т.е. точки принадлежащие минимальной выпуклой оболочке. Как найти их можно например здесь подсмотреть. Дальше работая только с ними и используя например этот метод находим минимальную описанную окружность. Можно и без первого шага, но тогда скорее всего общее время выполнения будет дольше
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.09.2017, 23:43   #6
gogo12
Новичок
Джуниор
 
Регистрация: 16.09.2017
Сообщений: 3
По умолчанию

Вот имеются точки с известными координатами и необходимо математически построить окружность по ним
Изображения
Тип файла: png Снимок.PNG (2.0 Кб, 111 просмотров)
gogo12 вне форума Ответить с цитированием
Старый 19.09.2017, 07:05   #7
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Задача решается методом наименьших квадратов, про МНК можно прочитать в книге Каханер,_Моулер,_Наш.-Численные_методы_и_программное_обес печение-Мир(1998)

И второй способ находим центр точек как среднее геометрическое и находим радиус как среднее значение от центра до точек. Или максимальное, если все точки надо вписать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 19.09.2017 в 07:07.
Pavia вне форума Ответить с цитированием
Старый 20.09.2017, 07:37   #8
silinka
 
Регистрация: 13.09.2017
Сообщений: 4
По умолчанию

попробуйте волновым методом. Есть хорошая книга Башурова, где решаются подобные задачи. Идея такая: каждая точка (красная на Вашем рисунке, с известными координатами) рассматривается как одиночный источник света. С центрами в этих точках строятся окружности. Радиус окружности растет - в пределе получаем точку (или несколько различных точек, так как задача может иметь не одно решение). Посмотрите в инете про волновой метод (метод геометрической оптики)
silinka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа по дискретной математике на Делфи Zaraaa Помощь студентам 0 20.10.2013 16:29
Программа по дискретной математике Rozario68 Фриланс 1 14.12.2011 18:35
Программа по дискретной математике Breaknoise Общие вопросы C/C++ 6 14.09.2011 22:28
Программа электронный учебник по математике для средних классов. Основное направление дроби (на Делфи) Ribnika_90000 Помощь студентам 4 18.04.2011 20:51
Программа по вычислительной математике TaHe4ka C++ Builder 2 08.10.2010 23:43