Многочлены
- From
- Valentin Davydov ()
- To
- All
- Date
- 2002-12-24T18:25:06Z
- Area
- RU.ALGORITHMS
From: Valentin Davydov <val@sqdp.trc-net.co.jp>
Задана табличная функция, довольно гладкая, в равноотстоящих узлах
(узлов порядка тысячи). Хочется аппроксимировать её многочленом
достаточно высокой степени, скажем, 15-20. Я пока сделал вот как:
построил многочлены Лежандра прямо по формулам P(0,x)=1, P(1,x)=x,
P(n+1,x)=((2*n+1)*x*P(n,x)-n*P(n-1,x))/(n+1), вычислил их значения
в каждом узле (приведя последние к промежутку [-1,1], разумеется),
затем методом прямоугольников проектирую заданные точки на эти
многочлены и получаю таким образом коэффициенты.
Для повышения точности я, перед тем, как работать с очередным многочленом,
вычитаю из исходных данных все предыдущие с соответствующими (найденными
на предыдущих шагах) коэффициентами. Однако после нескольких итераций такие
вычтенные данные явно содержат остатки низших степеней, причём в довольно
странном количестве (порядка процента - для ошибок округления явно много,
а для пропущенной в формуле двойки явно мало). Проверил ортогональность
используемых многочленов (тем же способом прямоугольников) и увидел тот
же самый процент в двух местах: во-первых, в отличие нормы многочлена от
единицы, а во-вторых, в нормах произведений разных многочленов одной
чётности.
Насколько я понимаю, причина - в используемом мною способе интегрирования.
Вопрос, собственно, следующий: есть ли более простой способ "исправить"
многочлены (или алгоритм интегрирования), чем тупая процедура
ортонормирования?
Вал. Дав.
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)