【发布时间】:2021-09-30 20:49:48
【问题描述】:
我正在尝试使用 Numpy 的拉格朗日插值法对一组有序对进行插值;我以前做过这件事,没有发生任何事故。 然而,这一次,我不断得到“除以零误差”,并且插值多项式出现了无限系数。 我知道由于拉格朗日方法的内部工作原理,数据点不能重复,并且它们不会重复。
这是我的代码和有问题的有序对,采用 numpy 矢量格式。 代码:
x = out["x"].round(decimals=3)
x = np.array(x)
y = out["y"].round(decimals=3)
y = np.array(y)
print(x)
print(y)
pol = lagrange(x,y)
print(pol)
有序对:
[273.324 285.579 309.292 279.573 297.427 290.681 276.621 293.586 283.463
284.674 273.904 288.064 280.125 294.269 288.51 285.898 273.419 273.023
281.754 281.546 283.21 303.399 297.392 293.359 306.404 356.285 302.487
280.586 299.487 302.487]
[ 0. 5.414 6.202 0. 9.331 11.52 0. 10.495 5.439 4.709
0. 4.916 0. 10.508 6.736 5.25 0. 0. 6.53 4.305
5.124 6.753 10.175 10.545 5.98 9.147 11.137 0. 8.764 9.57 ]
非常感谢。
【问题讨论】:
-
您是否注意到他们警告不要使用超过 20 分?您可以想象创建 19 次多项式的问题。
-
作为旁注,四舍五入会破坏数据,并且可能是您最终得到重复数据的方式。您应该始终保持完整分辨率,并且仅在您打印数据时进行四舍五入。毕竟,只有人类有处理多个小数位的问题。
-
感谢您的意见。我不知道不要使用它超过 20 点的警告。它确实工作不到 20 点。