Учитывая целевой размер матрицы из 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 (т. Е. Н / м или 5/4). Я начинаю думать, что это не может быть математически возможным. Может кто-нибудь доказать, что я не прав?