You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy polyroots中旋转伴随矩阵的误差降低原理及等价性疑问

关于NumPy polyroots中旋转伴随矩阵的疑问解答

为什么旋转后的伴随矩阵与原矩阵得到的根相同?

首先明确:代码里的[::-1,::-1]是对矩阵做上下翻转+左右翻转的旋转操作,旋转后的矩阵特征值是原伴随矩阵特征值的倒数(根为0的情况除外)。但NumPy在后续步骤中会将这些特征值再取倒数,最终结果和直接用原伴随矩阵求根完全一致。

从数学层面看,原伴随矩阵对应多项式 ( P(x) = c_0 + c_1x + ... + c_nx^n ),它的特征值就是 ( P(x)=0 ) 的根。旋转后的矩阵对应的是反转多项式 ( Q(x) = c_n + c_{n-1}x + ... + c_0x^n = x^n P(1/x) ),显然 ( Q(r)=0 ) 等价于 ( P(1/r)=0 )(当r≠0时),所以Q(x)的根是P(x)根的倒数。只要对旋转矩阵的特征值取倒数,就能得到原多项式的根。

为什么旋转伴随矩阵能降低误差?

这是数值线性代数里的数值稳定性优化:

  • 当多项式的根模长差异极大时(比如有的根远大于1,有的远小于1),直接构造原伴随矩阵求特征值,会因矩阵条件数过高导致数值误差被放大。
  • 旋转后的伴随矩阵对应反转多项式,其根是原根的倒数,相当于把原多项式中“模长过小的根”转化为“模长过大的根”,反之亦然。这样求特征值时,矩阵的条件数更优,能减少浮点运算带来的误差,取倒数后得到的原根精度更高。
  • 简单来说,这种操作把数值计算中易出错的部分转移到更稳定的区间,最终提升了整体求根的精度。

内容的提问来源于stack exchange,提问作者harsanyidani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:35:05