微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找到具有 3 个变量的方程的所有可能的整数解

如何解决找到具有 3 个变量的方程的所有可能的整数解

我对 python 非常陌生,想解决一个方程来练习和学习。不幸的是,我什至无法开始解这个方程:

x,y,z 是正数 **个位数(对不起,我忘了在我原来的问题中包含这个)**整数

10x+y = 2x + 2*y + z

我知道如果 x=1 并且 y= 6 那么 z 必须是 2。谁能帮我找到所有使用 python 的整数解的列表?

这对我来说似乎很简单,但我刚开始学习 python,我不认为我有解决这个问题的词汇。我想我可以用英语解决它,但我不知道正确的 python。

例如我想说:让 x,z = 正整数 -> 10x+y = 2x + 2*y + z -> 求解 [x,z]

解决方法

简化等式后,它解析为:8x-y-z = 0

您可以使用列表理解来获得给定值范围内的解决方案,即个位数解决方案

[(x,y,z) for x in range(10) for y in range(10) for z in range(10) if (8*x-y-z)==0]
Out[68]: 
[(0,0),(1,8),1,7),2,6),3,5),4,4),5,3),6,2),7,1),8,(2,9),9,7)]

或者 如果不想手动解析,可以拆分为left right,应用逻辑:

expression = '10*x+y = 2*x + 2*y + z'
lhs,rhs = expression.split('=')
[(x,z) for x in range(10) for y in range(10) for z in range(10) if eval(lhs)==eval(rhs)]
Out[69]: 
[(0,7)]
,

用于求解这些类型的数学方程。我更喜欢使用SymPy,它易于理解和解决。

10x + y = 2x + 2y + z

8x - y -z = 0

from sympy import *  # import python library
x,z = symbols(['x','y','z']) # define all variables with its symbols
system = [
    Eq(8*x - y -z,0)
]                              
soln = solve(system,[x,z])
print(soln)
output>>{x: y/8 + z/8}
,

有一个专为这种东西设计的库:python-constraint

这是您问题的解决方案

from constraint import *

problem = Problem()
problem.addVariables(['x','z'],range(100))
problem.addConstraint(lambda x,z: 10*x+y == 2*x + 2*y + z,('x','z'))
solutions = problem.getSolutions()

print(solutions)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?