Автор Тема: Определить уровнение кривой по точкам  (Прочитано 9128 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн seregavolk

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Здравствуйте. Есть задача  - программа чтобы определить уровнение кривой по точкам. Точки вводятся произвольно.
Думаю что они будут иметь строгую последовательность для упрощения задачи.
Суть: вводятся например точки [0,2][1,5][2,8][3,4][9,5] ... В итоге мне надо определить фид функции описывающей полученый график тапа это позоже на - y=sin(x) или это похоже на y=x^2+y^2+2*x*y и т.д.
Так как точки произвольные, думаю что возможно отсеивать "мешающие" для определения правильной формулы.

Суть не в программировании а в том каким образом определить вид функции ???
Какие есть варианты ??? :)

Оффлайн Nataniel

  • Старожил
  • ****
  • Сообщений: 409
    • Просмотр профиля
А откуда такая постановка задачи? Обычно определение вида функции самая трудная задача. К тому же видов функций очень много

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Надо думать, что даны не мешающие, а избыточные точки.
В такой постановке определяешь тип функции "на глаз".
Теперь отбираешь подходящие точки для определения параметров линии.
Если функция y=asin(kx+b), надо 3 точки для определения a, k, b.
Дано будет больше точек. Надо выбрать лучшие для вычислений.
Думаю идея в том такого задания, чтобы преобрести навыки грубой оценки
типов функций и вычислений. Может так.

Оффлайн Nataniel

  • Старожил
  • ****
  • Сообщений: 409
    • Просмотр профиля
Надо думать, что даны не мешающие, а избыточные точки.
В такой постановке определяешь тип функции "на глаз".
Cогласен, а вот отбрасывать остальные не советую, лучше воспользоваться регрессионным анализом для определения коэффициентов

Оффлайн renuar911

  • Ветеран
  • *****
  • Сообщений: 2489
  • От форм математических бушует вся душа
    • Просмотр профиля
Если функция самая замысловатая, то ничего кроме сплайнов, лучшего не придумано. Это самый универсальный метод и хорошо алгоритмизирован в программном плане.
За жизнью надо тщательно следить, все время избегая с ней разлуки.

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Наверное надо дождаться автора и выяснить главное - оценка типа функции визуальная или программная.
Похоже речь не идет об апроксимации.

Оффлайн renuar911

  • Ветеран
  • *****
  • Сообщений: 2489
  • От форм математических бушует вся душа
    • Просмотр профиля
Ну уж лучшего специалиста по аппроксимации, чем я, найти трудно. Ждем-с.
За жизнью надо тщательно следить, все время избегая с ней разлуки.

Оффлайн seregavolk

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Задача програмная, как построить кривую я знаю...(по Катмул Рому например)
Есть например точки: [0,1][1,2][2,3] -> (анализируем, определяем что это функции вида: y=kx+b) -> (просчитываем коофициенты и выводим ответ: y=x+1)

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

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Составляйте атлас графиков функций с различными значениями параметров,
стройте точечный график заданой и фантазируйте.
Если аппроксимация универсальная, сплайны, что там еще, то напролом без вопросов.
Какой там вид зависимости.

Оффлайн renuar911

  • Ветеран
  • *****
  • Сообщений: 2489
  • От форм математических бушует вся душа
    • Просмотр профиля
На эту тему есть интересная статья ссылка
Там предлагается именно создавать банк функций и формально их пересматривать для поиска наилушей зависимости. Дан пример, хотя основная суть не раскрывается.
За жизнью надо тщательно следить, все время избегая с ней разлуки.

Оффлайн seregavolk

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Определить уровнение кривой по точкам
« Ответ #10 : 12 Мая 2011, 20:44:35 »
Преподователь дал подсказку что копать нужно в сторону формул Каши и Рунгекута, мол с помощью их можно оценить отклонение кривой в процентах от предпологаемой функции... Что скажете, на что обратить внимание ?

Оффлайн Nataniel

  • Старожил
  • ****
  • Сообщений: 409
    • Просмотр профиля
Re: Определить уровнение кривой по точкам
« Ответ #11 : 12 Мая 2011, 20:51:23 »
правьно Коши и Рунге-Кутт(это два разных чувака)
А так хз

Оффлайн Dimka1

  • Ветеран
  • *****
  • Сообщений: 4913
    • Просмотр профиля
Re: Определить уровнение кривой по точкам
« Ответ #12 : 12 Мая 2011, 21:21:04 »
Другой вариант - использовать разложение в ряд Фурье. т.е. Ваша кривая будет описываться суммой тригонометрических функций, кол-во слагаемых в которой можно ограничить исходя из нужной точности. Ручной анализ в данном случае не целесообразен.
Решение задач - практическое искусство; научиться ему можно, только подражая хорошим образцам и постоянно практикуясь....

Оффлайн seregavolk

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Определить уровнение кривой по точкам
« Ответ #13 : 22 Мая 2011, 21:07:27 »
 :( Спасибо конечно, но всё бы было не так плохо если было бы что раскладывать в ряд фурье, мне бы сначала получить это уровнение... У кого какие мысли ?

Оффлайн Dimka1

  • Ветеран
  • *****
  • Сообщений: 4913
    • Просмотр профиля
Re: Определить уровнение кривой по точкам
« Ответ #14 : 22 Мая 2011, 22:05:19 »
:( Спасибо конечно, но всё бы было не так плохо если было бы что раскладывать в ряд фурье,

У Вас даны точки
[0,2][1,5][2,8][3,4][9,5]

На каждом интервале пишите уравнение прямой (отрезка) по двум точкам
[0,2][1,5]
[1,5][2,8]
[2,8][3,4]
[3,4][9,5]

Объединяете эти уравнения в систему и раскладываете ее в ряд Фурье.  Этот ряд и будет описывать Вашу кривую.
Решение задач - практическое искусство; научиться ему можно, только подражая хорошим образцам и постоянно практикуясь....