如何在Excel中无需显式构建子矩阵,直接用MMULT和MINVERSE求解指定子矩阵对应的方程组?
如何在Excel中无需显式构建子矩阵,直接用MMULT和MINVERSE求解指定子矩阵对应的方程组?
嘿,这个需求完全可以实现,不用手动复制粘贴子矩阵那么麻烦!核心思路是用INDEX函数来动态提取你需要的行和列,生成MINVERSE能识别的数组输入,直接套进MMULT和MINVERSE的组合里就行,一步到位。
我给你一步步拆解怎么操作:
1. 明确要保留的行和列
首先得理清:你要从原矩阵(F2:I5)里去掉第2行(b开头的那行)和第2列(a₂、b₂那列),所以需要保留的是:
- 行:原矩阵的第1、3、4行(对应Excel里的F2:I2、F4:I4、F5:I5)
- 列:原矩阵的第1、3、4列(对应Excel里的F2:F5、H2:H5、I2:I5)
(这里的行/列号是相对于原矩阵区域的序号,不是Excel的绝对行号哦)
2. 用INDEX构建动态子矩阵
INDEX函数支持用数组作为行/列参数,直接返回对应的子数组,刚好能满足MINVERSE的输入要求。
假设你的方程组是:系数矩阵是保留的3×3子矩阵,常数项是原矩阵对应行的最后一列(也就是x、z、w所在的列),那求解的公式可以这么写:
=MMULT(MINVERSE(INDEX($F$2:$I$5, {1,3,4}, {1,3,4})), INDEX($F$2:$I$5, {1,3,4}, 4))
公式拆解:
INDEX($F$2:$I$5, {1,3,4}, {1,3,4}):从原矩阵里提取第1、3、4行,第1、3、4列的所有单元格,生成你需要的3×3系数矩阵数组,直接传给MINVERSE求逆。INDEX($F$2:$I$5, {1,3,4}, 4):提取保留行的第4列(也就是x、z、w这些常数项),生成3×1的常数项数组。MMULT(...):把逆矩阵和常数项数组相乘,得到方程组的解。
3. 注意事项
- 如果是Excel 365/2021版本:直接输入公式按回车就行,结果会自动溢出到对应的单元格里。
- 如果是旧版Excel:需要先选中3个连续的单元格(因为解是3个值),输入公式后按
Ctrl+Shift+Enter作为数组公式执行。 - 一定要确保你提取的3×3系数矩阵是可逆的(行列式不为0),否则MINVERSE会返回
#NUM!错误。
进阶优化(可选)
要是你以后需要调整保留的行/列,不想每次都改公式里的数组,可以给行号、列号定义名称:
- 点击「公式」选项卡→「定义名称」
- 比如定义
RowsToKeep为={1,3,4},CoeffCols为={1,3,4} - 公式就改成:
=MMULT(MINVERSE(INDEX($F$2:$I$5, RowsToKeep, CoeffCols)), INDEX($F$2:$I$5, RowsToKeep, 4))
这样后续修改行/列的话,直接改名称的数组就行,更灵活。
备注:内容来源于stack exchange,提问作者EoDmnFOr3q
相关产品推荐
相关产品推荐

