【发布时间】:2021-06-30 16:00:40
【问题描述】:
我正在尝试使用 MathNet 库沿三次样条线插值以获取各种大小的数据。
如果我运行以下代码:
static void Main(string[] args)
{
double[] xdata = new double[] { 0.083, 0.25, 0.5, 0.75, 1, 2, 4, 6, 12, 18, 24, 48, 96, 192, 240 };
double[] ydata = new double[] { 3.07525894277935, 5.17525894277935, 6.67525894277935, 7.57525894277935, 8.17525894277935, 11.8, 16.1289117118988, 19.0289117118988, 24.4536527691195, 27.8383211840501, 30.2383211840501, 36.4383211840501, 44.6247410572207, 58.3094094721513, 64.6975808035617 };
double[] p = Fit.Polynomial(xdata, ydata, xdata.Count() - 1);
Debug.WriteLine(Polynomial.Evaluate(0.25, p));
xdata = new double[] { 0.083, 0.25, 0.5 };
ydata = new double[] { 3.07525894277935, 5.17525894277935, 6.67525894277935 };
p = Fit.Polynomial(xdata, ydata, xdata.Count() - 1);
Debug.WriteLine(Polynomial.Evaluate(0.25, p));
}
第一个结果是:5.5957876536350915。
这对我来说没有意义,因为它应该接近 5.17525894277935(我的 ydata 中的第二个值)。
上面代码的第二个简化结果给出了5.175258942779351,这是完美的。
当我有大量数据时(如第一个示例),评估样条以插入不同的 `X 值的正确方法是什么?
我应该将数据分成三个批次并依次计算,还是有更简单的方法?
【问题讨论】:
标签: c# interpolation spline