You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SymPy变量t设置0到π的范围以简化sqrt(sin(t)**2)?

在SymPy中限定变量范围以简化表达式

当你运行以下代码时:

from sympy import sin, sqrt, symbols
t = symbols('t')
sqrt(sin(t)**2)

SymPy会返回sqrt(sin(t)**2)而非sin(t),这是因为它默认不知道变量t的取值范围。要让SymPy识别t处于0到π之间,从而完成简化,有两种实用方法:

方法一:定义变量时直接指定范围

定义t时,通过domain参数传入区间范围,明确限定t的取值:

from sympy import sin, sqrt, symbols, Interval, pi

# 定义t为0到π闭区间内的实数
t = symbols('t', domain=Interval(0, pi))
expr = sqrt(sin(t)**2)

# 执行简化
print(expr.simplify())  # 输出:sin(t)

方法二:简化时传入范围假设

如果t已提前定义,可在调用simplify函数时,通过assumptions参数补充t的范围条件:

from sympy import sin, sqrt, symbols, simplify, Interval, pi

t = symbols('t')
expr = sqrt(sin(t)**2)

# 简化时指定t属于0到π区间
simplified_expr = simplify(expr, assumptions={t: Interval(0, pi)})
print(simplified_expr)  # 输出:sin(t)

核心原因是:在0到π的区间内,sin(t)的值始终非负,因此sqrt(sin(t)**2)等价于sin(t),SymPy在明确这个范围后就能自动完成简化。

内容的提问来源于stack exchange,提问作者Diego Andres Alvarez Marin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:57:06