是否有np.dot函数的反函数?

4
如果我有两个矩阵a和b,是否有任何函数能够找到矩阵x,使得当它与a进行点乘时,结果为b?寻找针对numpy数组形式的矩阵的Python解决方案。

5
您需要搜索矩阵的"逆矩阵",如果有 A*X = B,则 X = (A的逆矩阵) * B。逆矩阵通常用符号 A^(-1) 表示(A的负一次方)。 - Pac0
2个回答

4

寻找X使得A*X=B的问题等同于查找“A的逆矩阵”,也就是一个矩阵,满足X = A^(-1) * B

在数学中,A的逆矩阵A^(-1)表示(“A的负一次方”),但您也可以说“A的逆”。

在Numpy中,有一个内置函数用于查找矩阵a的逆矩阵:

import numpy as np

ainv = np.linalg.inv(a)

例如,可参考此教程以获取解释。

需要注意的是,有些矩阵是不可“求逆”的,最明显的例子(大致)有:

  • 非方阵矩阵
  • 表示投影的矩阵

在某些情况下,numpy仍然可以近似一些值。


3

如果A是一个满秩、方阵矩阵

import numpy as np
from numpy.linalg import inv

X = inv(A) @ B

如果不存在这样的矩阵,我们可以进行近似。

import numpy as np
from numpy.linalg import inv

X = inv(A.T @ A) @ A.T @ B

“Approximate”是什么意思?你能引用一下使用这种方法的参考资料吗?在什么情况下它会起作用或不起作用?在这种情况下,我应该期望A @ X的结果与B有多大偏差? - filbranden
2
@filbranden 如果 A 不是满秩方阵,那么这意味着问题 AX = B 要么没有非平凡解,要么有无限多个解。第二种方法正式称为“线性回归的正规方法”,如果 AB 之间的关系是线性的,则正规方法将返回无限多个解中的一个。可能还有其他方法,比如列/行约化,但我只熟悉这一种方法。 - hammi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接