我想计算一条包含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
。