我正在寻找一种用 Python 求解线性方程组的方法。特别是,我正在寻找大于全零的最小整数向量并求解给定的方程。例如,我有以下等式:
但是,如何自动确定该解决方案呢?如果我使用scipy.optimize.nnls
,比如
A = np.array([[1,-1,0],[0,2,-1],[2,0,-1]])
b = np.array([0,0,0])
nnls(A,b)
Run Code Online (Sandbox Code Playgroud)
结果是(array([ 0., 0., 0.]), 0.0)
. 这也是正确的,但不是所需的解决方案......
编辑:对于某些方面的不精确,我深表歉意。如果有人对细节感兴趣,问题来自论文“数字信号处理的同步数据流程序的静态调度”,Edward A. Lee 和 David G. Messerschmitt,IEEE Transactions on Computers,Vol. 11。C-36,第 1 期,第 24-35 页,1987 年 1 月。
定理 2 说
对于具有 s 个节点和拓扑矩阵 A 且rank(A)=s-2 的连通 SDF 图,我们可以找到一个正整数向量 b != 0,使得 Ab = 0,其中 0 是零向量。
在证明定理 2 之后,他们直接说
可能需要求解零空间中的最小正整数向量。为此,请减少 u' 中的每个有理项,使其分子和分母互质。欧几里得算法将适用于此。