我在Sage中使用以下地图:
f = lambda x: sgn(x)*sgn(x);
对于 x = 0 f(x)= 0 , x x(x)= 1 = 0 ;
在符号结果中, sgn(x)^ 2 , sgn(x)^ 4 和 sgn(x)^ 8 等被视为不平等,即使它们对于 x 的所有值都是相等的。有没有办法可以替代像:
sgn(x)^2 == sgn(x)^4 == sgn(x)^8
对于所有这些关系的出现,以及 x 的所有符号值?
我可以为每个符号创建一个新的替换规则,例如
result.subs(sgn(c)^2 == sgn(c)^4).subs(sgn(d)^2 == sgn(d)^4)...
等等,但这似乎难以控制。
答案 0 :(得分:2)
这对我来说可能是一个愚蠢的问题......你的结果的性质是否可以影响?
sage: f(x) = sgn(x)^2
sage: f
x |--> sgn(x)^2
sage: Z = (1+f)^3
sage: Z = Z.expand()
sage: Z
x |--> sgn(x)^6 + 3*sgn(x)^4 + 3*sgn(x)^2 + 1
sage: Z.factor()
x |--> (sgn(x)^2 + 1)^3
在这种情况下,它会使你的问题没有实际意义,希望如此:
sage: Z.subs(sgn(x)^2==x)
x |--> (x + 1)^3
这不是你的潜艇,仅作为一个例子。
答案 1 :(得分:1)
显然,Sage允许在替换中使用通配符(here's the example that tipped me off)。所以我做了类似的事情:
var('a,b,c,d,e,f');
w = SR.wild(0);
result = f(a,b,c,d,e,f).subs(sgn(w)^4 == sgn(w)^2).subs(sgn(w)^8 == sgn(w)^2);
它有效!更容易。