为何Sympy的solveset求解sin(t)-t=0无法得到正确解t=0
Sympy
solveset求解sin(t)-t=0返回隐式解集的原因 - 默认求解域为复数域:
solveset未指定求解域时,默认搜索范围是全体复数$\mathbb{C}$。方程$\sin(t) = t$在复数域下存在无穷多个非实根,Sympy无法枚举所有解,因此会返回满足方程的复数集合的隐式表示。 - 未触发实域根分析逻辑:实域下$\sin(t) - t$的导数为$\cos(t)-1 \leq 0$,函数在全体实数上单调不增,仅有$t=0$一个实根。但这个推导仅在实域下成立,Sympy默认不会在复域求解时主动做实域专属的单调性分析,因此无法直接返回实根0。
解决方法
显式指定求解域为实数域即可得到明确解:
from sympy import symbols, sin, solveset, Reals t = symbols('t') solveset(sin(t) - t, t, domain=Reals) # 输出: {0}
内容的提问来源于stack exchange,提问作者Rodrigo Meireles
相关产品推荐
相关产品推荐

