如何用Java解决方程系统?

时间:2016-05-17 07:30:32

标签: java algorithm equation

这是问题,我有这个方程式系统(作为一个例子),我需要解决并找到x和y值:

string verifyTokenEndPoint = string.Format("https://graph.facebook.com/debug_token?input_token={0}&access_token={1}", authToken, appToken);
不要担心0&os;这会根据检测到的点而改变,这只是一个例子。

据我了解,我无法在这里使用Craner的规则,所以我迷路了,我不知道如何编程。手动操作很简单,但如何为此编写算法? 有什么提示吗?

编辑:这是一张方程式如何以及如何手工解决的图片:http://i.imgur.com/Gm29Cfw.jpg(逐步解决方案:http://i.imgur.com/ZvraQoZ.jpg) 手动解决它的过程非常简单:我有二次方程系统。然后,我采用第二个等式,找出该等式中的x等于。所以,通过这样做,我现在知道x等于什么。在此步骤之后,我取出x值并将其放在第一个值中。通过这样做,我确保第一个方程只有一个缺失变量。我正常解决它并得到y等于。然后,我把y值放到x值,我得到了答案。

1 个答案:

答案 0 :(得分:0)

好的,这是一个想法,但我还没有实现它并检查它是否真的有效。

数学上,这两个方程描述了圆。

设(a,b)为第一个圆的中心,sqrt(r_1)为半径,let(c,d)为第二个圆的中心,sqrt(r_2)为半径。然后,在笛卡尔坐标系中,圆上的点完全相应

(x-a)^ 2 +(y-b)^ 2 = r_1

(x-c)^ 2 +(y-d)^ 2 = r_2

我们现在用两个函数来描述圆圈:上部和下部。这些是涉及平方根的功能。所以,如果我们有

(x-a)^ 2 +(y-b)^ 2 = r_1

然后求解y给出(通过wolfram alpha)

(y-b)^ 2 = r_1 - (x-a)²

y = b + sqrt(-a²+ 2ax + r_1-x²)

y = b - sqrt(-a²+ 2ax + r_1-x²)

我们还可以通过将(a,b)与(c,d)和r_1与r_2交换来用这两个方程表示另一个圆的下部和上部。

关键是,一旦我们有两个y_1 = f(x)和y_2 = g(x)的图,那么我们可以找到它们与f(x)= g(x)或等价f(x)的交点 - g(x)= 0.为此,我们可以使用牛顿迭代法找到的近似解!我们还可以计算所需的衍生物:

deriv1

derive2

所以,整个想法是我们将每个圆圈分成两个函数:上部和下部。然后,我们检查第一个圆的上部是否与描述第二个圆的上部或第二个圆的下部的函数相交。与下半部分相同,我们再次检查另一个功能的上部和下部。为了找到交点,我们可以使用近似牛顿法。

所以,对于上面的例子:

(X-0)^ 2 +(Y-5)^ 2 = 12,25

我们将上下函数作为

y = 5 + sqrt(12.25-x ^ 2) y = 5 - sqrt(12.25 -x ^ 2)

我们可以很好地绘制它们

circle2

相反,第二个圆((x-0)^2+(y-0)^2=2,25)由等式

描述

y = 0 + sqrt(2.25-x ^ 2) y = 0 - sqrt(2.25-x ^ 2)

现在,如果我们一次查看所有这些图表:

googl3

我们发现有一个交叉点! :)。在第一圆的下部和第二圆的上部之间。如果我们现在形成这两个函数之间的差异,我们得到以下函数图:

f(x)= 5 - sqrt(12.25 -x ^ 2) g(x)= 0 + sqrt(2.25-x ^ 2)

f(x)-g(x)= 5 - sqrt(12.25 -x ^ 2) - sqrt(2.25-x ^ 2)

如果我们绘制

google3

我们可以看到,如果我们找到该图的零,我们将得到正确的解x = 0! :)

一旦我们得到了这个解,我们就可以在任何一个方程中消除一个变量

(x-a)^ 2 +(y-b)^ 2 = r_1

我们将得到一个只有y的二次方程式,可用一般求解公式(pq-formula或abc-formula)求解。

希望这会给你一些想法。