在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位精度后無論我們添加什么值都不會對相等的結果造成影響, 因此,在實際模擬運算中,如果小數點后的數字過多,我們需要對此稍作注意,
碼字不易,如果大家覺得有用,請高抬貴手給一個贊讓我上推薦讓更多的人看到吧~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247249.html
標籤:其他
