栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

测试矩阵在有限域上是否可逆

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试矩阵在有限域上是否可逆

为此,最好使用Sage或其他一些合适的工具。

以下只是做某事的不复杂的非专家尝试,但是枢轴的高斯消去应该给出可逆性的确切结果:

import randomfrom scipy.linalg import toeplitzimport numpy as npdef 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 Truen = 10column = [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是
-
对布尔,和一元运算
-
+
。但是,乘法是相同的。

>>> x = np.array([0, 1], dtype=np.bool_)>>> x[:,None] - x[None,:]array([[False,  True],       [ True, False]], dtype=bool)>>> x[:,None] * x[None,:]array([[False, False],       [False,  True]], dtype=bool)

上面的高斯消除仅使用这些运算,因此可以正常工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号