Matlab 有一个内置函数,用于计算具有十进制数和有限域数的矩阵的秩。但是,如果我没记错的话,他们只计算最低排名(行排名和列排名最低)。我只想计算行秩,即找到矩阵的独立行数(在我的例子中是有限字段)。有没有功能或方法可以做到这一点?
问问题
3800 次
2 回答
1
施瓦茨,
两条评论:
您在评论中声明“等级函数在伽罗瓦域中也可以正常工作!” 我不认为这是正确的。考虑文档页面上给出的示例
gfrank
:A = [1 0 1; 2 1 0; 0 1 1]; gfrank(A,3) % gives answer 2 rank(A) % gives answer 3
但有可能我误解了一些事情!
您还说“如何检查矩阵的行是否线性独立?我在上面发布的解决方案对您来说是否合法,即获取每一行并逐一查找其与所有其他行的排名?”
我不知道你为什么说“一一找到它与所有其他行的排名”。可以有一组成对线性独立但线性相关的向量作为一个组。只需考虑向量
[0 1]
,[1 0]
,[1 1]
。没有向量是任何其他向量的倍数,但集合不是线性独立的。你的问题似乎是你有一组你知道是线性独立的向量。您向该集合添加一个向量,并想知道新集合是否仍然线性独立。正如@EitanT 所说,您需要做的就是将(行)向量组合成一个矩阵并检查它的
rank
(或gfrank
)是否等于行数。无需“一个接一个”地做任何事情。既然您知道“旧”集是线性独立的,也许有一个很好的快速算法来检查新向量是否使事物线性相关。也许在每一步你都会正交化集合,也许这会使给定新向量的线性独立性检查过程更快。这可能会在诸如 mathoverflow 之类的地方提出一个有趣的问题。
于 2012-11-21T17:55:37.547 回答