我可以在Sage中使用符号方程代替吗?

时间:2014-03-23 01:15:13

标签: sage computer-algebra-systems symbolic-computation

我在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)...

等等,但这似乎难以控制。

2 个答案:

答案 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);

它有效!更容易。