用matlab写程序求圆周率(精度e=10^-7),求大神帮助,万分感谢 5
2个回答
2015-12-12
展开全部
(1)不要显示的在语句后面加上分号
(2)不知道你有没有保存在正确的路径上
(3)在命令符下先clear一下
我修改了一点点,你看一下:
function calpi(n)
syms a;
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1');
y=3*2^n*vpa(a,n+5);
Pi=y
保存在work文件夹下,calpi.m
>>clear
>>calpi(100)
>>Pi =
3.1415926535897932384626433832795
你自己再弄一下,应该可以的!
(2)不知道你有没有保存在正确的路径上
(3)在命令符下先clear一下
我修改了一点点,你看一下:
function calpi(n)
syms a;
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1');
y=3*2^n*vpa(a,n+5);
Pi=y
保存在work文件夹下,calpi.m
>>clear
>>calpi(100)
>>Pi =
3.1415926535897932384626433832795
你自己再弄一下,应该可以的!
追问
亲,精度呢,这条百度上有哎,我要的是能控制精度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
圆周率的计算方法很多,我提供一个:
n=1;
absol=0.1;
while absol>1e-7
syms a
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1');
y=3*2^n*vpa(a,n+5);
absol=abs(double(pi-y));
disp('绝对误差大于1e-7,再计算')
n=n+1;
end
disp('绝对误差小于1e-7,不再计算')
s=sprintf('计算次数n=%d',n);
disp(s)
Pi=y
n=1;
absol=0.1;
while absol>1e-7
syms a
for i=1:n
a=sqrt(2-sqrt(4-a^2));
end
a=subs(a,'a','1');
y=3*2^n*vpa(a,n+5);
absol=abs(double(pi-y));
disp('绝对误差大于1e-7,再计算')
n=n+1;
end
disp('绝对误差小于1e-7,不再计算')
s=sprintf('计算次数n=%d',n);
disp(s)
Pi=y
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询