假设我有一个表达式x + x^2 + x^3
,并且当x
的功效小于其最大功效时,我想用y
替代x
,下面是我的代码在Mathematica中:
x + x^2 + x^3 /. x^n_. /; n < 3 -> y^n
但是结果是y + y^2 + y^3
而不是y + y^2 + x^3
。我不知道我的错误在哪里。
答案 0 :(得分:2)
您可以使用Replace
Replace[x + x^2 + x^3, x^n_. /; n < 3 -> y^n, {1}]
levelspec {1}
将替换项保留到模式为Power[x, n]
的级别1(除非省略n
)。如果替换级别为2,则x
表达式内的Power
符号将被替换,n_.
默认值开始生效。 ReplaceAll
(/.
)影响所有级别,但Replace
与levelspec为{1}
一样。
没有默认的n_.
,则需要附加规则。
Replace[x + x^2 + x^3, {x^n_ /; n < 3 -> y^n, x -> y}, {1}]
反转主规则可以使用ReplaceAll
x + x^2 + x^3 /. {x^n_ /; n >= 3 -> x^n, x -> y}
另一种方法是使用Piecewise
Piecewise[{{y + y^2 + x^3, n < 3}}, x + x^2 + x^3]