我感到难以置信的愚蠢,我不得不问这个问题,但每个人都是一个菜鸟。对不对?!?
对于作业,我们必须实现以下总和:
PI - 3 =从i = 1到N的总和(-1)^(i + 1)/ i(i + 1)(2i + 1)(这里缺少Mathjax的耻辱)
所以在Java中:
public static double[] computeSumOfPi(int N) { //returns the value of PI computed
//with N terms of the sum and the
//last added term
double term = 0;
double sum = 0;
double[] result = new double[2];
for(int i = 1; i < N + 1; i++) {
term = Math.pow((-1),(i+1)) / i*(i+1)*(2*i+1);
sum = sum + term;
}
result[0] = sum + 3;
result[1] = term;
return result;
}
在Matlab中我尝试了以下
function [sumPi, lastTerm ] = sumForPi( n ) %sumForPi.m
for i = 0 : n
term = (-1)^(i+1) / (i*(i + 1)*(2*i + 1));
temp = temp + term;
end
sumPi = temp + 3.0;
lastTerm = term;
end
我尝试调用:
&GT;&GT; sumForPi(20)
返回以下错误:
未定义的函数或变量&#34; temp&#34;
sumForPi出错(第4行)
temp = temp + term;
如果有人能指出我(可能是简单的)错误,我会很高兴。
提前致谢!
答案 0 :(得分:2)
在阅读之前,您需要声明temp
的初始值。因此,尝试在循环之前包含temp = 0;
,即e。
function [sumPi, lastTerm ] = sumForPi( n ) %sumForPi.m
temp = 0;
for i = 0 : n
term = (-1)^(i+1) / (i*(i + 1)*(2*i + 1));
temp = temp + term;
end
sumPi = temp + 3.0;
lastTerm = term;
end