如果我有两个矩阵a和b,是否有任何函数能够找到矩阵x,使得当它与a进行点乘时,结果为b?寻找针对numpy数组形式的矩阵的Python解决方案。
寻找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仍然可以近似一些值。
如果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
A @ X
的结果与B
有多大偏差? - filbrandenA
不是满秩方阵,那么这意味着问题 AX = B
要么没有非平凡解,要么有无限多个解。第二种方法正式称为“线性回归的正规方法”,如果 A
和 B
之间的关系是线性的,则正规方法将返回无限多个解中的一个。可能还有其他方法,比如列/行约化,但我只熟悉这一种方法。 - hammi