如何让Sage将表达式$(x^y)^y$化简为$x^{y*y}$?
Sage符号化简$(xy)y$为$x{y2}$的实现方法
可以通过指定变量x、y的取值域为正整数,规避复数域多值分支限制,完成目标化简。
具体实现步骤
方法1:定义变量时直接指定定义域
定义符号变量时通过domain参数声明为正整数,随后调用simplify_power()方法即可完成化简,示例代码如下:
# 定义x、y为正整数类型符号变量 x = var('x', domain='positive integer') y = var('y', domain='positive integer') # 构造待化简表达式 expr = (x^y)^y # 执行幂化简 res = expr.simplify_power() print(res) # 输出:x^(y^2)
方法2:通过assume()临时添加约束
如果不需要全局限定变量定义域,也可以通过临时加假设的方式实现,代码如下:
x, y = var('x y') # 临时添加变量约束 assume(x > 0, x, 'integer') assume(y > 0, y, 'integer') expr = (x^y)^y res = expr.simplify_power() print(res) # 输出:x^(y^2)
原失败原因说明
Sage默认符号变量的取值域为复数域,此时$(xy)y$和$x{y2}$存在多值分支差异,并非严格等价,因此通用化简方法不会执行该转换。在限定变量为正整数后,两个表达式完全等价,幂化简规则即可生效。
内容的提问来源于stack exchange,提问作者mnr
相关产品推荐
相关产品推荐

