matlab 显示精度不对,matlab中显示精度的问题

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

hunghsi

2013.09.23

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:57%    等级:8

已帮助:61人

楼上的回答都没有切中实质。楼主的问题涉及到数值计算和符号运算的概念。

所谓MATLAB默认的数据类型是双精度浮点数(double),那是针对普通的数值计算而言的,按照IEEE 754的规范,双精度浮点数有52个尾数位,按十进制理解,大约有16位有效数字。

除了基本的数值计算之外,MATLAB还提供了符号数学工具箱(Symbolic Math Toolbox)。能够进行符号运算的软件称为“计算机代数系统”(Computer Algebra System),比较著名的计算机代数系统包括Maple、Mathematica等。MATLAB自身并不具备符号运算的能力,但通过其它的符号运算内核支持(早期用的是Maple,2008年之后改为MuPad),通过定义一套访问符号运算内核的接口函数,可以实现符号运算(也就是符号数学工具箱)。

符号运算的典型应用包括求函数微积分、极限、表达式的变形和化简等等,所求出的解是无误差的。符号运算还有一个重要应用,就是高精度求值,或者所谓任意精度算术(Arbitrary-precision arithmetic),MATLAB中称为可变精度算术(Variable precision arithmetic),也就是楼主所调用的vpa函数,理论上可以实现任意位有效数字的计算。

楼主所调用的digits和vpa函数都属于符号数学工具箱的函数,它们的实现并非通过MATLAB基本的双精度浮点数,这就是问题之所在。

至于说符号运算是怎样实现的,这个问题太宏大,楼主有兴趣的可以参考一下维基百科的一些内容:

http://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BB%A3%E6%95%B0%E7%B3%BB%E7%BB%9F

http://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BB%A3%E6%95%B0%E7%B3%BB%E7%BB%9F%E6%AF%94%E8%BE%83

http://en.wikipedia.org/wiki/Arbitrary-precision

写了半个多小时,希望对楼主有帮助。

00分享举报

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值