【问题标题】:Solving nonlinear Diophantine equations such as (8+3n)m = 11?求解非线性丢番图方程,例如 (8+3n)m = 11?
【发布时间】:2019-03-15 20:36:01
【问题描述】:

是否有任何有效的算法可用于生成方程的所有整数解,如下面的?

  • (8+3n)m = 11 | n ∈ {0,1},m ∈ ℤ+

  • (5+(7+3x+2y)a+3z)b = 30 | x,y,z ∈ {0,1}, a,b ∈ ℤ+

理想情况下,我希望能够分别为 n、m 和 a、b、x、y、z 生成所有有效整数值的集合。至少我想要一种测试方程是否可解的方法。鉴于这些方程是非线性的,我想用于求解简单丢番图方程的典型方法在这里会失败。

如果能得到任何帮助,我将不胜感激!

【问题讨论】:

  • 这很快就会变得困难 - 请参阅cstheory.stackexchange.com/questions/17478/…
  • 在您的示例中,所有系数都是正数并且右侧只有一个整数,这是巧合吗?如果这个数字不太大并且变量数量有限,那么蛮力方法可能是最好的选择。
  • 不是巧合,对于我的简单情况,系数将始终为正,并且右侧始终存在一个相对较小的整数。我想象蛮力可能是我唯一的选择,但我希望有一些更优雅的东西。谢谢你们的回复!

标签: algorithm language-agnostic algebra


【解决方案1】:

因为 11 是素数,所以 Z 中只有 4 种可能的因式分解:

8+3n=11 and m=1
8+3n=1 (impossible) and m=11
8+3n=-11 (impossible) and m=-1
8+3n=-1 m=-11

通过将 n 限制在 {0,1} 中,只剩下一个解决方案...

对于第二种情况,有更多的可能性,因为 30 是 2*3*5,你将在 Z 中为你的两个术语有 16 个可能的产品...

如果将 (x,y,z) 替换为它们的 8 种可能组合,则第一项将退化为 a 中的一阶多项式,因此测试整数根只需 8*16 = 128 个多项式。

如果在替换有限集中的变量(通过蛮力)之后,所有问题都退化为一个变量的多项式的乘积,那么这就像找到多项式的整数根,这对于一阶多项式来说是微不足道的,例如上面的两个问题,等价于对整数进行多项式分解以获得更高的次数...

如果因子仍然是多变量的,但是是线性的(总阶数为 1),那么这就像求解线性系统。但求整数解不一定是小事,推荐阅读http://sites.math.rutgers.edu/~sk1233/courses/ANT-F14/lec3.pdf

否则,如果因子保持多元且总阶 > 1,则相当于求解多项式系统...在某些情况下,这是可能的,请参阅 https://en.wikipedia.org/wiki/Gr%C3%B6bner_basis

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2021-12-13
    相关资源
    最近更新 更多