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

如何解决Mathematica中矩阵转置与自身相乘结果奇异无法求逆问题

问题解答

两种情况差异的核心原因

首先明确线性代数中关于矩阵秩的两个基础结论:

  • rank(A) ≤ min(m,n):任意m行n列的矩阵A,秩不会超过行数、列数的较小值
  • rank(A^T·A) = rank(A·A^T) = rank(A):矩阵与自身转置的乘积的秩,等于原矩阵的秩

第一种情况(B奇异)

你生成的A是3行51列的矩阵,因此rank(A)最大为3。而B = A^T·A是51行51列的方阵,它的秩最大也只能是3,远小于方阵的阶数51,属于降秩(奇异)矩阵,天然无法求逆,和A是否随机生成没有关系,是矩阵秩的固有约束导致的。

第二种情况(O可求逆)

O = A·A^T是3行3列的方阵,它的秩最大为3。随机生成的整数矩阵几乎必然满足行满秩(即rank(A)=3),因此O的秩等于方阵阶数3,属于满秩矩阵,可以正常求逆。

让第一种情况结果非奇异的方法

要让A^T·A可逆,需要保证A^T·A的秩等于它的阶数,也就是需要A为列满秩矩阵,即A的列数 ≤ 行数。
如果你需要得到51×51的可逆B矩阵,只需要调整A的生成参数,让A的行数≥51即可,示例代码如下:

A = RandomInteger[{1, 20}, {60, 51}]; (* 行数60≥列数51,保证A几乎必然列满秩 *)
B = A\[Transpose].A;
F = Inverse[B];
F // MatrixForm

代码正确性说明

你的代码本身没有语法或逻辑错误,报错是线性代数的秩约束导致的,和代码实现无关。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:04