Итак, у меня есть код ниже. Он отлично вычисляет все y-точки многочлена (и печатает их для построения с помощью gnuplot), но как получить полученный полином (1-x² в этом случае)?Как получить полиномиальные коэффициенты интерполяции с помощью gsl_interp?
void twoDegreePoly() {
int n = 3;
double x[n],y[n];
printf ("#m=0,S=16\n");
for (int i=0; i<n ;i++) {
x[i] = ((double)2*i)/2 -1;
y[i] = f(x[i]);
printf ("%g %g\n", x[i], y[i]);
}
printf ("#m=1,S=0\n");
gsl_interp_accel *acc = gsl_interp_accel_alloc();
const gsl_interp_type *t = gsl_interp_polynomial;
gsl_interp* poly = gsl_interp_alloc(t,n);
gsl_interp_init (poly, x, y,n);
for (double xi=x[0]; xi<x[n-1]; xi+= 0.01) {
double yi = gsl_interp_eval (poly, x, y, xi, acc);
printf ("%g %g\n", xi, yi);
}
}
Благодарим вас, этот код работает. – user2443088
проблема с авторскими правами: вы не можете публиковать код NR на сайте –
Этот код доступен в бесплатном втором выпуске «Численных рецептов», см. Стр. 121 [здесь] (http://apps.nrbook.com/c/index.html). Я только что сменил C-массивы на векторы. – davidhigh