最好使用Sage和其他合适的工具。 在
以下是一个简单的非专家尝试,旋转高斯消去法应该给出可逆性的可靠结果:导入随机
from scipy.linalg import toeplitz
import numpy as np
defis_invertible_F2(a ) :
''''
determineinvertibilitybygaussianelimination
''''
a=NP.array(a,dtype=np.bool_ ) ) )。
n=a.shape[0]
forIinrange(n ) :
pivots=np.where(a[i:I]][0]
iflen(pivots )==0:
返回假
# swap pivot
piv=i pivots[0]
row=a[piv,i:].copy (
a[piv,i:]=a[i,i:]
a[i,i:]=row
# eliminate
a[i 1:i:] -=a[i 1:I,None]*row[None,]
返回真
n=10
column=[ random.choice ([ 0,1 ] ) forxinxrange(n ) ]
row=[ column [0] ] [ random.choice ] [ 0,1 ] (forxinxrange (n-1 ) ]
矩阵=Toeplitz (column,row ) )。
print(is_invertible_F2 )矩阵)
print(int(NP.round ) NP.LinaLG.det(matrix ) )2) ) ) ) ) ) 652
请注意,np.bool_仅在有限的意义上与F_2相似。 ——F2的二进制运算为bool的-,一元运算的-为{}。 但是乘法是一样的。 在
^{pr2}$
上面的高斯消去法只使用这些运算,所以很有效。 在