如何以符合假设的方式规范化部首
How to canonicalize radicals in a way that's consistent with assumptions
在 Sage docs 中他们说函数 canonicalize_radical()
根据它在无穷大的行为选择一个分支。用他们自己的话来说,这意味着
Assumptions are not taken into account during the transformation. This may result in a branch choice inconsistent with your assumptions.
简而言之,这是一件坏事。一个简单的答案示例
assume(x<0)
sqrt(x^2).canonicalize_radical()
returns x
,并具有 assume(x>0)
的行为。至少我们会期望不同假设的行为会有所不同。
使用 Sage,是否有一种方法可以始终以始终与假设一致的方式执行此操作?我的主要目标是简化,所以也许还有另一个我不知道的功能可以做到这一点。
在 Sage Trac 服务器以及 Sage 开发人员列表和 Maxima 开发人员列表中,关于此的通信很长。这就是为什么它现在被称为 canonicalize_radical
; Maxima 文档非常清楚,这在 表达式 的某些 class 中是规范的,但在 函数 中不是规范的(多值或非多值)。这可能不是您正在寻找的答案,但 Maxima 的人听起来这是最好的答案,因为分支削减。
还有很多其他的化简套路,也在Sympy和Sage的其他部分...
在 Sage docs 中他们说函数 canonicalize_radical()
根据它在无穷大的行为选择一个分支。用他们自己的话来说,这意味着
Assumptions are not taken into account during the transformation. This may result in a branch choice inconsistent with your assumptions.
简而言之,这是一件坏事。一个简单的答案示例
assume(x<0)
sqrt(x^2).canonicalize_radical()
returns x
,并具有 assume(x>0)
的行为。至少我们会期望不同假设的行为会有所不同。
使用 Sage,是否有一种方法可以始终以始终与假设一致的方式执行此操作?我的主要目标是简化,所以也许还有另一个我不知道的功能可以做到这一点。
在 Sage Trac 服务器以及 Sage 开发人员列表和 Maxima 开发人员列表中,关于此的通信很长。这就是为什么它现在被称为 canonicalize_radical
; Maxima 文档非常清楚,这在 表达式 的某些 class 中是规范的,但在 函数 中不是规范的(多值或非多值)。这可能不是您正在寻找的答案,但 Maxima 的人听起来这是最好的答案,因为分支削减。
还有很多其他的化简套路,也在Sympy和Sage的其他部分...