近似一条给定n个2d点的曲线,计算这n个点的角度/导数



我想计算一条包含n个x,y点的曲线,如x=[0,2,3,5,8]和y=[8,3,-1,0,-2]。我想用n-1次的多边形。然后我想计算每个x位置的角度/一阶导数。

到目前为止,我已经尝试了numpy的混合。Polifit和scipy曲线拟合不太成功。我也检查了样条,但对进一步分割间隔不太感兴趣,因为我已经知道我想要计算角度的点。

任何想法?

由于点的数量和你正在寻找的程度相匹配,你可以使用拉格朗日插值找到唯一的解决方案。

  • 维基百科关于拉格朗日插值;
  • scipy.interpolate.lagrange.
from scipy.interpolate import lagrange
X=[0,2,3,5,8]
Y=[8,3,-1,0,-2]
P = lagrange(X,Y)
P_deriv = P.deriv()
derivatives = [P_deriv(x) for x in X]
print(P)
print(P_deriv)
print(derivatives)
#           4         3         2
# -0.08611 x + 1.261 x - 5.169 x + 3.483 x + 8
#
#          3         2
# -0.3444 x + 3.783 x - 10.34 x + 3.483
#
# [3.483, -4.817, -2.783, 3.317, -13.45]

如果你想要得到切角而不是导数,你可以调用derivatives数组上的numpy.arctan

最新更新