我试图使用Apache和PolynomialSplineFunction & LinearInterpolator函数实现一个外推函数。
public double[] linearInterp(double[] x, double[] y, double[] xi) {
LinearInterpolator li = new LinearInterpolator(); // or other interpolator
PolynomialSplineFunction psf = li.interpolate(x, y);
double[] yi = new double[xi.length];
for (int i = 0; i < xi.length; i++) {
yi[i] = psf.value(xi[i]);
}
return yi;
}x = [0, 60, 120,180,240];
y = [196, 232, 250, 157, 300];
xi = [300, 360, 420];
问题是,如果我使用一个超出x范围的值,我就得到了一个OutOfRangeException,有任何方法可以用这个方法来推断吗?我该如何避免这个错误。
发布于 2016-04-15 21:39:53
如果您查看文档PolynomialSimlineFunction Doucumentaition,您可以读取值方法"OutOfRangeException -如果v在样条函数域之外(小于最小节点或大于最大节点点)“。
这是相当合理的,因为插值出的节不是一个接近你的功能。从数学上讲,你试图做的事情根本就没有意义。
https://stackoverflow.com/questions/36656857
复制相似问题