我想用代码计算功率和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。为什么这样做?
答案 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