4

Math.NET Numerics を使用して、DateTime - Value シリーズの補間を実行しようとしています。線形補間から始めましたが、非常に見栄えの悪い結果が得られています。

このテストの実行:

public class script{

public void check_numerics()
  {
    var ticks = DateTime.Now.Ticks;
    Console.WriteLine("Ticks: " + ticks);
    var xValues = new double[] { ticks, ticks + 1000, ticks + 2000, ticks + 3000, ticks + 4000, ticks + 5000 };
    var yValues = new double[] {0, 1, 2, 3, 4, 5};
    var spline = Interpolate.LinearBetweenPoints(xValues, yValues);
    var ticks2 = ticks;
    for (int i = 0; i < 10; i++)
    {
      ticks2 += 500;
      Console.WriteLine(spline.Interpolate(ticks2));
    }
  }
}

これは与える:

Ticks: 635385235576843379
0.5
1
1.5
2
2.42857142857143 // this should be 2.5
3
3.5
4
4.5
5

2.4285 はかなり間違っていることに注意してください。異なる時間 (異なるティック値) では、異なる値は「間違った」ものになります。Math.NET に大きな x 値の「バグ」がありますか、それとも期待しすぎていますか?

4

1 に答える 1