如何在Sympy中将tan(x)求导结果转换为sec^2(x)形式
SymPy中将tan(x)求导结果转换为sec²(x)形式的方法
对tan(x)求导时,SymPy默认返回tan(x)**2 + 1,直接调用trigsimp()方法会得到1/cos(x)**2,无法直接输出sec(x)**2。这是因为SymPy的三角化简逻辑默认优先将所有三角函数规约为sin、cos的基础组合形式,不会主动保留sec、csc这类衍生三角函数,要得到目标形式可通过以下两种方式实现:
- 方法1:化简后调用
rewrite()做函数重写
先通过trigsimp()把求导结果化简为余弦倒数形式,再调用rewrite(sec)将所有余弦倒数项重写为正割函数即可,代码示例:from sympy import symbols, diff, tan, trigsimp, sec x = symbols('x') deriv_res = diff(tan(x), x) final_res = trigsimp(deriv_res).rewrite(sec) print(final_res) # 运行输出:sec(x)**2 - 方法2:调用FU三角规则定向转换
SymPy的fu模块内置了标准化三角恒等转换规则集,其中TR8规则专门负责将1/cos(x)类项转换为sec、1/sin(x)类项转换为csc,定向转换不会引入额外化简变动,代码示例:from sympy import symbols, diff, tan, trigsimp from sympy.simplify.fu import TR8 x = symbols('x') deriv_res = diff(tan(x), x) final_res = TR8(trigsimp(deriv_res)) print(final_res) # 运行输出:sec(x)**2
如果需要全局默认将这类余弦倒数形式统一转换为sec形式,可以在自定义化简配置中加入上述对应转换规则,无需每次单独做重写处理。
内容的提问来源于stack exchange,提问作者kracker
相关产品推荐
相关产品推荐

