用MATLAB程序求圆周率小数点后一百万位,急求,在线等!有采纳

 我来答
tianxiawulang
推荐于2016-04-07 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2554万
展开全部

理论上说,可以用下面的语句

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:现在的分类管理员太内个什么了吧,居然推荐那么水的回答。。。。。

勤奋的2012飞虎
2015-03-08 · 超过23用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:41.7万
展开全部
在命令窗口输入pi ,在把结果显示的位数设置下
追问
是要一个计算圆周率的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lost蓅苏
2015-03-08 · TA获得超过1003个赞
知道小有建树答主
回答量:1045
采纳率:0%
帮助的人:440万
展开全部
MARK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希波鸿0HDeac
2015-03-09 · TA获得超过427个赞
知道小有建树答主
回答量:591
采纳率:68%
帮助的人:163万
展开全部
有点意思………………………………………………………………………………今天晚上试试看!
追问
能尽快吗?晚上八点前可以吗
追答
看样子 真的没搞定 算了半天也就算到1505位…………

集思广益吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式