获得(M + Ax) - (N + By)尽可能接近零

时间:2016-06-05 07:16:37

标签: math linear algebra

对于四个预先定义的变量N,M,A和B,我希望以某种方式得到x和y,使得两者之间的差异最小化,我们将如何实现这一点?

注意:A和B是截然不同的!

编辑:示例以使其更清晰,

说N = 4,M = 5.然后A = 2且B = 4,显而易见的解是x等于4,y = 1,得到9和10.差值为1.但这是琐碎的,数量越多,单凭我的大脑就不能产生快速的结果,我很想要一个更通用的解决方案。

1 个答案:

答案 0 :(得分:2)

Ax - By可以表示gcd(A, B)的任意整数倍,而不是其他数字。 gcd(A, B)M - N的最接近的整数倍是floor((M - N)/gcd(A, B)) * gcd(A, B)ceil((M - N)/gcd(A, B)) * gcd(A, B)。这可以将M-N向下舍入或向上舍入到gcd(A, B)的最接近倍数。

使用Extended Euclidean Algorithm解决Ax - By = gcd(A, B),然后将xy乘以floor((M - N)/gcd(A, B))ceil((M - N)/gcd(A, B)),具体取决于哪个第一段中的两个表达式最接近M - N