【问题标题】:How to solve system of particular equations in C (probably using cycles)如何在 C 中求解特定方程组(可能使用循环)
【发布时间】:2016-11-20 12:12:37
【问题描述】:

我在用 C 语言处理我的学校项目时遇到了问题。 我正在处理两个方程: x=a+ui ; y=b+vj

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

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

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

编辑 如果我只想通过循环求解方程, 我想我知道我应该做什么,但我只是不知道如何用 C 来编写它。

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

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

3) 重复直到 x=y

4) 有时解决方案根本不存在,所以我必须在那里设置一个条件,使其不会永远运行。

【问题讨论】:

  • 我投票结束这个问题,因为它是关于初等代数而不是编程。
  • 发布你目前的 C 解决方案
  • 这只是我的 C 项目计算的一部分,我无法解决。我不想让你负担整个问题。但是解释复杂的问题(我的项目)可能很方便。我会尽快在这里发布更广泛的解释。

标签: c algorithm math linear-algebra equation


【解决方案1】:

重写你的方程,你得到:

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 的倍数。这并不总是可能的。最简单的检查方法是迭代前几个可能的ks 并查看它的位置。如果你得到一个自然数,你可以将j的解代入上式,保证你得到一个自然的i

这假设 x、y、a、b、u 和 v 是实数。如果它们也是整数,你可能会比这更远。

【讨论】:

  • 非常感谢您的回答,这非常有帮助,我会尝试将其作为声明合并到我的代码中:)
  • 当我编译时 k 是未声明的,并且首先在这个函数中使用。我无法确定你把它带到了哪里,或者 k 是什么。
  • 如我所说。它是任何自然数。最简单的方法是将k1 迭代到某个上限。
猜你喜欢
  • 2021-01-13
  • 2013-06-19
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多