拉格朗日多项式:意外的插值结果

Lagrange polynomial: Unexpected interpolation results

我正在尝试使用第二拉格朗日多项式对一系列数据点进行插值。 拥有

point1:(5;100)
point2: (9;17)
point3: (12;17)

和公式

y=(x-x2)*(x-x3)/(x1-x2)*(x1-x3)*y1+
  (x-x1)*(x-x3)/(x2-x1)*(x2-x3)*y2+
  (x-x1)*(x-x2)/(x3-x1)*(x3-x2)*y3

很明显,二次函数可能不适合数据。这只是一个例子。

但我想知道为什么 x=7 的值出奇地高。 如果我没记错的话 y=1500.

上面的公式对吗?

公式应该是correct.but当x=17,你有两个不同的y值,这可能是trouble.you的原因可以尝试改变antor x。

答案:

总结:

  1. 对于相同的x,不能有两个不同的y值;这违反了函数的定义。
  2. 您的公式中缺少括号!不是 (x-x2)*(x-x3)/(x1-x2)*(x1-x3),而是 ((x-x2)*(x-x3)) / ((x1-x2)*(x1-x3)).
  3. 回到1>,注意插值公式的分母中有x3-x2。如果您有绑定值,您将除以 0。
  4. 如何对这么小的数据集进行插值?然而你要求的是二次插值!

后续:

1) fixed it. Accidentally i switched all the x and y values. So the points were in format (y,x).

啊哈哈,难怪

2) Thank you! The brackets improved the approximation. Regarding the missing brackets: I got the formula from the accepted answer here: Best way to find Quadratic Regression Curve in Java, but I don't understand this rule.

这就是著名而又基础的插值法:拉格朗日插值法。您可以在 Wolfram mathworld: Lagrange Interpolating Polynomial 验证其公式。我不给你维基百科link因为这个看起来更漂亮

您找到的 link 肯定有错字。既然您建议修改以修复该问题,希望它能很快获得批准。

3) It is a (significant larger (which answers your 4th question) time series. So it is impossible to have tied values.

是的,时间序列不会有绑定值。