【问题标题】:convert this matrix equation into something numpy can understand将这个矩阵方程转换成 numpy 可以理解的东西
【发布时间】:2020-02-22 19:26:08
【问题描述】:

我知道如何用 numpy 求解基本的线性矩阵方程。

但是,我有一个矩阵 A 和方程 A^2 + xA + yI = 0,其中 x 和 y 不是向量,而是一个标量。 I是单位矩阵,0是与A匹配的维数零矩阵。

对于小型矩阵来说,这在纸上非常简单(当然假设存在解决方案),但我正在练习编码面试,预计将使用 python 解决此类问题。也许给定的矩阵会很大......

这是一个样本矩阵 A,它导致解 x=-2, y=1:

np.array([[1,1,0],
          [0,1,0]
          [0,0,1]]

在纸面上,这就像求解线性方程组 x = -2 和 x+y=-1 一样简单。我面临的问题是将上述形式的方程解析为方程组形式的方程(或者 Ax = B 形式的线性矩阵方程)。

【问题讨论】:

  • y 也是未知标量?所以你试图找到标量xy 来满足方程?
  • 是的!将编辑。
  • 您说问题是“对于小矩阵来说在纸上超级容易”,但“小”必须是 2x2,因为对于较大的矩阵,一般情况下不存在解决方案。您将拥有比未知数更多的方程式。
  • @WarrenWeckesser 对于一些稀疏矩阵,它可以工作。会有重复的方程,所以唯一方程的总数将等于未知数的总数。我要离开的例子可以在这里找到:hackerrank.com/challenges/…
  • 您能否编辑问题,以便我们在此处获得有关 stackoverflow 的所有相关信息?

标签: python numpy linear-algebra


【解决方案1】:

我面临的问题是将上述形式的方程解析为方程组形式的方程(或者 Ax = B 形式的线性矩阵方程

假设 An 列。对于具有 n 列的方阵 Q,令 E(Q) 为长度-n^2 向量通过迭代 Q 的条目形成(比如按行优先顺序)。

然后在

中求解x,y

A^2 + xA + yI = 0

相当于在系统中求解z

B z = -c

在哪里

  • z = [x, y] 是一个长度为 2 的列向量

  • Bn^2 X 2 矩阵,其列是 E(A)E(I )

  • cE(A^2)

【讨论】:

  • 好的,让我自己解决这个问题,看看结果如何。完成后我会接受你的回答:)
  • 好的,所以设置 Bz = -c 的维度与矩阵乘法不兼容。 B 将是一个 9x2 矩阵乘以一个 1x2 向量。然而......当我按照你说的做并使用 linalg.lstsq(B, -c) 时,我得到了正确的答案。你能解释一下为什么吗?
  • @rocksNwaves 为什么不兼容? B 是 9 X 2,但 z - 它是一个列向量 - 是 2 X 1 (不是你写的)。所以乘积是 9 X 1,也就是 c 的维度。
猜你喜欢
  • 2015-09-04
  • 2019-12-12
  • 1970-01-01
  • 2023-03-08
  • 2016-09-28
  • 2016-08-25
  • 1970-01-01
  • 2022-01-21
  • 2017-05-17
相关资源
最近更新 更多