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

高效执行矩阵运算:求解C=(A^T A)^(-1)A^T B的方法

计算最小二乘闭式解的高效方法

你要计算的公式 ( C=(A^T A){-1}AT B ) 是线性最小二乘问题的闭式解,完全不需要手动计算,用Excel或Python都能快速搞定,具体步骤如下:

方法一:使用Excel

Excel通过矩阵运算函数组合就能实现,注意旧版Excel需要用数组公式(按Ctrl+Shift+Enter确认),新版Excel 365支持动态数组,直接回车即可:

  • 假设矩阵A存放在A1:I18(18行9列),矩阵B存放在J1:J18(18行1列)
  • 计算 ( A^T A ):选中9×9的空白区域(比如K1:S9),输入公式 =MMULT(TRANSPOSE(A1:I18), A1:I18),按数组确认键完成
  • 求逆矩阵 ( (A^T A)^{-1} ):选中另一块9×9区域(比如K11:S19),输入 =MINVERSE(K1:S9),按数组确认键完成
  • 计算 ( A^T B ):选中9×1区域(比如T1:T9),输入 =MMULT(TRANSPOSE(A1:I18), J1:J18),按数组确认键完成
  • 最终计算C:选中9×1区域(比如U1:U9),输入 =MMULT(K11:S19, T1:T9),按数组确认键得到结果

方法二:使用Python(推荐,更高效稳定)

用numpy库处理矩阵运算最便捷,尤其是处理大规模矩阵时优势明显:

  1. 先安装并导入numpy:
    import numpy as np
    
  2. 加载矩阵A和B(可以直接定义或从文件读取):
    # 示例:直接定义矩阵(实际使用可替换为从csv/txt读取,比如np.loadtxt("A.csv"))
    A = np.array([[1,2,...], [3,4,...], ...])  # 18行9列
    B = np.array([[1], [2], ...])  # 18行1列,确保是列向量
    
  3. 两种计算方式:
    • 严格按照公式计算:
      A_T = A.T
      A_T_A = A_T @ A
      inv_A_T_A = np.linalg.inv(A_T_A)
      A_T_B = A_T @ B
      C = inv_A_T_A @ A_T_B
      
    • 更稳定的最小二乘函数(推荐,自动处理矩阵奇异情况):
      C = np.linalg.lstsq(A, B, rcond=None)[0]
      
  4. 输出结果:print(C) 就能得到9×1的矩阵C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:15