复数的模的平方应该等于复数乘以其共轭,但是为什么matlab显示逻辑不正确呢?
我也试了很多数据,都不对,后来又用了isequal(),也不对,连十六位精度都是一样的也判断不等?
这是为什么?
isequal()只要是有一点不相等也是不行的,
z = 2+2i
z =
2.0000 + 2.0000i
>> z1 = abs(z)^2
z1 =
8.0000
>> z2 = z*conj(z)
z2 =
8
这两个8虽然都是double类型,但其实精度不同,z2的8才是真正的整数8;
z1:
而且如果让他俩相减的话就可以看出具体差多少:
>> z1-z2
ans =
1.7764e-15
在这里将z1向下取整一下变为整数的double,两者就相等了:
>> isequal(floor(z1),z2)
ans =
logical
1
若帮助您解决疑惑,请点击采纳(不是点赞),谢谢合作!