我很抱歉,我的问题将是冗长的,因为我只是在不知所措,甚至开始编码这个。伪代码的答案是非常感谢,如果只是让我了解如何解决这个问题(然后我可以写一些实际的代码,并回来寻求帮助,如果必要的)。你知道吗
我的问题不在于代码,而在于理解我需要的逻辑(这可以说是编程中比较困难的部分)。你知道吗
对我的问题的一个非正式解释是,我想改变一个矩阵a(恰好是稀疏的),使得行和等于列和。我可以通过在矩阵中加一个来实现这一点,因为S是一个尺度矩阵。你知道吗
形式上,我想找到一个S矩阵,使得(A+AS)ONESn=T和(T(A)+T(A)S)ONESn=T,其中ONESn是生成T的向量,行和向量。你知道吗
向量T是一成不变的,它是当前列和,是行和的目标。你知道吗
我想我要解决这个问题的方法是,对于每一行I和列j,其中I=j,我要找到行和,并计算它离目标有多远。然后我想更改该行的每个元素,使行和等于目标(或者至少是“足够接近”,在这里我可以设置“足够接近”)。你知道吗
但是,这取决于一个条件,即列j的和也必须等于目标。你知道吗
如何设计逻辑,以便从列1和行1开始,计算出行1中的值,然后计算出列1的值,前提是列1的第一个条目被前面的过程“固定”。你知道吗
接下来,第2行的第一个值应该由上面的公式“固定”,同样地,程序现在需要计算出第2列的前两个条目的固定值。你知道吗
以此类推,直到到达最后一列和最后一行
我曾尝试过编写一个梯度下降程序,但一直坚持如何使列的梯度下降依赖于行的梯度下降。你知道吗
我也手工计算了这个问题(对于2x2矩阵),我可以找到答案,但我不知道我是如何做到的,这就是为什么我很难编写它的原因。你知道吗
假设A是[1,2,3,4]的2x2矩阵。行和为[4,6]。列和为[3,7]。你知道吗
1 3 | 4
2 4 | 6
___
3 7
如果我加上矩阵S=[1,0,-1,0]
1 -1
0 0
我得到A+S=[2,2,2,4],它有行和[4,6]。你知道吗
2 2 | 4
2 4 | 6
___
4 6
预期结果是一个矩阵(a+AS),使得行和等于列和。你知道吗
或者错误消息“不收敛”
你有一些矩阵A,你需要加上另一个矩阵S,这样得到的矩阵M的行和列和是一样的。这意味着:
A+S=M#对于M行和=列和
所以你需要做的是找到S,你可以简单地把等式改为
S=M-S
现在你可以为M设置任何行和列和相同的矩阵,得到S,一旦得到S,你就可以这样做
A+S=M
这意味着您可以向每个矩阵中添加另一个矩阵S,这样得到的矩阵M的行和=列和。因此,你不会得到“矩阵不收敛”的消息。你知道吗
这是R码
或者更一般地说:
得到的矩阵A+S总是和你设定的M一样,所以我不确定这是用来做什么的。如果你需要知道如何找到S,其中A+S给你一个矩阵M,行和=列和,这就是你可以做的。你知道吗
相关问题 更多 >
编程相关推荐