Matlab 计算pi的级数代码 找错误

问题描述:

Matlab 计算pi的级数代码 找错误
pi=4- 4/3 +4/5 -4/7 .
计算前100个项的和
我写了一个,但是不行.希望大家看看哪里有错?
function [pai]= nterm (n)
for a=1:4:1+4*(n/2) %a为正数部分
for b=3:4:3+ 4*(n/2) %b为负数部分
c=4/a;
d=-4/b;
pai=sum(c+d)
end
end
end
当然这个只能算偶数的n
1个回答 分类:综合 2014-11-23

问题解答:

我来补答
首先你得算法肯定是不对的,不用双层循环.其实每一项都是有规律的,第n项是(-1)^(n-1)*4/(2*n-1),不用分正负数处理,并且n也不限定于奇数偶数function [pai]= nterm (n)
    pai = 0.0;
    for i=1:n
        pai = pai + (-1)^(i+1)*4/(2*i-1);
    end
end另外,既然用了matlab,就不用这么循环处理了,否则显示不出其矩阵求解的优势
这个问题其实可以更简洁:function [pai]= nterm (n)
     i=1:n;
     pai=4*sum((-1).^(i-1)*1./(2*i-1));
end
再问: 我不理解为什么用我的最后得出来的 c和d都不是数组而是单个数值。。
这是在考试中的题目所以没练过。只能想到双循环咯。。
再答: 你用了for循环,for循环就是针对每一个数的,那当然是数值喽我理解你的意思了,你只要把for去掉,然后改用矩阵元素运算就可以了,其实这个思路跟我上面的第二种方法是一样的,只不过你的分了正负处理function [pai]= nterm (n)  
    a=1:4:1+4*(n/2);  %a为正数部分
    b=3:4:3+4*(n/2); %b为负数部分
    c=4./a; % 注意是点除,这是矩阵中每个元素的除法
    d=-4./b;
    pai=sum(c+d);
end
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识