Matlab 带级数的Pi值估计

Matlab 带级数的Pi值估计,matlab,increment,series,pi,Matlab,Increment,Series,Pi,我的问题是: 使用以下数列计算π的值: ((π^2)-8)/16=[sum from 1 to pos. infinity] 1/(((2n−1)^2)*((2n+1)^2)) •找出获得π上误差绝对值小于10e所需的最小项数−八, 这是我的密码: x=0; for i=1:1000 x=x+(1/((((2*i)-1)^2)*(((2*i)+1)^2))); z=sqrt((x*16)+8); error=abs(z-pi); if (error <

我的问题是:

使用以下数列计算π的值:

((π^2)-8)/16=[sum from 1 to pos. infinity] 1/(((2n−1)^2)*((2n+1)^2))
•找出获得π上误差绝对值小于10e所需的最小项数−八,

这是我的密码:

x=0;
for i=1:1000

    x=x+(1/((((2*i)-1)^2)*(((2*i)+1)^2)));
    z=sqrt((x*16)+8);
    error=abs(z-pi);
    if (error < 10e-8)
        i
        break
    end
end
x=0;
对于i=1:1000
x=x+(1/((2*i)-1^2)*((2*i)+1^2));
z=sqrt((x*16)+8);
误差=abs(z-pi);
如果(错误<10e-8)
我
打破
结束
结束
当循环中断时,我得到的答案是81,但这不是正确的答案。我一直在试图找出我的代码有什么问题,它不能满足我的需要


我盯着代码看了很长一段时间,看不出哪里出错了。

我发现了问题。误差应该小于10^-8,而不是10e-8。不知怎的,复制时数字被改变了

嗯。。当你跳出循环时,你不想看z吗?事实上我可能会打印出z和pi之间的差异。>但这不是正确的答案为什么不呢?一切看起来都很好。Mathematica给出了同样的结果我相信这也是正确的答案,但我被告知,这并不是没有关于我在哪里犯错误的线索。当我这样做时,我得到的是
abs(z-pi)=9.7997e-08
,所以你的代码确实有效。此外,如果
i=80
,则会得到~1.01e-7的误差,即>10e-8。你期望得到什么答案?我能想到的唯一一件事是你误读了,它是(比如)1e-8而不是10e-8?@Johnny Hieu-Le这可能不是π值的错误,而是((π^2)-8)/16的错误?在这种情况下,它会给你59个条件。