用matlab求π的近似值 π/4=1-1/3+1/5-1/7……直到某一项的绝对值小于10^-6

如题所述

如下:

y=0;

for n=1:1000000%%%

xx=(-1)^(n-1)/(2*n-1);

if abs(xx)>10^(-6)

y=y+xx;

else

break

end

end

fprintf('π的近似值为%.6f ,共需迭代%d步\n',y*4,n)。

介绍

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
syms n
x=(-1)^(n-1)/(2*n-1);
n=1;
xx=eval(x);%%%可换为xx=subs(x)
y=0;
while abs(xx)>10^(-6)
y=y+xx;
n=n+1;
xx=eval(x);
end
disp(['π的近似值为' num2str(y*4)])
上面的方法由于涉及符号运算,所以特别特别慢,我试了一下15分钟都没算出来,但程序肯定没问题,因为当精度降低后还是有结果的,下面这种方法很快,因为这是matlab所擅长的数值计算。

y=0;
for n=1:1000000%%%这里要尽量的大
xx=(-1)^(n-1)/(2*n-1);
if abs(xx)>10^(-6)
y=y+xx;
else
break
end
end
fprintf('π的近似值为%.6f ,共需迭代%d步\n',y*4,n)追问

幸苦了 谢谢了
y=0;
for n=1:1000001
s=(-1)^(n-1)/(2*n-1);
if abs(s)>10^-6
y=y+s;
else
end
end
y=y*4;
y
我大致改了一下
你的结果是 π的近似值为3.141591 ,共需迭代500001步
这个 迭代500001步是什么意思...小弟刚学MATLAB 能加q细聊不 502324343

本回答被提问者采纳
相似回答