Wolfram mathematica 如何根据mathematica中x的mod 3结果选择x的逐项幂

Wolfram mathematica 如何根据mathematica中x的mod 3结果选择x的逐项幂,wolfram-mathematica,Wolfram Mathematica,例如,我有一个x的多项式 x^4/s + x^3 + x^2*s + x^3*s^2 + x 我想做的是: 根据(x的指数)mod 3的结果 所以我想得到: x^4=>2 x^3=>1 x^2=>3 x^1=>2 因此,对于给定的示例,我得到 2/s+1+3s+s^2+2 如何通过编程实现这一点?谢谢 以下内容: (x^4/s + x^3 + x^2*s + x^3*s^2 + x) /. x^(a : _ : 1) :> (Mod[a, 3] + 1) 似乎是这样 编辑:回答评论

例如,我有一个x的多项式

x^4/s +  x^3 + x^2*s + x^3*s^2 + x
我想做的是:
根据(x的指数)mod 3的结果

所以我想得到: x^4=>2 x^3=>1 x^2=>3 x^1=>2 因此,对于给定的示例,我得到

2/s+1+3s+s^2+2
如何通过编程实现这一点?谢谢

以下内容:

(x^4/s + x^3 + x^2*s + x^3*s^2 + x) /. x^(a : _ : 1) :> (Mod[a, 3] + 1)
似乎是这样

编辑:回答评论:

In[4]:= (x^4/s + x^3 + x^2*s + x^3*s^2 + x) /. 
    x^(a : _ : 1) :> (Mod[a, 3] /. {0 :> m, 1 :> n, 2 :> p})


Out[4]= m + n + n/s + p s + m s^2
以下是:

(x^4/s + x^3 + x^2*s + x^3*s^2 + x) /. x^(a : _ : 1) :> (Mod[a, 3] + 1)
似乎是这样

编辑:回答评论:

In[4]:= (x^4/s + x^3 + x^2*s + x^3*s^2 + x) /. 
    x^(a : _ : 1) :> (Mod[a, 3] /. {0 :> m, 1 :> n, 2 :> p})


Out[4]= m + n + n/s + p s + m s^2

在您的示例中,x^3的系数为(1+s^2)。。。你在做什么?我想我不明白“根据x的指数加3的结果,…”是的,但这和1+s^2是一样的。希望现在一切都清楚了。对不起,前面的意思很模糊。在您的示例中,x^3的系数是(1+s^2)。。。你在做什么?我想我不明白“根据x的指数加3的结果,…”是的,但这和1+s^2是一样的。希望现在一切都清楚了。对不起,前面的意思很模糊。如果我有另一个对应规则,即如果它是0,请将x^*更改为m;如果是1,则将x^*更改为n;如果是2,将x^*改为p@Leonid Shifrin:谢谢。抱歉继续问。用另一个函数求值f[n]替换x^n怎么样?@Qiang Li:答案更简单-规则是
x^(n::1):>f[n]
@Qiang我理解您希望根据前面的答案对评论提出更多的问题,但这不是有效的方式。如果您这样做,新问题不会被编入索引,并且对新用户没有用处。我建议提出另一个问题和/或编辑您的原始问题。@belisarius:这是什么意思?如果我有另一个对应规则,即如果是0,将x^*更改为m;如果是1,则将x^*更改为n;如果是2,将x^*改为p@Leonid Shifrin:谢谢。抱歉继续问。用另一个函数求值f[n]替换x^n怎么样?@Qiang Li:答案更简单-规则是
x^(n::1):>f[n]
@Qiang我理解您希望根据前面的答案对评论提出更多的问题,但这不是有效的方式。如果您这样做,新问题不会被编入索引,并且对新用户没有用处。我建议提出另一个问题和/或编辑你原来的问题。@belisarius:这是什么意思?