2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Интерполяция функций
Сообщение14.04.2013, 20:22 
Всем доброго вечера.
Есть задача - построить интерполяционный многочлен Лагранжа 2,6,10 степени от функции $|x^{2}+x|$ на отрезке [-2,2].
и найти его погрешность. Все это реализовано в программе, однако выходит, что с увеличением степени - погрешность не в узлах уменьшается не на много, правильно ли это?
И второй вопрос. По заданию, на основе данных о погрешностях многочленов 2,6,10 степеней, нужно разработать способ для интерполяции, при котором погрешность будет не более $10^{-10}$.
Если честно - я даже без понятия с чего начать. К примеру если взять степень 10, и выводить по 4 значения между узлами, то погрешность в середине отрезка колеблется между 0.005 - 0.1, а ближе к краям вообще возрастает до 1.1 - 1.4

 
 
 
 Re: Интерполяция функций
Сообщение14.04.2013, 21:10 
По вопросу 1 - смотрите пример функции Рунге, там вообще при увеличении степени полинома погрешность увеличивается.
По вопросу 2 - задача творческая, существующих способов интерполяции весьма немало, выбирайте подходящий.

 
 
 
 Re: Интерполяция функций
Сообщение14.04.2013, 21:39 
Аватара пользователя
Модуль в вашем выражении можно просто выкинуть. Вы занимаетесь интерполяцией степенного многочлена второй степени. Он будет безошибочно представлен многочленом Лагранжа второй степени. Без какой-либо погрешности вообще (ввиду единственности интерполяционного многочлена Лагранжа). При построении многочленов 6-й и 10-й степени коэффициенты при степенях больше второй получаются отличными от нуля (если получаются конечно - посмотрите на них внимательно) в результате погрешностей вычислений. Отсюда и погрешность интерполяции.

То ли задание у вас странное, то ли Вы его на форум переписали с ошибками.

 
 
 
 Re: Интерполяция функций
Сообщение14.04.2013, 21:50 
profrotter в сообщении #710227 писал(а):
Модуль в вашем выражении можно просто выкинуть.

Чего это вдруг? Если $-1 < x < 0$, то $x^2+x < 0$.

 
 
 
 Re: Интерполяция функций
Сообщение14.04.2013, 21:59 
Аватара пользователя
AV_77 в сообщении #710236 писал(а):
Чего это вдруг?
Согласен. Ошибся. Зачеркнул.

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 16:03 
profrotter
Почему странное?
выглядит так ( взял что конкретно не понятно )
1.Построить интерполяционный многочлен Лагранжа.
2. Построить графики найденного многочлена и заданной функции
...
4.На основе данных, полученных в результате выполнения пунктов 2-6 для значений n=2,6,10, предложить способ интерполяции, при котором величина погрешности не будет превышать величины $10^{-10}$
5. Реализовать предложенный способ интерполяции. Построить графики интерполяционного многочлена, построенного предложенным способом и заданной функции.


При построении многочлена 6 или 10 степени - в узлах выходит погрешность 0, как и должно быть. Между узлами уже и идет погрешность.
- Реализовать предложенный способ интерполяции - это я могу выбрать какой-то другой метод, например, изучив учебник на эту тему, метод Эрмита, погрешность которого явно меньше ?

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 16:27 
Аватара пользователя
Ну ошибся же. Зачеркнул уже.

Судя по заданию имеется в виду всё-таки выбор одного из всех рассмотренных в п.2-6 методов интерполяции.

А предложить другой совсем просто: интервал $[-2,2]$ можно разбить на подынтервалы единичной длины, на каждом из которых ваша функция описывается многочленом второй степени, то есть локальная кусочно-многочленная интерполяция второй степени вообще не даст никаких ошибок.

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 17:11 
Нет, в пункте 2-6 указания по построению многочлена Лагранжа.
Все таки мы не занимаемся придумыванием каких-то своих супер методов, поэтому я думаю, что можно реализовать что-то другое.

Насколько я понял - ваш пример - локальная квадратичная интерполяция ?

-- 15.04.2013, 18:19 --

А, кажется понял. При повышении порядка многочлена - ближе к краям отрезка - погрешность возрастает.
К примеру если взять n = 6, получается приемлемая погрешность, но теперь разбить отрезок на 4 части и для каждой посчитать многочлен?

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 19:01 
Аватара пользователя
Ну, я пункта 2-6 не видел.

Я говорю о том, что для заданной функции интерполяция будет точной, если выбрать узлы интерполяции с абсциссами: $-2,0;-1,5;-1,0;-0,5;0,0;0,5;1,0;1,5;2,0$ и правило интерполяции, которое предполагает построение квадратного многочлена по текущим трём узлам, скажем, $(x_k,y_k);(x_{k+1},y_{k+1});(x_{k+2},y_{k+2})$, затем строим квадратный многочлен на узлах $(x_{k+2},y_{k+2});(x_{k+3},y_{k+3});(x_{k+4},y_{k+4})$ и тд. Начиная процедуру с узла с абсциссой $x_0=-2,0$.

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 19:41 
Спасибо большое.
Что уточнить алгоритм (пока не очень понимаю, как это запрограммировать)
Общий вид - вы строим вот такой многочлен для каждой из точек -2,-1.5,....1,5,2 : $y=a_ix^{2}+b_ix+c_i$, где
$  a_ix^{2}_{i-1}+b_ix_{i-1}+c_i=f(x_i-1)$
$a_ix^{2}_i+b_ix_i+c_i=f(x_i)$
$a_ix^2_{i+1}+b_ix_{i+1}+c_i=f(x_{i+1})$

То есть систему мы видимо можем решать каким-нибудь МПИ или Зейделем.
И начинаем цикл с 1 до n-1, проходим по из -1.5,....,1.5 и считаем для каждой точки систему, подставляем в многочлен - получаем значение в этой точке? Или я не так понимаю?

 
 
 
 Re: Интерполяция функций
Сообщение15.04.2013, 20:37 
Аватара пользователя
Код:
Функция Интерполяция(X)
{
1. Если X=0 или X=2 Вернуть ...;
2. Найти номер интервала k, к которому принадлежит Х. Номер интервала считаем совпадающим с номером его левой границы;
3.Если K - чётное, то строим интерполяционный многочлен на точках (X[k],Y[k]),(X[k+1],Y[k+1])(X[k+2],Y[k+2]);
Иначе строим интерполяционный многочлен на точках (X[k-1],Y[k-1]),(X[k],Y[k])(X[k+1],Y[k+1]);
4. Вернуть значение интерполяционного многочлена в X;
}

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group