我用matlab计算 10^(-5) 减去 0.00001为什么不是0 呢?

写入a=10^(-5)-0.00001,得到的结果是a = -1.694065894508601e-021希望大家帮忙啊,谢谢

第1个回答  2012-12-10
matlab算出来就是有误差的,你可以在主界面中输入eps,会显示matlab所能识别的最小的数,你得到的结果比eps还小,所以对于matlab来说,就是0了追问

非常感谢你的回答,那有没有只需要在程序的开始输入,就能控制所有的计算精度的方法呢?我知道digits()和vpa,但是有没有不用每次都输入的呢?非常感谢

第2个回答  2012-12-10
一般程序语言在设置数据类型时都有特定的规则,所以在跟0比较时很容易出错。通常的做法是设定一个误差限例如1e-5等。在matlab里面有规定误差限eps,在跟零判断时可以选择是否在误差限之内 例如 10^(-5)-0.00001 == eps 作为判断的条件追问

非常感谢你的回答,那有没有只需要在程序的开始输入,就能控制所有的计算精度的方法呢?我知道digits()和vpa,但是有没有不用每次都输入的呢?非常感谢

追答

不好意思,这个我也不太清楚,也没有试过,你可以查一下资料,我想应该是可以的吧

本回答被提问者采纳

我用matlab计算 10^(-5) 减去 0.00001为什么不是0 呢?
matlab算出来就是有误差的,你可以在主界面中输入eps,会显示matlab所能识别的最小的数,你得到的结果比eps还小,所以对于matlab来说,就是0了

大神帮我看一下,我用matlab运行之后stats得到3个0,如图。
---运行结果为:a = 1.0e+05 0.0000 0.0000 0.0000 3.4560

如何将matlab表达式中小于某一精度的数设为0?
可以用x=(x>jingdu)*x;来实现,这样效率比用if语句高 (x>jingdu)表示x>jingdu时为1,反之为0 jingdu可以自己设定,matlab里面最小的是eps 就是这个意思,你对每个系数进行这样的操作就行了

matlab while语句运行不了怎么回事
程序本身没有问题,你保存的文件名有问题。 min是MATLAB自带的函数,不可以把一个m文件保存为min.m。

MATLAB中10e-5什么意思
e-5表示10的负5次方 10e-5意思是10×10的负5次方 = 10^(-4)>> 1e-5 ans = 1.0000e-005 >> 10^(-5)ans = 1.0000e-005 >> 10e-5 ans = 1.0000e-004

matlab 曲线拟合cftool中怎样设置待定参数的精度(增加小数位数)
我们以一组多项式数据为例,进行示例,假如多项式是y=4x^3+3x^2+2产生的数据,x取0到3之间间隔为0.3的数。具体数据如下:调用工具箱:关于如何调用工具箱我在其他经验中有详细的介绍,有兴趣的可以查看。这里我们用命令cftool进行调用拟合工具箱,在MATLAB主窗口中输入 cftool 回车可以看到如下拟合工具箱界面拟合操作步骤...

matlab画图和直接计算值不一样
当x取某些值时,1-25.14*x<0,log(1-25.14*x)无意义,导致错误。

matlab小问题,如图,输入 u1=26e-06得到 2.6000e-05 为什么变成5了呢...
26e-06=26x10^(-6)=26x0.000001=0.000026 2.6e-05=2.5x10^(-5)=2.6x0.00001=0.000026

matlab中for循环为什么只运行了一次
把第二行的k=size(h0);换成k=length(h0);因为size返回数组[1,120],在后面的for里变成了for i=1:1.

matlab中怎样控制坐标轴范围
最后两行换一下顺序 即 plot(Z1,-Z2)axis([0,400,0,150]);%控制坐标轴范围

相似回答
大家正在搜