以下是数据:
probs_caseA_1 = reshape([0.06285693429791894300 ],[1 1]);
probs_caseA_2 = reshape([0.06285693429791905400 ],[1 1]);
probs_caseB_1 = reshape([0.93714306570208106000 ],[1 1]);
probs_caseB_2 = reshape([0.93714306570208095000 ],[1 1])
caseA
和caseB
是两个相互排斥的事件,因此它们的概率总和为1:
>> probs_caseA_1 + probs_caseB_1 - 1 <= eps(1)
ans =
1
>> probs_caseA_2 + probs_caseB_2 - 1 <= eps(1)
ans =
1
后缀_1
和_2
表示生成案例A和B概率的两种不同方式。当然,从概念上讲,对于案例A和案例B,两个概率是相同的。
为什么在进行此比较时会出现以下行为:
abs(probs_caseA_1 - probs_caseA_2) <= ...
max(eps(probs_caseA_1), eps(probs_caseA_2))
abs(probs_caseB_1 - probs_caseB_2) <= ...
max(eps(probs_caseB_1), eps(probs_caseB_2))
给出:
>> abs(probs_caseA_1 - probs_caseA_2) <= ...
max(eps(probs_caseA_1), eps(probs_caseA_2))
ans =
0
>> abs(probs_caseB_1 - probs_caseB_2) <= ...
max(eps(probs_caseB_1), eps(probs_caseB_2))
ans =
1
请注意,这是说情况B的概率是相同的但情况A的情况不是,无论方法1还是2都用于计算它,但我们已经证明案例A和案例的总和B概率(机器)等于1.
答案 0 :(得分:0)
您的变量&#34; caseA
&#34;在小数点后面有更多的零。因此eps(caseA)
和eps(caseB)
不会给你相同的价值! eps(x)
返回从abs(x)到下一个与x相同精度的较大浮点数的正距离。
eps(caseA) < eps(caseB)
但是
(probs_caseA_1 - probs_caseA_2) = (probs_caseB_1 - probs_caseB_2)
因此,您的两个abs(...) <= max(...)
可能会产生不同的结果
eps(0.01)
eps(0.001)
每次添加零时,您将更接近下一个更大的浮点数。
您可以阅读this article了解更多详情