![]() |
|
|
![]()
|
|
| Shanks |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.4.2011 Репутация: нет Всего: нет |
Привет всем. Взял алгоритм на с++ с этого форума интерполяции Лагранжа.
Мне необходимо по точкам построить график ну и знать примерное значение в любой точке диапазона. Подозреваю, что из за логарифмического масштаба по оси х алгоритм глючит. Как можно обойти данную проблему ? Возможно ли использовать другие методы ? Excel ведь как-то строит нормальный график :( Данные, что я использую есть в коде
Выводит эти значения и уже на третьем отрезке наблюдается значительное отклонение
Это сообщение отредактировал(а) Shanks - 7.4.2011, 12:26 |
||||
|
|||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
Отклонение от чего считаете? Если от исходных точек, то значения между ними и не должны быть близкими к ним. Полиномиальную интерполяцию при большом количестве точек потому и не любят.
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Shanks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.4.2011 Репутация: нет Всего: нет |
float x[N]={1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 3e9};
float y[N]={-17, -21, -43, -75, -96, -120, -142, -174}; Вот исходный массив. Однако в алгоритме уже при F(5500 или 5,5e3)=84.443520 дальше ещё хуже. Как заставить алгоритм работать или вообще выбрать что-то другое ? |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
Алгоритм работает. Ты скажи, чего тебе надо от него? Подозреваю, что тебе нужно не то, что делает данный алгоритм.
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Shanks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.4.2011 Репутация: нет Всего: нет |
Мне надо строить график примерно такого вида,а так же уметь получить значение y при любом x в этом диапазоне.
Совершенно не отрицаю, что могу пытаться использовать не тот алгоритм. Собственно для этого я и обратился за помощью к более понимающим людям. Это сообщение отредактировал(а) Shanks - 7.4.2011, 13:56 Присоединённый файл ( Кол-во скачиваний: 27 )
gr.jpg 33,77 Kb |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
По рисунку выглядит будто там используется линейная интерполяция. Точки просто соединены отрезками прямых.
Уравнение внутри каждого отрезка от точки (x0, f(x0)) до точки (x1, f(x1)):
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Shanks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.4.2011 Репутация: нет Всего: нет |
Как выяснилось надо конвертить значения по оси x в логарифмические.
В общем потребовалось добавить всего-то пару строк:
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |