适配Akima样条曲线

3
我正在尝试使用与此工具相同的方法,在C#中拟合Akima样条曲线:https://www.mycurvefit.com/share/4ab90a5f-af5e-435e-9ce4-652c95c3d9a7,这条曲线给出了我想要的精确形状(曲线在X = 30M处达到峰值,是样本数据的最高点)。但当我使用MathNet的Akima函数,并绘制来自同一数据集的52个点时:
    var x = new List<double> { 0, 15000000, 30000000, 40000000, 60000000 };
    var y = new List<double> { 0, 93279805, 108560423, 105689254, 90130257 };

    var curveY = new List<double>();
    var interpolation = MathNet.Numerics.Interpolation.CubicSpline.InterpolateAkima(x.ToArray(), y.ToArray());

    for (int i=1; i<=52; i++)
    {
        var cY = interpolation.Interpolate((60000000/52)*i);
        curveY.Add(cY);
    }

我完全没有得到相同的曲线,我得到一个在X=26M左右峰值的曲线,看起来更像一条自然样条曲线:https://www.mycurvefit.com/share/faec5545-abf1-4768-b180-3e615dc60e3a 阿基马斯样条为什么看起来如此不同?(特别是峰值方面)
2个回答

1

插值方法等待双精度参数,但这是整数(60000000 / 52) * i。

(60000000 / 52) * i更改为(60000000d / 52d) * i

enter image description here


那是一个好的点,但并没有太多改变(生成的曲线仍然远离所给定的期望Akima示例)。 - FBryant87

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接