11
$\开始组$

我不确定这里是否是问这个问题的合适地方,但我相信这里会有人在工作中像Sage一样对计算机代数包进行计算。我一直在使用Sagemath来执行一些矩阵秩计算。偶尔会出现一些奇怪的结果。

例如,我必须找到一个矩阵的秩($100\乘以150$),其中包含大整数项(大小在$1$到$10^{15}$范围内的项)。当我写代码时,矩阵M声明为矩阵(ZZ、R、C),或作为矩阵(QQ、R、C),它返回大约90的秩(我认为这是正确的),而如果我将实数上的矩阵声明为矩阵(RR、R、C),它返回大约50的排名,根据我的一些猜测,我认为排名太低了。

所以,总的来说,我很好奇,实现秩计算的标准方法是什么(以及基于实数或有理数的不同),我在哪里可以阅读更多关于这些的信息?如果这些问题是由于精度误差引起的,我该如何解决?更重要的是,我如何事先知道我的计算容易受到精度误差的影响?(我试着查找了几次Sagemath的源代码,但很快就迷路了,所以我希望有人能给我指一下精确的文档/源代码)

$\端组$
14
  • 11
    $\开始组$ 我认为几乎所有超过$\mathbb{R}$的排名计算都会出错。我认为标准的建议是计算奇异值。如果你看到一些非常小的奇异值,然后是一个明显的间隙,然后是一些较大的间隙,那么你可以猜测非常小的值实际上应该是零。当然,单靠这种方法是无法严格证明任何事情的。可能是Sage在内部做了这样的事情,并应用了不适当的截止值。 $\端组$ 2017年11月28日12:29
  • 11
    $\开始组$ 线性代数的三个公理:(1)不要计算矩阵的逆(除非它是酉的)(2)不要将两个矩阵相乘。(3) 永远不要计算矩阵在实数上的秩。 $\端组$ 2017年11月28日13:02
  • 5
    $\开始组$ @尼基尔:我不确定,但我猜在$\mathbb{Q}$上,萨奇使用了精确的算术。这是否意味着你应该信任计算是一个哲学问题。我们应该相信计算机程序吗?我们应该相信手工计算吗? $\端组$ 2017年11月28日18:11
  • 4
    $\开始组$ 对于100x150矩阵,使用整数矩阵的高斯消去已经可以产生巨大的中间结果。这有时可以通过晶格缩减技巧来避免。通过对几个“随机”大素数进行模运算,在实践中也可以避免这种情况;由此产生的排名上限原则上可能不尖锐,但如果你想要一个严格的证明,你可能可以建立在mod-p结果上。(此类命令通常提供一个标志,允许您在启发式答案和带有证明但计算时间较长的答案之间进行选择。) $\端组$ 2017年11月28日18:30
  • 4
    $\开始组$ . . . 在{\bf Z}^{100}$中使用$a\。然后,该晶格的简化基应该从$60$向量$(0,a)$开始,其中$Ta=0$,因为任何不在$\ker T$中的向量$(MTa,a)$$的大小至少为$M$。一旦你找到了一个包含$60$这样的向量的基,你就完成了,因为$T$的排名最多为$150-60$。请注意,即使$M$必须取值为$10^{100}>H^6$,这也比高斯消去要好得多,高斯消去会让您使用大小为$H^{90}$的整数(比率)进行算术运算。 $\端组$ 2017年11月29日0:26

1答案1

重置为默认值
8
$\开始组$

我不知道Sage实际使用什么算法,但计算整数的排名很有趣也很容易:计算整数上矩阵秩的复杂性如果你想要好的运行时间,这并不容易,为此阿恩·斯托约翰恩(Arne Storjohann)的许多论文都表明,可以以与实际矩阵一样的速度渐近地完成这项工作(考虑到系数放大,这是一个令人惊讶的结果)。Storjohann实际上已经实现了他的算法,我确信Sage使用了这个或类似的东西。

陈、朱亮;阿恩·斯托约翰恩基于BLAS的整数矩阵精确线性代数C库,Kauers,Manuel(编辑),2005年符号和代数计算国际研讨会论文集,ISSAC’05,中国北京,2005年7月24-27日。纽约州纽约市:ACM出版社(ISBN 1-59593-095-7)。92-99 (2005).兹比1360.65086.

对于实数,计算秩的最快方法是计算奇异值分解,并丢弃某些截止值以下的奇异值(可能在$10^{-6}$左右)。正如许多人在评论中指出的那样,排名非常不稳定,所以除非您想要“伪排名”(如上所述,由奇异值的大小定义),否则不要去那里。

$\端组$
2
  • $\开始组$ 我可以在什么地方访问他们的源代码吗?我只能找到论文的链接,但找不到源代码。 $\端组$
    – 尼基尔
    2017年11月28日21:30
  • 1
    $\开始组$ 论文至少包含伪代码。 $\端组$ 2017年12月2日2:51

你的答案

点击“发布您的答案”,即表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.