如何解决C中特定方程的系统(可能使用周期)

时间:2016-11-20 12:12:38

标签: c algorithm math linear-algebra equation

我在C学校的项目工作时遇到了问题。 我正在使用两个设备: x = a + u i ; 的计算y = b + V Ĵ

已知 a,b,u,v 的值。我需要将 u,v 与自然数(i,j) 相乘,直到出现相等 x = y

(注意:i和j可能没有相同的值/可能是不同的数字,而x = y)。

问题来了,我不知道如何解决方程,而 i和j不同,我想可能的解决方案是循环,或者是非常规方程(我不知道如何应用它们到上面的方程式。) 我是初学者并且卡住了。有人可以帮我解决C代码问题吗?谢谢。

修改 如果我只想通过循环求解方程, 我想我知道该怎么办,但我不知道如何用C语写它。

1)循环的每一步,我算x,y

2)如果x低于y,则i增加1,否则,j增加1

3)重复直到x = y

4)有时候解决方案根本就没有,所以我必须把条件放在一边,这样就不会永远运行。

1 个答案:

答案 0 :(得分:0)

重写你的等式,得到:

a + u i = b + v j

使用解决方案

i = (b + v j - a) / u

现在您需要找到一个自然数j,以便i变得自然。显然,b + v j - a必须是u的正数倍。所以:

b + v j - a = k * u, k \in N
j = (k * u + a - b) / v

现在k * u + a - b必须是v的倍数。这并不总是可行的。最简单的检查方法是迭代前几个可能的k并查看它的位置。如果你得到一个自然数,你可以将j的解决方案插入上面的等式中,你可以得到一个自然的i

这假定x,y,a,b,u和v是实数。如果它们也是整数,那么你可能会比这更进一步。