matlab判断两个数据是否相等的相关问题

在matlab中如何判断两个数据的值是否相等呢?我们都知道通常使用isequal()方法,调用方法如下:

tf = isequal(A, B)

然而数据在什么情况下是相等的呢?我们看如下情况

x = 1.38389652673674e-20;
y = 1.38389652673674e-20;

tf = isequal(x, y)
"""
tf =

     1
"""

我们可以看到两个完全相同的数值时,结果为1,代表相等。

x = 1.383896526736740e-20;
y = 1.38389652673674e-20;

tf = isequal(x, y)
"""
tf =

     1
"""

我们可以看到当我们在末尾加上0时,虽然此时数据提升了精确度,但是matlab还是会认为它们是相等的。

x = 1.383896526736741e-20;
y = 1.38389652673674e-20;

tf = isequal(x, y)
"""
tf =

     0
"""

我们可以看到,当我们在一个数据的末尾加上1时,此时结果为0,表示二者不相等,这符合我们数学上对于相等的定义。

然而实际中matlab中会有一个有意思的现象,代码如下:

x = 1.3838965267367400555555555555555e-20;
y = 1.38389652673674e-20;

tf = isequal(x, y)
"""
tf =

     1
"""

我们可以看到,此时数据值明显不相等,但是matlab依然认定二者是相等的,因为此时小数点后的有效数字过多,超过了matlab能够判定的位数。经过测试,matlab中只能判断到小数点后16位,16位精度后无论我们添加什么值都不会对相等的结果造成影响。 因此,在实际模拟运算中,如果小数点后的数字过多,我们需要对此稍作注意。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值