首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab双精度混淆

matlab双精度混淆
EN

Stack Overflow用户
提问于 2016-07-06 08:30:24
回答 1查看 106关注 0票数 2

默认情况下,Matlab将输入设置为双精度,因此如果输入a=1/3,则变量将以双精度转换。

代码语言:javascript
复制
>> a=1/3
    a =0.3333

>> whos('a')
    a         1x1                 8  double  

但是,当我随后输入vpa(a,100)时,我得到:

代码语言:javascript
复制
ans=0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

我的问题是

既然a是双精度的,只有8字节来存储数据,那么为什么vpa(a,100)的精度可以达到100位呢?总之,Matlab如何将a的精度从“双”提高到100位?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 08:36:15

这是在doc页面vpa中解释的,下面是链接。

vpa恢复普通双精度输入的精度 与精确的符号值不同,双精度值本质上包含舍入误差.当您对双精度输入调用vpa时,vpa无法恢复丢失的精度,尽管它返回的数字比双精度值多。但是,vpa可以识别和恢复p/q、pπ/q、(p/q)1/2、2q和10q的表达式的精度,其中p和q是中等大小的整数。 首先,证明vpa不能恢复双精度输入的精度.对双精度结果和相同的符号结果调用vpa。

所以答案是,Matlab足够聪明地恢复您的表达式,就像它的形式p/q一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38219486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档