Python实现函数的曲率计算

Pyhon求解拟合曲线的曲率

这里提供一个利用曲率公式实现曲率计算的方法,如何实现曲线拟合见上一篇文章

计算原理:曲率公式,由公式可知,只需要知道曲线函数的一阶导和二阶导数,以及所要求的点的坐标即可计算曲率。
在这里插入图片描述
用python实现,即:

'''y_1和y_2为函数该点处的一阶导数值和二阶导数值,得到该值,就可进行曲率计算'''
def get_curvature(y_1,y_2):    
    K = (np.abs(y_2))/(np.sqrt((1 + y_1*y_1))**3)
    return  K

通过np的ployfit方法可以返回一个函数

# 曲线拟合,这里不多解释,重要的是得到 p1
    z1 = np.polyfit(list_x, list_y, 5)  # list_x和list_y是需要拟合的点,曲线拟合
    p1 = np.poly1d(z1)  # 返回值为多项式的表达式,也就是函数式子
    print(p1)  # p1为所拟合的函数

把p1打印出来如下:
在这里插入图片描述
OK,我们能现在只需要对该函数求一阶导和二阶导,然后代入所求坐标点的x值即可得到y_1和y_2,这里我选择求某极值点处的曲率:

p1_min = fmin(p1, 250)  # 求函数p1在x=250附近处的极值
p1_1 = np.polyder(p1,1) # 求函数p1的一阶导,返回值p1_1是一个函数表达式,可以打印出来看
p1_2 = np.polyder(p1,2) # 同理,求函数p1的二阶导

p1_1_min = p1_1(p1_min)  # 求函数一阶导和二阶导所对应极值点处的值
p1_2_min = p1_2(p1_min)
K = get_curvature(p1_1_min,p1_2_min)  # 这个时候利用该函数就可以实现曲率计算了

以上就是曲率计算的全部过程,其实很简单,更新不易,喜欢一键三连哈!!

猜你喜欢

转载自blog.csdn.net/weixin_49594201/article/details/129287552