用MATLAB程序求圆周率小数点后一百万位,急求,在线等!有采纳
展开全部
理论上说,可以用下面的语句
vpa(sym(pi),1e6)
来求,例如,求50位有效数字的做法是:
>> vpa(sym(pi),50)
ans =
3.1415926535897932384626433832795028841971693993751
或者
>> vpa(sym('pi'),50)
ans =
3.1415926535897932384626433832795028841971693993751
但实际操作上,可能会遇到以下几个问题:
1、运算时间可能会很长;
2、内存是否够用;
3、超过一定长度的字符串在命令窗口里无法显示(可以用char转换,然后写到文件中)。
追问
这个语句相当于设置了一下π的输出位数,因为100万位太长了,怎样让他显示100万位里面的后100位呢
追答
就是我上面说的第3点,超出长度(好像是25000字符)无法完整显示。
可以用char转为字符串,然后提取所需的部分。
例如,显示50位小数的后10位:
>> N=50; n=10;
>> c=char(vpa(sym(pi),1+N));
>> c(N-n+3:end)
ans =
6939937511
这里,N为保留小数点后的数字位数,n为要显示的最后n位。
要注意两点:
1、小数点前有1位数字,所以vpa函数保留N+1位;
2、由于舍入问题,最后一位可能是0而被舍去,所以显示时需要小心一些,例如取100位的最后10位:
>> N=1e2; n=10;
>> c=char(vpa(sym(pi),1+N));
>> c(N-n+3:end)
ans =
342117068
可以看到只有9位,这是因为,如果再多保留一位有效数字:
>> N=1e2+1; n=10;
>> c=char(vpa(sym(pi),1+N));
>> c(N-n+3:end)
ans =
4211706798
可见,保留100位时最后一位应该是0(可以自行补上),而如果直接取最后10位就会得到错误的结果:
>> N=1e2; n=10;
>> c=char(vpa(sym(pi),1+N));
>> c(end-9:end)
ans =
5342117068
PS:现在的分类管理员太内个什么了吧,居然推荐那么水的回答。。。。。
展开全部
在命令窗口输入pi ,在把结果显示的位数设置下
追问
是要一个计算圆周率的程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MARK
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有点意思………………………………………………………………………………今天晚上试试看!
追问
能尽快吗?晚上八点前可以吗
追答
看样子 真的没搞定 算了半天也就算到1505位…………
集思广益吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询