如何将 2007 年的 sympy/sage/python 代码转换为现代的 sympy/python 代码?

问题描述

我在通用数字字段筛选中挣扎:第 2 轮!像往常一样:英语不是我的第一语言,所以“对不起,英语不好”。 所以:我正在尝试实现这个算法,并在很大程度上依赖于 sympy。 但我的部分工作也基于 Pr 的代码。 William Stein (https://wstein.org/misc/aly-lll/gnfs.html),2007 年用 python/sympy/sage 编写。

其中有一段代码(当然,这恰好是最重要的代码之一):

def find_kernel_vectors(M):
    return M.kernel().basis_matrix().rows()    [1]

它将应用矩阵:

M = Matrix(GF(2),len(sel),ev)    [2]

其中 sel一个列表,ev 是矩阵的系数,每个系数都是 0 或 1。

然而,当我复制粘贴它,添加from sympy import Matrix,GF时,我遇到了很多麻烦。

执行 [2] 后,我收到错误消息 GF(2) is not an integer 我查找了如何在 sympy 中使用矩阵,并从我收集的内容中查找了可接受输入中的系数列表。

所以我决定将 M 定义如下,以便能够测试 [1] :

M = Matrix(ev)

在执行 1 时,我收到错误消息 MutableDenseMatrix has no attribute kernel

问题是,这样的事情不是第一次发生,因为 Pr。 Stein 正在使用 2007 版的 python/sympy/sage 进行编码。

我真的不认为 [2] 的问题是一个实际问题,因为正如我所说,我的矩阵的系数已经是 0 或 1(即 GF(2) 的元素),但是我不确定。但我确信 [1] 是一个我不知道要解决的大问题。

我相信这一切都归结为 2007 年 sage/sympy/python 到现代 python 之间的翻译,所以如果有人知道怎么做,它会保存我的代码

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)