在Sage docs中,他们说函数canonicalize_radical()
根据其在无穷远处的行为选择分支。用他们自己的话来说,这意味着
转型期间不考虑假设。这可能导致分支选择与您的假设不一致。
简而言之,这是一件坏事。答案的一个简单例子是
assume(x<0)
sqrt(x^2).canonicalize_radical()
返回x
,其行为为assume(x>0)
。至少我们可以预期不同假设的行为会有所不同。
使用Sage,有没有一种方法可以始终如一地执行此操作,并始终与假设保持一致?我的主要目标是简化,所以也许还有另外一个我不知道的功能。
答案 0 :(得分:0)
在Sage Trac服务器以及Sage开发人员列表和Maxima开发人员列表上有很长的对应关系。这就是为什么它现在被称为canonicalize_radical
; Maxima文档非常清楚,这在某些表达式类中是规范的,而不是函数(多值或不是多值)。这可能不是你正在寻找的答案,但千里马人听起来像是因为分支削减而最好的人希望。
还有许多其他的简化例程,也在Sympy和Sage的其他部分......