天天看点

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

满意答案

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

hunghsi

2013.09.23

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

采纳率: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分享举报