在Mathematica中获得等式的实际整数解?

时间:2014-10-16 18:51:14

标签: math wolfram-mathematica

我正在尝试使用Mathematica解决方程,但我似乎无法获得任何实际答案。

输入:

Solve[(5*d) + (216*b) == 1, {d, b}, Integers]

输出:

{{d -> ConditionalExpression[173 + 216 C[1], C[1] \[Element] Integers], 
  b -> ConditionalExpression[-4 - 5 C[1], C[1] \[Element] Integers]}}

我希望输出看起来像这样:

{b=123, d=456}

这可能实现吗?

2 个答案:

答案 0 :(得分:1)

Solve为您提供 解决方案。如果您需要 a 解决方案,请将其更改为FindInstance:

FindInstance[(5*d) + (216*b) == 1, {d, b}, Integers]

将是:

{{d -> 173, b -> -4}}

如果你想带些品种,你可以直接从解决方案中获得随机解决方案:

Normal @ First @ Solve[(5*d) + (216*b) == 1, {d, b}, Integers] /. 
 C[1] -> RandomInteger[1000]

答案 1 :(得分:0)

正如其他人所指出的那样,没有一个解决方案,但实际上是一组1参数解决方案(更确切地说,所有解决方案都是(b,d)中一行上的整数点)空间)。

Solve为您提供代表无数解决方案的参数解决方案。

获取系统小模数解决方案列表的方法是执行以下操作

Solve获取解决方案的定义,为方便起见,将C [1]重命名为n,以及 向Mathematica解释n应该被认为是一个整数。

az = Assuming[{n \[Element] Integers}, 
       Simplify[{d, b} /. 
          Solve[(5*d) + (216*b) == 1, {d, b}, Integers] /. {C[1] -> n}]]

{{173 + 216 n, -4 - 5 n}}

然后通过改变参数的值来生成解决方案(我们只采用解决方案表达式的第一个元素,因为Solve总是给出一个列表,即使只有一个解决方案的情况)。

Table[First[az], {n, -10, 10}]

{{-1987, 46}, {-1771, 41}, {-1555, 36}, {-1339, 31}, {-1123, 26}, {-907, 21}, {-691, 16}, {-475, 11}, {-259, 6}, {-43, 1}, {173, -4}, {389, -9}, {605, -14}, {821, -19}, {1037, -24}, {1253, -29}, {1469, -34}, {1685, -39}, {1901, -44}, {2117, -49}, {2333, -54}}

这为您提供了距离原点最近的点,它们是您问题的解决方案。例如,您可以使用ListPlot绘制它们。