如何解决找到具有 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 举报,一经查实,本站将立刻删除。