Аппроксимация рядом Фурье
Добавлено: 11 апр 2014, 14:12
В общем, есть некая функция у = f(x), провели ряд измерений и получили n точек x и y.
Нужно найти аппроксимацию данной функции тригонометрическим полиномом.
Попробовала аппроксимировать рядом Фурье.
Что-то получается, но есть ошибки. а0 не верно считает, и возможно коэфф-ты не верны.
Посмотрите/помогите пожалуйста, может кто сталкивался с подобным.
Нужно найти аппроксимацию данной функции тригонометрическим полиномом.
Попробовала аппроксимировать рядом Фурье.
Что-то получается, но есть ошибки. а0 не верно считает, и возможно коэфф-ты не верны.
Посмотрите/помогите пожалуйста, может кто сталкивался с подобным.
Код: Выделить всё
NSteps - кол-во шагов;
double l=(10+10)/2 период;
pa-степень аппроксимации.
const double pi = 3.1415926535897932384626433832795;
double a[12],b[12];
int ia,ja,ka,pa=6;
for (ka=1;ka<pa;ka++)
{
a[ka]=0;b[ka]=0;
for(ia=0;ia<NSteps;ia++)
{
a[ka]=a[ka]+apr_y[ia]*cos(2*ka*pi*ia/(NSteps-1));
b[ka]=b[ka]+apr_y[ia]*sin(2*ka*pi*ia/(NSteps-1));
}
a[ka]=2*a[ka]/(NSteps+1);
b[ka]=2*b[ka]/(NSteps+1);
}
a[0]=0;
for(ia=0;ia<NSteps;ia++)
{
a[0]=a[0]+apr_y[ia];
}
a[0]=a[0]/(NSteps+1);
for (ii = 0; ii< NSteps; ii++)
{
apr_y_res[ii] = 0;
apr_y_res[ii] =a[0]/2;
for (int jj2=1;jj2<pa;jj2++)
{
apr_y_res[ii] = apr_y_res[ii] + a[jj2]*cos(k*apr_x[ii])+b[jj2]*sin(jj2*apr_x[ii]);
}
}