我得到一个'gsl: interp.c:150: ERROR:插值错误‘,代码如下。一些谷歌搜索表明,当您尝试使用interp函数进行外推时,会出现此错误,但我不明白这是如何发生的。我们将非常感谢您的帮助。谢谢。
函数randomground()只返回一个随机数(double)。
#define NSTEPS 100
int main()
{
int j, q, space = 1, refine = 100;
double xi = 0.0, tx[2*NSTEPS] = {0}, theight[2*NSTEPS] = {0};
double terrain[(int) (2*NSTEPS*100)] = {0};
double terrainsl[(int) (2*NSTEPS*100)] = {0};
for (j = 0; j < 2*NSTEPS; j++)
{
tx[j] = (double) j*space;
theight[j] = randomground();
}
gsl_interp_accel *acc = gsl_interp_accel_alloc();
gsl_spline *spline = gsl_spline_alloc(gsl_interp_akima, 2*NSTEPS);
gsl_spline_init(spline, tx, theight, 2*NSTEPS);
for (q = 0; q< 2*NSTEPS*100; q++)
{
terrain[q] = gsl_spline_eval(spline,xi,acc);
terrainsl[q] = gsl_spline_eval_deriv(spline,xi,acc);
xi = xi+(double) space/refine;
}
return 0;
}发布于 2015-03-30 01:54:50
Akima样条是一种局部的、子样条插值。对于函数f(x),如果您尝试获取x_i <= x <= x_i+1的x的值,则Akima需要用于j = i-2, i-1, i, i+1, i+2, i+3.的(x_j, f_j)对
https://stackoverflow.com/questions/27384929
复制相似问题