2015-11-04 124 views
4

我想知道是否在模2(或甚至一般用於該目的模k)的高斯消元法曾經被地方實施,這樣我就不必另起爐竈,只是使用可用資源?高斯消元法在模2 Python代碼

+3

的可能的複製[是否有高斯消元法在Python標準的解決方案?](http://stackoverflow.com/questions/15638650/is-there-a-standard-solution-for-gauss-elimination-in-蟒蛇) – ergonaut

+1

這不是一個重複的...我在問2在高斯消除! –

回答

1

你正在尋找該算法的僞代碼存在並且是:

// A is n by m binary matrix 
    i := 1 // row and column index 
    for i := 1 to m do // for every column 
     // find non-zero element in column i, starting in row i: 
     maxi := i 
     for k := i to n do 
     if A[k,i] = 1 then maxi := k 
     end for 
     if A[maxi,i] = 1 then 
     swap rows i and maxi in A and b, but do not change the value of i 
     Now A[i,i] will contain the old value of A[maxi,i], that is 1 
     for u := i+1 to m do 
      Add A[u,i] * row i to row u, do this for BOTH, matrix A and RHS vector b 
      Now A[u,i] will be 0 
     end for 
    else 
     declare error – more than one solution exist 
    end if 
    end for 
    if n>m and if you can find zero row in A with nonzero RHS element, then 
    declare error – no solution. 
    end if 
    // now, matrix A is in upper triangular form and solution can be found 
    use back substitution to find vector x 

從這個pdf

二進制算術兩者意味着算術模2,這是你在找什麼在你的問題,如果我沒有錯。

不幸的是我沒有代碼,Python,但如果你熟悉Python,你可以簡單地爲您提供方便自己的方式通過轉換線以上的僞代碼到Python行,這個任務應該是既不困難也不長。

我使用了「高斯消去modulo 2 python」,但沒有找到你正在尋找的python代碼,但我認爲這是很好的,因爲在翻譯過程中你可以更好地理解算法和方法。編輯1:如果你也熟悉C#並且不需要努力將C#翻譯成Python,那麼Michael Anderson對這個question的回答也可能對你有所幫助。

編輯2:張貼的答案後,我繼續搜索,發現this

「在任何領域的」暗示「過模2」,甚至「過模K」對任意k ≥ 2.

它包含源代碼的Java版本和的Python版本太多。

據的最後一個環節我給你的Python版本fieldmath.py包括類BinaryField其假設是模2如你所願。

享受!

我只希望高斯 - 喬丹消除高斯消除是不是兩個不同的東西。

編輯3:如果你也熟悉VC++並且翻譯VC++到Python是而不是爲你付出努力那你也可以試試this

我希望這也回答了你的問題。

+0

這可能是我在這裏得到的最好答案。非常感謝:) –

+1

我很高興你對我的回答感到滿意,但遺憾的是我之前沒有注意到你的問題,因爲這個問題必須等待1年9個月,差不多2年,直到收到一個令人滿意的答案。 –

+0

這很好。這在2年前會非常有用:) –