用matlab求π的近似值 π/4=1-1/3+1/5-1/7……直到某一项的绝对值小于10^-6
2个回答
展开全部
如下:
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等语言完成相同的事情简捷得多。
展开全部
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)
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询