如何让我的计算机进行此计算以及我必须使用哪种编程语言?

时间:2016-04-06 19:51:01

标签: math

我需要一个方程式来找到不等式的所有解。例如:5x+4y+3z+3a+3b>40。必须从xy获取5个未知数zab4.03.53.02.52.01.51.00.50.0。例如x=4y=4z=1a=1b=1是一个概率,但还有更多。如何让我的电脑找到所有这些?

2 个答案:

答案 0 :(得分:0)

主要的是弄清楚如何循环所有可能性。在大多数语言中,你会遇到五个for循环。 Python允许您使用itertools.product来完成此任务:

#!/usr/local/bin/python3

from itertools import product

for g in product(range(9),repeat=5):
    if 5*g[0]+4*g[1]+3*g[2]+3*g[3]+3*g[4] > 80:
        print([x/2 for x in g])

而不是0-4乘以.5,我将所有内容加倍为整数。你可能想重新思考一下。 ./gpa.py | wc告诉我你将获得超过2万种可能的解决方案。 (如果你只需要找到解决方案的数量,而不是列出它们,那么这可能会简化你的工作。)

答案 1 :(得分:0)

如上所述,这是一个整数编程问题(线性编程的特例)。网络搜索应该会产生大量的点击。这通常是一个非常难以解决的问题;我的建议是使用像GLPK这样的包。整数编程非常有用,因此即使这个特定问题的范围有限,也非常值得花时间弄清楚如何解决它,因此您可以将整数编程应用于您可能遇到的其他问题。