matlab 判断不等式>> (1-1)*(1-1)+(0-0.2)*(0-0.2)==0.04ans =0为什么会是ans=0呢...就问啊
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 15:48:51
![matlab 判断不等式>> (1-1)*(1-1)+(0-0.2)*(0-0.2)==0.04ans =0为什么会是ans=0呢...就问啊](/uploads/image/z/5246510-14-0.jpg?t=matlab+%E5%88%A4%E6%96%AD%E4%B8%8D%E7%AD%89%E5%BC%8F%3E%3E+%281-1%29%2A%281-1%29%2B%280-0.2%29%2A%280-0.2%29%3D%3D0.04ans+%3D0%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E6%98%AFans%3D0%E5%91%A2...%E5%B0%B1%E9%97%AE%E5%95%8A)
matlab 判断不等式>> (1-1)*(1-1)+(0-0.2)*(0-0.2)==0.04ans =0为什么会是ans=0呢...就问啊
matlab 判断不等式
>> (1-1)*(1-1)+(0-0.2)*(0-0.2)==0.04
ans =
0
为什么会是ans=0呢...就问啊
matlab 判断不等式>> (1-1)*(1-1)+(0-0.2)*(0-0.2)==0.04ans =0为什么会是ans=0呢...就问啊
计算机误差造成的,这样的例子很多.
主要原因是计算中有小数,按照双精度储存,计算中会有截断误差,试试下面:
0.2*0.2-0.04
ans =
6.9389e-18
对于这种问题,不要直接判断相等,给一个误差限就好,判断相等改为
abs((1-1)*(1-1)+(0-0.2)*(0-0.2)-0.04)
是舍入误差的问题,和c语言一样
判断两个浮点数是否相等要判断两数的差是不是小于某个小值
abs((1-1)*(1-1)+(0-0.2)*(0-0.2)-0.04)
1
eps是系统定义的浮点误差,两数差小于则个值,说明在舍入误差的范围内,两值相等
或者
sym((1-1)*(1-1)+(0-0.2)*(0-0.2...
全部展开
是舍入误差的问题,和c语言一样
判断两个浮点数是否相等要判断两数的差是不是小于某个小值
abs((1-1)*(1-1)+(0-0.2)*(0-0.2)-0.04)
1
eps是系统定义的浮点误差,两数差小于则个值,说明在舍入误差的范围内,两值相等
或者
sym((1-1)*(1-1)+(0-0.2)*(0-0.2))==0.04
ans =
1
用符号运算,就可以得到精确的解,能够用==判断是否相等
收起