2017-10-29 5 views
0

を比較し、それが通常のマルコフ連鎖をシミュレートすることについてですので、私はここで行列和の各ベクトル/列1のpython:エラーは、私は大学のプロジェクトに取り組んでいる数字

がコードであることを確認する必要があり:

NRCは、NRCが等しい3

def checkingVector(vectorM): 
    y = 0 
    for x in range(0,nRC): 
     for z in range(0,nRC): 
      y += vectorM[x][z] 
      print y 
     if y != 1.0: 
      print y 
      return false 
     else : 
      y = 0 
    return true 

validMatrix = checkingVector(m) 
if validMatrix == false: 
    print "Invalid Matrix" 
    print m 
else: 
    equationA = [] 
    for x in range(0,nRC): 
     equationA.append(1) 
    equationA.append(0) 
    print equationA 
    print m 

、これはうまく機能するが、それは、このマトリックスと

(0.6 0.3 0.1) 
(0.2 0.5 0.3) 
(0.1 0.2 0.7) 
を失敗し、この場合の列/行の数を意味します

この行列の各行は1に等しいので、この行列に関数を適用すると、無効な行列が返されます。

私はy変数を出力して1が入っていることを確認していますが、プログラムはまだ関数の連合に行きます。

私は間違っていますが、どうすれば対処できますか?

答えて

0

あなたは

浮動小数点数は正確ではありませんFloating Point Arithmetic: Issues and Limitations

In [1]: 0.6 + 0.3 + 0.1 
Out[1]: 0.9999999999999999 
の被害に遭いました。したがって、等価性はテストしないでください。

if abs(y-1) <= 0.0000001: 
    # close enough 

decimal moduleを使用してください。

関連する問題