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

聊娱乐的吃瓜群众
高能答主

2021-10-14 · 真正的娱乐是应着真正的工作要求而发生的。
聊娱乐的吃瓜群众
采纳数:1652 获赞数:86472

向TA提问 私信TA
展开全部

如下:

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等语言完成相同的事情简捷得多。

victoriajll
推荐于2017-11-24 · TA获得超过4884个赞
知道大有可为答主
回答量:654
采纳率:100%
帮助的人:1045万
展开全部
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式