Аппроксимация

Тема в разделе "Общие вопросы", создана пользователем Nikonte, 2 янв 2013.

  1. kub13

    kub13 Форумчанин

  2. Верещагин

    Верещагин Модератор Форумчанин

    Если говорить о продуктах Кредо-Диалог, то стоит упомянуть, что задача аппроксимации окружности решается в Credo III (Топоплан, Линейные Изыскания, Генплан и т.д.) одной командой "Окружность - Аппроксимировать по точкам".

    Полагаю, что сходный метод есть и в программах, работающих на движке Автокада.

    Разумеется, обсуждение вопроса "Как это делается" гораздо полезнее и интереснее, чем просто совет "тыкай в эту кнопку". Но теперь, когда тема достигла определенного развития, стоит и указать на то, что практически такие задачи можно решать и не включая мозг. Спасибо программистам.
     
    Lex K-G нравится это.
  3. tsg

    tsg Форумчанин

    да, точно. Извиняюсь, когда переписывал данные, округлил невнимательно. Проклятый аклоголь! Для себя выводил пять знаков после запятой, значение 1223,38991.

    Как решать подобные вещи для круга и эллипса, кому интересно и не страшат частные производные, могу объяснить. С т. з. математики это очень изящно получается.
     
  4. Lex K-G

    Lex K-G Форумчанин

    Да, расскажите!
     
  5. В російській локалізації excel - надстройка "Поиск решения" (http://goo.gl/9kJwi).
    Раскрыть Спойлер
    1.PNG

    Підбираємо параметри x0, y0,r так, щоб сума квадратів відхелень була мінімальною (пошук рішень в excel взагалі то не за МНК, але так як залежність між змінними не лінійна це найпростіший спосіб)
    Раскрыть Спойлер
    2.png

    Для еліпса - аналогічно, тільки поправки обчислюємо з рівняння еліпса і відповідно маємо ще одну змінну додадкову вісь еліпса:
    Раскрыть Спойлер
    3.PNG

    Раскрыть Спойлер
    4.png
     
    мирось, Lex K-G и Qvinto нравится это.
  6. В.Шуфотинский

    В.Шуфотинский Модератор Команда форума

    vadimart92, будь ласка, якщо є така можливість, пишіть свої повідомлення російською мовою.
     
    мирось нравится это.
  7. Всем добрый вечер!Действительно интересно поразмыслить как это можно сделать без каких либо встроенных функций в каком-либо софте. Кстати такая задача была у нас в своё время (когда учился в универе), решали мы её в маткаде. А вообще функция апроксимации набора точек окружностью есть как в цивиле так и в лэнд десктоп, там ещё и веса можно отдельным точкам назначать, усреднение производится естественно по методу наименьших квадратов.
     
  8. tsg

    tsg Форумчанин

    Итак, господа, постарался подробно все описать. Если есть вопросы задавайте. Мог сделать опечатку ибо писалось все под бокал рома с колой... Проклятый аклоголь! Файл прилагаю в zip-е, ибо docx грузить не хочет. Kub13 у вас прекрасный способ с комбинированием всевозможных уравнений, чтобы система была не переопределенной. Сам сходу не смог алгоритм придумать по комбинированию исходных данных в уравнения с последующим решением
     

    Вложения:

    • art.zip
      Размер файла:
      40,1 КБ
      Просмотров:
      39
    A denial и vadimart92 нравится это.
  9. Сразу извиняюсь если что-то подобное выкладывали выше. Это решение в маткаде методом итераций.
     

    Вложения:

  10. tsg, с окружностью действительно очень классно получилось!всё понятно,спасибо!а как быть с эллипсом?там же надо найти получается координаты центра,две полуоси и ориентирование одной из осей,так?
     
  11. tsg

    tsg Форумчанин

    С эллипсом, если его оси параллельны осям прямоугольной системы координат, нужно вычислить 4 частных производных. Для определения уравнения надо 4 точки. Уравнение эллипса брать в виде
    b^2(x-xC)^2 + a^2(y - yC)^2 - (a*b)^2 = 0,
    где, a и b - полуоси, xC и yC - координаты центра эллипса, производные по a, b, xC, yC. Получается все почти в копейку как и с кругом.

    Но! Эллипс можно еще и поворачивать! Если угол поворота осей заранее известен, то он в качестве параметра минимизации не участвует (те же 4 параметра), а вот если учитывать и его... Тут сдаюсь. Надо брать учебник алгебры, например Куроша, смотреть приведение квадратичных форм к каноническому виду, смотреть производные. Далее пытаться линеаризовать производные. Но скорее всего такой красоты как с кругом/"просто эллипсом" не получиться и линеаризацию придется делать путем разложения в степенные ряды, ну а далее стандартный МНК для систем линейных уравнений. Тут проще Minimize Маткадовский использовать как у вас в примере приложенном
     
  12. X-Y-H

    X-Y-H Администратор Команда форума

    Линейные изыскания, графическим методом аппроксимации окружности из точек.
    окружность аппроксимирующая точки.PNG
     
    Самстон и Lex K-G нравится это.
  13. Lex K-G

    Lex K-G Форумчанин

    а результаты -координаты центра, радиус, отклонения от радиуса набора точек можно покрупнее? Или в TXT?
     
  14. X-Y-H

    X-Y-H Администратор Команда форума

  15. Кому интересно могу скинуть программку для обычного автокада с реализованным алгоритмом tsg.
     
    Lex K-G нравится это.
  16. tsg

    tsg Форумчанин

    Вы мне льстите :). Это не я придумал, чье авторство не знаю. Я только постарался понятно и доступным языком описать "как это работает".
     
  17. Lex K-G

    Lex K-G Форумчанин

    Естесссственно, интересно! Можете разместить здесь?
     
  18. Всем доброго дня!Выкладываю лисп файл. Сразу прошу не судить строго, так как программист из меня никакой, развлекаюсь так...можно сказать для души=)поэтому знающим людям код конечно же покажется корявым и вообще ужасным, но для меня главное что работает=)
    1. Сохраняем файл на компьютере (например просто на диске С).

    2.Далее, запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
    а. Перейдите к папке, куда Вы сохранили lisp файл.
    б. Выберите файл, который Вы хотите загрузить из списка.
    в. Нажмите кнопку Загрузить.
    (Если все прошло удачно, Вы должны увидеть надпись "апроксимация точек окружностью.lsp успешно загружено")
    г. Нажмите кнопку Закрыть для завершения команды.

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

    Вложения:

    Земледел, Alex_Shaton и Lex K-G нравится это.
  19. Здравствуйте, может ли кто-то подсказать, существуют ли программные методы аппроксимации N-ного колличества точек плоскостью?[​IMG]
     
  20. MaxKal

    MaxKal Форумчанин

    есть простой алгоритм http://www.janssenprecisionengineering.com/downloads/Fit-plane-through-data-points.pdf правда обратную матрицу нужно считать, но это можно реализовать в автокаде, в пространстве имён Autodesk.AutoCAD.Geometry есть метод Inverse()
    --- Сообщения объединены, 12 мар 2019, Оригинальное время сообщения: 12 мар 2019 ---
    или нужна готовая реализация?
    --- Сообщения объединены, 12 мар 2019 ---
    Кстати о строгости МНК, на весах вся его строгость заканчивается, да и с вылетами что делать?
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление