2016-05-30 4 views
1

のためのEPSの使用で、この動作を説明すると、データである:その確率は1にまとめるようここでは二重の比較

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]) 

caseAcaseBは、二つの相互に排他的なイベントです。

>> 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の確率を生成する2つの異なる方法を示します。

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 
を、私はこの比較を行うとき、私は、次の動作を取得なぜもちろん、概念的に2つの確率は、ケースAのために、ケースBの

も同じです

これは、ケースBの確率は同じであるが、ケースAの確率は、方法1または2がそれを計算するために使用されたかどうかに関わらず、ケースAとケースBの合計確率は1に等しい(機械)。

答えて

0

あなたは、変数と小数点以下「caseA」をより多くのゼロを持っています。だから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) 

だからあなたの2 abs(...) <= max(...)は、潜在的に異なる結果に

を与えるあなたが書いしようとすると、違いに気付く:

eps(0.01) 
eps(0.001) 

追加するたびにゼロを指定すると、次に大きい次の浮動小数点数に近づきます。

詳しくはthis articleをご覧ください。

関連する問題