如何在SymPy中对导数dy/dx使用atan2计算曲线切线水平夹角
函数y=f(x)在点x_h处的切线斜率等于该点的导数值,本质是x方向取微小增量dx时,y方向对应增量dy = 导数值 * dx。atan2要求传入(dy, dx)两个参数来计算夹角,你可以直接取dx=1简化计算,修改逻辑如下:
修改后完整代码
from sympy import symbols, diff, exp, lambdify from math import atan2, pi # 请补充你的实际参数取值 K = 1.0 K_inv = 1 / K x_h = 0.5 x = symbols('x') y = (0.5 * K_inv * (exp(K * x) + exp(-K * x))) - K_inv diff_y = diff(y, x) f_diff = lambdify(x, diff_y) # atan2计算核心逻辑 dy = f_diff(x_h) dx = 1 theta = atan2(dy, dx) # 若需要夹角范围落在 [0, 2π) 可打开下方注释 # theta = theta + 2 * pi if theta < 0 else theta
补充说明
- Python 标准库
math.atan2、数值库numpy.atan2的参数顺序均为atan2(dy, dx),不要颠倒两个参数的位置 - 若你需要计算切线反方向和水平线的夹角,将
dx改为-1即可 - 相比
atan返回的[-π/2, π/2]范围,atan2返回范围为[-π, π],可以正确区分第二、第三象限的夹角
内容的提问来源于stack exchange,提问作者KAAM
相关产品推荐
相关产品推荐

