假设我有一个表达式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
。我不知道我的错误在哪里。
你可以使用Replace
Replace[x + x^2 + x^3, x^n_. /; n < 3 -> y^n, {1}]
levelspec {1}
将替换为1级,其中模式为Power[x, n]
(除非省略n
)。如果替换是在2级,x
表达式中的Power
符号将被替换,n_.
默认发挥作用。 ReplaceAll
(/.
)影响所有级别,但Replace
与levelpec {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]