如何在矩阵乘法Ax = b中找到A,并且知道A的一些值,而A却是随机的

时间:2019-07-22 16:12:40

标签: python matrix solver

几个小时以来,我一直在寻找解决这个问题的方法,但到目前为止我什么都找不到...

所以我有两个向量,我们称它们为b和x,我知道所有的值。它们加起来等于相同的数量,所以sum(b) = sum(x)

我也有一个矩阵,我们称它为A,我知道它的值是0,所有其他值都是未知的(但不同于0)。

此外,A的每一列的元素的总和为1(我认为这是一个左随机矩阵)

通常,等式可以用A*x = b的形式编写。

现在我正在尝试查找A的缺失值。

我在这里找到了针对一般问题的一个答案:https://math.stackexchange.com/questions/1170843/solving-ax-b-when-x-and-b-are-given

此外,我查看了numpy.linalg的文档 :https://docs.scipy.org/doc/numpy/reference/routines.linalg.html,但我不知道该怎么做。

它看起来类似于多线性回归问题,但是在sklearn上,我什么也找不到:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,而是一些更正式的问题说明。

我认为这可以作为一个线性方程组来解决。让

NZ = {(i,j)|a(i,j) is not fixed to zero}

然后写:

sum( j | (i,j) ∈ NZ,  a(i,j) * x(j) ) = b(i)  ∀i
sum( i | (i,j) ∈ NZ,  a(i,j)) = 1  ∀j

这只是a(i,j)中的线性方程组。它可能不足(或过量)确定,并且可能是稀疏的。我认为这取决于如何解决它。可能将它们视为线性(或二次)编程问题中的约束。这将允许您添加一个目标(在系统不确定的情况下或过高的情况下–在这种情况下,请最小化平方偏差的总和或偏差的1范数。此外,我们可以在a(i,j)上添加范围(例如,下限为零,上限为1)。因此,您可能正在寻找线性编程方法。

此问题有点像矩阵平衡。这用于来自不同来源的经济数据集,并且我们希望对这些数据进行调和以获得一致的数据集,以用于后续建模。

相关问题