1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны периодические перебои в работе.

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

Discussion in 'Общие вопросы' started by Nikonte, Jan 2, 2013.

  1. kub13

    kub13 Форумчанин

  2. Верещагин

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

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

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

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

    tsg Форумчанин

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

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

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

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

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

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

    Show Spoiler
    4.png
     
    мирось, Lex K-G and Qvinto like this.
  6. В.Шуфотинский

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

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

    tsg Форумчанин

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

    Attached Files:

    • art.zip
      File size:
      40.1 KB
      Views:
      39
    A denial and vadimart92 like this.
  9. Сразу извиняюсь если что-то подобное выкладывали выше. Это решение в маткаде методом итераций.
     

    Attached Files:

  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 Администратор Staff Member

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

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

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

    X-Y-H Администратор Staff Member

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

    tsg Форумчанин

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

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

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

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

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

    Attached Files:

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

    MaxKal Форумчанин

    есть простой алгоритм http://www.janssenprecisionengineering.com/downloads/Fit-plane-through-data-points.pdf правда обратную матрицу нужно считать, но это можно реализовать в автокаде, в пространстве имён Autodesk.AutoCAD.Geometry есть метод Inverse()
    --- Сообщения объединены, Mar 12, 2019, Оригинальное время сообщения: Mar 12, 2019 ---
    или нужна готовая реализация?
    --- Сообщения объединены, Mar 12, 2019 ---
    Кстати о строгости МНК, на весах вся его строгость заканчивается, да и с вылетами что делать?
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice