解2个整数方程组 [英] Solve system of 2 integer equations

查看:20
本文介绍了解2个整数方程组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组有三个未知数的两个方程,它有一些条件。xyz必须都大于零。我怎么才能解决这个问题?只有一个解决方案,我已经知道了,但我想知道如何正确使用它。

以下是公式:

  • 100 = x + y + z
  • 100 = 10x +2.5y + 0.5z

需要查找xyz。它们是正整数。

这是我的代码,但它不起作用:

from sympy import symbols, Eq, solve
x, y, z = symbols('x y z')
eq1 = Eq(x + y + z, 100)
eq2 = Eq(x*10 + y*2.5 + z*0.5, 100)
#eq3 = x, y, z must all be larger than zero and integers
solution = solve((eq1,eq2), (x,y,z))
solution

推荐答案

此类问题可以通过Z3pySAT/SMT求解器:

解决
from z3 import Ints, solve

x, y, z = Ints('x y z')
sol = solve(x + y + z == 100, x * 100 + y * 25 + z * 5 == 1000, x > 0, y > 0, z > 0)
print(sol)

输出:[z = 90, y = 6, x = 4]

请注意,通常情况下,Z3只寻找一个解决方案。要找到后续的解决方案,需要添加一个条款来禁止已经找到的解决方案。(在这种情况下,似乎只有一个解决方案。)

这篇关于解2个整数方程组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆