生成行和列独立求和为1的非对称NxM矩阵



给定N行M列的目标矩阵大小,是否可以选择值,使所有行和列的总和为1,条件是矩阵在对角线上不是对称的?这是我在N==M时能够生成的目标矩阵(当N!=M时出现问题-见下文(:

[[0.08345877 0.12844672 0.90911941 0.41964704 0.57709569]
[0.53949086 0.07965491 0.62582134 0.48922244 0.38357809]
[0.80619328 0.27581426 0.31312973 0.26855717 0.4540732 ]
[0.11803505 0.88201276 0.1990759  0.2818701  0.63677383]
[0.57058968 0.75183898 0.07062126 0.6584709  0.06624682]]

我用努皮写这篇文章。目前,我已经编写了以下(蛮力(代码,我知道它在n==m时有效。但是,如果n!=m、 按行和按列和不收敛于0,按行和与按列和的比率收敛于(n/m(:

n,m = (5,4)
mat = np.random.random((n,m))
for i in range(100):
s0 = mat.sum(0)
s1 = mat.sum(1)[:,newaxis]
mat = (mat/s0)
mat = (mat/s1)
if i%10 == 0:
print(s0[0]/s1[0,0])

在这种情况下,最终输出为1.25(即n/m或5/4(。我开始认为这在数学上可能是不可能的。有人能证明我错了吗?

我怀疑你是对的,如果N!=M.

以2x3矩阵为例:

[[a b c]
[d e f]]

假设所有行和所有列的总和为1,并显示矛盾。行的总和为1所以:

a+b+c = 1
d+e+f = 1

这给出:

(a+b+c)+(d+e+f) = 1 + 1 = 2

现在看看这些列。每列的总和也是1,所以我们有:

a+d = 1
b+e = 1
c+f = 1

将三列方程式结合起来,得出:

(a+d)+(b+e)+(c+f) = 1 + 1 + 1 = 3

由于所有六个矩阵元素的和不能同时为2和3,即2 != 3,因此初始假设会导致矛盾,因此被推翻。更普遍地说,对于N!=M,具有N行和M列。

对于一个正方形矩阵,当N=M时,矛盾就消失了。

相关内容

  • 没有找到相关文章

最新更新