Sage 为我提供了线性拟阵错误等级的基础,或者,我做错了什么?
Sage giving me a basis of the wrong rank for a linear matroid, or, what am I doing wrong?
这是一个最小的工作示例:
import numpy as np
import sage
D = np.array([[-1., -1., -1., 0., 0., 0., 1.],
[ 1., 0., 0., -1., 1., 0., 0.],
[ 0., 1., 0., 0., -1., 1., 0.],
[ 0., 0., 1., 0., 0., -1., 0.],
[ 0., 0., 0., 1., 0., 0., -1.],
[ 1., 1., 1., 1., 1., 1., 1.]])
I = Matrix(D)
M = Matroid(I)
for base in M.bases():
A = I[:, list(base) ]
print(np.linalg.matrix_rank(A))
if np.linalg.matrix_rank(A) == 4:
print(base)
当我在我的电脑上 运行 时,它告诉我其中一个基的秩为 4,而不是 5。M.rank() 验证 5 是拟阵的秩,事实上,大多数基础都属于那个等级。然而,在一个拟阵中,所有的基础都是同一等级的,所以我对出了什么问题感到困惑。
该基础是 {0, 1, 3, 4, 6},它给出矩阵:
array([[-1., -1., 0., 0., 1.],
[ 1., 0., -1., 1., 0.],
[ 0., 1., 0., -1., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., -1.],
[ 1., 1., 1., 1., 1.]])
可以单独检查哪个有等级4。(例如,wolframalpha。)也可以验证我是否正确切入I。
我调查的另一种可能性是列顺序在传递给拟阵时是否混淆了 class。但是,调用 M.representation() returns 矩阵 D,所以我认为情况并非如此。
这是一个浮点数问题。相反,如果您使用
D = np.array([
[-1, -1, -1, 0, 0, 0, 1],
[ 1, 0, 0, -1, 1, 0, 0],
[ 0, 1, 0, 0, -1, 1, 0],
[ 0, 0, 1, 0, 0, -1, 0],
[ 0, 0, 0, 1, 0, 0, -1],
[ 1, 1, 1, 1, 1, 1, 1]])
则不会出现该问题
这是一个最小的工作示例:
import numpy as np
import sage
D = np.array([[-1., -1., -1., 0., 0., 0., 1.],
[ 1., 0., 0., -1., 1., 0., 0.],
[ 0., 1., 0., 0., -1., 1., 0.],
[ 0., 0., 1., 0., 0., -1., 0.],
[ 0., 0., 0., 1., 0., 0., -1.],
[ 1., 1., 1., 1., 1., 1., 1.]])
I = Matrix(D)
M = Matroid(I)
for base in M.bases():
A = I[:, list(base) ]
print(np.linalg.matrix_rank(A))
if np.linalg.matrix_rank(A) == 4:
print(base)
当我在我的电脑上 运行 时,它告诉我其中一个基的秩为 4,而不是 5。M.rank() 验证 5 是拟阵的秩,事实上,大多数基础都属于那个等级。然而,在一个拟阵中,所有的基础都是同一等级的,所以我对出了什么问题感到困惑。
该基础是 {0, 1, 3, 4, 6},它给出矩阵:
array([[-1., -1., 0., 0., 1.],
[ 1., 0., -1., 1., 0.],
[ 0., 1., 0., -1., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., -1.],
[ 1., 1., 1., 1., 1.]])
可以单独检查哪个有等级4。(例如,wolframalpha。)也可以验证我是否正确切入I。
我调查的另一种可能性是列顺序在传递给拟阵时是否混淆了 class。但是,调用 M.representation() returns 矩阵 D,所以我认为情况并非如此。
这是一个浮点数问题。相反,如果您使用
D = np.array([
[-1, -1, -1, 0, 0, 0, 1],
[ 1, 0, 0, -1, 1, 0, 0],
[ 0, 1, 0, 0, -1, 1, 0],
[ 0, 0, 1, 0, 0, -1, 0],
[ 0, 0, 0, 1, 0, 0, -1],
[ 1, 1, 1, 1, 1, 1, 1]])
则不会出现该问题