我的数学有问题:
假设我们有一个函数:F(x,y)= P;我的问题是:为这个函数计算合适的(x,y)图的最有效方法是什么?这意味着我自己不需要坐标,但我需要数字。 P在以下范围内:[0; 10 ^ 14]。 “x”和“y”是整数。它是使用强力解决还是有一些高级技巧(数学/编程语言(C,C ++))来解决这个问题的速度足够快?
更具体地说,函数是:x * y - ((x + y)/ 2)+ 1.
答案 0 :(得分:10)
x*y - ((x+y)/2) + 1 == P
相当于(2x-1)(2y-1) == (4P-3)
。
所以,你基本上在寻找4P-3
的分解数量。如何用C或C ++计算数字可能是一个不同的问题,但每个因子分解产生原始方程的解。 [编辑:实际上是两个解决方案,因为如果A*B == C
当然还有(-A)*(-B) == C
也是如此。
就编程语言C和C ++而言,只需确保使用足以包含4 * 10^14
的类型。 int
不会这样做,所以请尝试long long
。
答案 1 :(得分:2)
你有一个双参数函数,想要为给定的常量求解它。
这是一个相当大的数学领域,可能有很多算法可以解决你的方程。许多人使用的一个关键想法是,如果你找到一个点F<P
然后点F>P
,那么某处在这两点之间,F必须等于P.
找到根(或零,你当然可以通过取F'= F-P转换为)的最基本算法之一是Newton's method。我建议你从这开始,阅读更高级的算法。这是一个非常大的研究领域,阅读愉快!
维基百科有一个root-finding algorithms列表,您可以将其作为起点。