matlab检验矩阵是否可逆,有限域上矩阵是否可逆的检验

最好使用Sage或其他合适的工具。在

以下只是简单的非专家尝试,但是旋转高斯消去法应该给出可逆性的确切结果:import random

from scipy.linalg import toeplitz

import numpy as np

def is_invertible_F2(a):

"""

Determine invertibility by Gaussian elimination

"""

a = np.array(a, dtype=np.bool_)

n = a.shape[0]

for i in range(n):

pivots = np.where(a[i:,i])[0]

if len(pivots) == 0:

return False

# 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,:]

return True

n = 10

column = [random.choice([0,1]) for x in xrange(n)]

row = [column[0]]+[random.choice([0,1]) for x in xrange(n-1)]

matrix = toeplitz(column, row)

print(is_invertible_F2(matrix))

print(int(np.round(np.linalg.det(matrix))) % 2)

请注意,np.bool_仅在有限的意义上与F_2相似——Fୱ2中的二进制运算+是bool的-,一元运算-是{}。不过,乘法是一样的。在

^{pr2}$

上面的高斯消去法只使用这些运算,所以它是有效的。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值