Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение график, Плавный график по нескольким точкам 
:(
    Опции темы
Дрон
Дата 6.2.2003, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург




Есть у меня такая задача:
Дано несколько (штук 15, хотя это не важно) точек. Необходимо построить кривую,
проходящую через все эти точки (ну или хотя бы рядом с этими точками).
Конечно есть в WinApi функция PolyBezier, но это совсем не то, что мне нужно.
Мне нужно полностью своя функция, где я бы мог контролировать координыта
каждой точки графика.

Один метод я уже нашёл: построить многочлен n-ой степени (где n - кол-во точек),
тогда его график и будет проходить через эти точки. Но, к сожалению, это решение
не совсем подходит из-за того, что график получается слишком уж "страшным", хотя
и очень точным. Я же готов пожертовать точностью, лишь бы получилась более
плавная кривая.

Я слышал о каких-то "наименьших квадратах", которые можно применить в данном
случае, но кроме названия больше ничего не знаю. sad.gif

Понимаю, что это задача скорее математическая, но может быть кто-нибудь занимался
анализом данных и может что-нибудь подсказать.

Исходники я не прошу. Программировать сам умею. smile.gif
PM   Вверх
Chingachguk
Дата 6.2.2003, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва




Попробуй посмотреть мою статью на тему Xq:

http://www.wasm.ru/article.php?article=approx


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
December
Дата 7.2.2003, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков




Цитата
Есть у меня такая задача:
Дано несколько (штук 15, хотя это не важно) точек. Необходимо построить кривую,
проходящую через все эти точки (ну или хотя бы рядом с этими точками).
Конечно есть в WinApi функция PolyBezier, но это совсем не то, что мне нужно.
Мне нужно полностью своя функция, где я бы мог контролировать координыта
каждой точки графика.

Один метод я уже нашёл: построить многочлен n-ой степени (где n - кол-во точек),
тогда его график и будет проходить через эти точки. Но, к сожалению, это решение
не совсем подходит из-за того, что график получается слишком уж "страшным", хотя
и очень точным. Я же готов пожертовать точностью, лишь бы получилась более
плавная кривая.

Я слышал о каких-то "наименьших квадратах", которые можно применить в данном
случае, но кроме названия больше ничего не знаю. sad.gif

Понимаю, что это задача скорее математическая, но может быть кто-нибудь занимался
анализом данных и может что-нибудь подсказать.

Исходники я не прошу. Программировать сам умею. smile.gif

Метод наименьших квадратов - это для нахождения прямой линии. Посмотри в МатКАДе, там, по-моему, в хелпе чуть-чуть про алгоритмы.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 7.2.2003, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев




Цитата
Метод наименьших квадратов - это для нахождения прямой линии

Если я не ошибаюсь, метод наименьших квадратов состоит в минимизации суммы квадратов отклонений
sum[(f(a,xi)-yi)^2]->min по a
(где a - вектор параметров). И совсем необязательно, чтобы график функции был прямой.
Например, в качестве приближающей функции можно взять полином степени <n, а в качестве параметров - его коэффициенты.
Кроме того, можно наложить условия на величину производных функции и перейти к условной минимизации
В случае полинома все это сведется к линейному программированию


--------------------
qqq
PM WWW   Вверх
Дрон
Дата 7.2.2003, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург




Цитата(Chingachguk @ 6.2.2003, 15:43)
Попробуй посмотреть мою статью на тему Xq:

http://www.wasm.ru/article.php?article=approx

Статью я Вашу прочитал.
Честно говоря, метод поиска "на решётке" мне не совсем
понравился, но, если ничего лучше не придумаю, прийдётся
что-нибудь в этом роде написать.
А вообще, коэффициенты полинома, по-моему, всё-таки проще
искать аналитически. Я сначала думал, что это сложно, т.к.
там надо решать систему из n уравнений. Но, посидев пару
дней и исписав кучу бумаги, smile.gif нашёл её точное решение в "общем виде" для любого n. Причём это решение очень хорошо реализуется программно.

На самом деле, я на этом же форуме в "Технологиях и алгоритмах"
нашёл ссылку на кое-что по этой теме (и куда я раньше смотрел?),
может оно поможет...


--------------------
Да. Именно так.
PM   Вверх
December
Дата 7.2.2003, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков




Цитата(maxim1000 @ 6.2.2003, 21:14)
Если я не ошибаюсь, метод наименьших квадратов состоит в минимизации суммы квадратов отклонений
sum[(f(a,xi)-yi)^2]->min по a
(где a - вектор параметров). И совсем необязательно, чтобы график функции был прямой.

Да, торможу, два года однообразного использования МНК прозомбировали меня на славу.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
78125
Дата 14.2.2003, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург




Учусь я в универе и по вышке недавно прошли ряды
суть в том что любую функцию можно разложить в ряж стремящийся к ней

и
в другую сторону тоже - по известным точкам составить коэфициенты функции и вперед

я понимаю что так рассуждать легко но сам никогда не занимался етим
--------------------
купим подпись
PM MAIL   Вверх
Chingachguk
Дата 15.2.2003, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва




Цитата

...суть в том что любую функцию можно разложить в ряж...


Например, дельта-функцию ? ;)



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Unregistered
Дата 15.2.2003, 02:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Например, дельта-функцию ? ;)

да, только у нее будет бесконечный спектр :]
  Вверх
podval
Дата 15.2.2003, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб




Цитата
Необходимо построить кривую,
проходящую через все эти точки (ну или хотя бы рядом с этими точками).

Цитата
И совсем необязательно, чтобы график функции был прямой.


Кстати говоря, МНК дает аппроксимирующий полином (если именно полином используется), котороый вовсе не обязательно будет проходить через исходные точки.
Если же обязательным условием является прохождение графика через узлы интерполяции, то лучше использовать сплайны.
А если исходные данные "страдают" большой дисперсией, то построенная по МНК кривая и рядом с исходными точками проходить не будет.
PM WWW ICQ   Вверх
Crait
Дата 22.2.2003, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003




Рекомендую сплайны.
И для сглаживания тоже.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.