2012-05-07 5 views
0

私は、次のコードを使用して、X47 x 3正規化された計画行列の列和を計算しようとしている:予期しない動作のw/SUM()関数

sum(X) 

ここXのコンテンツです

X = 

    1.0000e+00 1.3001e-01 -2.2368e-01 
    1.0000e+00 -5.0419e-01 -2.2368e-01 
    1.0000e+00 5.0248e-01 -2.2368e-01 
    1.0000e+00 -7.3572e-01 -1.5378e+00 
    1.0000e+00 1.2575e+00 1.0904e+00 
    1.0000e+00 -1.9732e-02 1.0904e+00 
    1.0000e+00 -5.8724e-01 -2.2368e-01 
    1.0000e+00 -7.2188e-01 -2.2368e-01 
    1.0000e+00 -7.8102e-01 -2.2368e-01 
    1.0000e+00 -6.3757e-01 -2.2368e-01 
    1.0000e+00 -7.6357e-02 1.0904e+00 
    1.0000e+00 -8.5674e-04 -2.2368e-01 
    1.0000e+00 -1.3927e-01 -2.2368e-01 
    1.0000e+00 3.1173e+00 2.4045e+00 
    1.0000e+00 -9.2196e-01 -2.2368e-01 
    1.0000e+00 3.7664e-01 1.0904e+00 
    1.0000e+00 -8.5652e-01 -1.5378e+00 
    1.0000e+00 -9.6222e-01 -2.2368e-01 
    1.0000e+00 7.6547e-01 1.0904e+00 
    1.0000e+00 1.2965e+00 1.0904e+00 
    1.0000e+00 -2.9405e-01 -2.2368e-01 
    1.0000e+00 -1.4179e-01 -1.5378e+00 
    1.0000e+00 -4.9916e-01 -2.2368e-01 
    1.0000e+00 -4.8673e-02 1.0904e+00 
    1.0000e+00 2.3774e+00 -2.2368e-01 
    1.0000e+00 -1.1334e+00 -2.2368e-01 
    1.0000e+00 -6.8287e-01 -2.2368e-01 
    1.0000e+00 6.6103e-01 -2.2368e-01 
    1.0000e+00 2.5081e-01 -2.2368e-01 
    1.0000e+00 8.0070e-01 -2.2368e-01 
    1.0000e+00 -2.0345e-01 -1.5378e+00 
    1.0000e+00 -1.2592e+00 -2.8519e+00 
    1.0000e+00 4.9477e-02 1.0904e+00 
    1.0000e+00 1.4299e+00 -2.2368e-01 
    1.0000e+00 -2.3868e-01 1.0904e+00 
    1.0000e+00 -7.0930e-01 -2.2368e-01 
    1.0000e+00 -9.5845e-01 -2.2368e-01 
    1.0000e+00 1.6524e-01 1.0904e+00 
    1.0000e+00 2.7864e+00 1.0904e+00 
    1.0000e+00 2.0299e-01 1.0904e+00 
    1.0000e+00 -4.2366e-01 -1.5378e+00 
    1.0000e+00 2.9863e-01 -2.2368e-01 
    1.0000e+00 7.1262e-01 1.0904e+00 
    1.0000e+00 -1.0075e+00 -2.2368e-01 
    1.0000e+00 -1.4454e+00 -1.5378e+00 
    1.0000e+00 -1.8709e-01 1.0904e+00 
    1.0000e+00 -1.0037e+00 -2.2368e-01 

和:

ans = 

     4.7000e+01 1.0885e-15 1.2684e-14 

合計列1用されます正しいが、他のものは途方もない。何かご意見は?

+0

あなたは第二の二列のための答えがあることを期待して何をすべきか? – Richante

+0

私は「47.000000000000000 0.000188260000001 -0.000599999999999」 – Rasman

+0

を得ています。これらは正確に鉱山で評価されています。あなたのバージョンは? – petrichor

答えて

0

カラム2とカラム3は、ほぼゼロになるように見えます。各要素は浮動小数点値であり、浮動小数点数を加算したり減算したりするときに精度が失われることがあります。ゼロを見るのではなく、ちょうど非常に小さい数字(10^-15!)を見ているだけです。簡単な回避策はゼロにある閾値以下のすべての数値を設定することです:

mysum = sum(X); 
mysum(mysum < 1e-12) = 0 

ans = 

47.0000 0 0 
+0

これは意味があります。ありがとうございました。 – blackcompe

関連する問題