首页 > 解决方案 > Sympy 无法计算积分(sec(x+1)**2, x)

问题描述

我觉得奇怪的是sympy不能评估integrate(sec(x+1)**2, x)什么时候可以评估integrate(sec(x)**2, x)。我已经限制了域x以防万一,但我仍然无法评估 `sec(x+1)**2 的积分。

x, y, z = symbols('x, y, z', real=True, positive=True)

为什么 sympy 会为此苦苦挣扎?

标签: sympy

解决方案


这可以说是 SymPy 中的一个错误,但您可以通过重写 sec 来解决:

>>> integrate(sec(x+1)**2, x)
Integral(sec(x + 1)**2, x)
>>> _.rewrite(cos)  # sin or tan works too
Integral(cos(x + 1)**(-2), x)
>>> _.doit()
-2*tan(x/2 + 1/2)/(tan(x/2 + 1/2)**2 - 1)
>>> simplify(_)
tan(x + 1)

推荐阅读