Mathematica函数中的复合表达式

时间:2014-04-28 05:39:37

标签: wolfram-mathematica

我想用代码计算功率和S_p(x)= 1 ^ p + 2 ^ p + 3 ^ p + ... + x ^ p

powersum[x_,p_]:=sum=0;For[i=1,i<x,i++,sum=sum+i^p];sum

但似乎每次输出0。为什么这样做?

2 个答案:

答案 0 :(得分:1)

正如所写,Mathematica正在解析你的表达式:

 powersum[x_,p_]:=sum=0;  (*Definition ended here*)
 For[i=1,i<x,i++,sum=sum+i^p];
 sum

您需要使用在括号中包装表达式,使它们成为函数定义的所有部分。

powersum[x_,p_]:=(sum=0;For[i=1,i<x,i++,sum=sum+i^p];sum)

答案 1 :(得分:0)

通常最好使用Module[]

 powersum[x_,p_]:=Module[{sum},sum=0;For[i=1,i<x,i++,sum=sum+i^p];sum]

 powersum[x_,p_]:=Module[{sum=0},For[i=1,i<x,i++,sum=sum+i^p];sum]

这与()中的包装基本相同,除了sum在本地环境中受到保护。

当然,对于这个例子你也可以使用:

 powersum[x_,p_]:=Sum[i^p,{i,1,x-1}]

 powersum[x_, p_] := Range[x - 1]^p // Total