Matlab和功能

时间:2014-03-30 10:24:54

标签: matlab function

我感到难以置信的愚蠢,我不得不问这个问题,但每个人都是一个菜鸟。对不对?!?

对于作业,我们必须实现以下总和: 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;

如果有人能指出我(可能是简单的)错误,我会很高兴。

提前致谢!

1 个答案:

答案 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