如何减少矩阵求逆时间?

问题描述 投票:0回答:1

我正在编写一个程序,需要我多次找到复杂的 21*21 对称矩阵的逆矩阵(大约 3500 万次)。我最初使用 scipy.linalg 中的 inv() 来完成此操作。有用。现在我需要减少所需的时间。

网上查了方法,发现可以用LU分解。当我尝试比较 scipy inv 和 LU 方法所花费的时间时。我发现 scipy.inv 即使仅与因式分解部分相比也花费更少的时间。现在我有多个问题-->

  1. 是什么使得 scipy 使用的时间比 numpy 少得多?如何/在哪里可以找到 scipy 用于查找矩阵逆的确切方法?
  2. 如果我想进一步减少计算时间(主要是因为矩阵求逆)该怎么办? 欢迎任何其他方法/评论/更正。

在此输入图片描述

matrix scipy time-complexity linear-algebra matrix-inverse
1个回答
0
投票

如果要求逆的矩阵只是前一个矩阵的“秩一”更新,您可以使用 Sherman Morrison 公式
“秩一”更新意味着将秩为1的矩阵添加到原始矩阵中。

Source: https://en.wikipedia.org/wiki/Sherman%E2%80%93Morrison_formula

u
v
是向量。

这在本文中进行了解释。

© www.soinside.com 2019 - 2024. All rights reserved.