【发布时间】:2017-07-27 01:05:55
【问题描述】:
我正在寻找一种在 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)
结果是(array([ 0., 0., 0.]), 0.0)。
这也是正确的,但不是理想的解决方案...
编辑:我很抱歉在某些方面不够精确。 如果有人对细节感兴趣,问题来自论文 “用于数字信号处理的同步数据流程序的静态调度”,Edward A. Lee 和 David G. Messerschmitt, IEEE 计算机汇刊,卷。 C-36,第 1 期,第 24-35 页,1987 年 1 月。
定理 2 说
对于具有 s 个节点和拓扑矩阵 A 且 rank(A)=s-2 的连通 SDF 图,我们可以找到一个正整数向量 b != 0 使得 Ab = 0 其中 0 是零向量。
在证明定理 2 之后他们说
可能需要求解零空间中的最小正整数向量。为此,减少 u' 中的每个有理项,使其分子和分母互质。欧几里得算法适用于此。
【问题讨论】:
-
“最小整数向量”是什么意思?
-
“最小”是如何定义的,
(1, 1, 2)是如何小于(0, 0, 0)的? -
一般来说,这可能是really difficult,我认为 NumPy 或 SciPy 都没有提供任何工具来做到这一点。
-
您已经编辑了您特别想排除零向量的事实,但您仍然没有定义“最小”。
(2, 0, 0)是否小于(0, 1, 1)?(1, 0, 0)是否小于(-1, 0, 0)? “最小”是模棱两可的。 -
A等级不足,您建议的理想x实际上是空空间。我们这里有XY problem 吗?
标签: python numpy scipy linear-algebra