繁体   English   中英

如何在 Python 中找到具有三个未知数的解决方案

[英]How to find a solution with three unknowns in Python

如何在 Python 中解决这个问题?

在此处输入图像描述

感觉就像是一个循环或某种求解器。 我知道我可以通过反复试验来解决它,但这不是重点。

有无限的解决方案,因此只要您有两个 x 值,您就可以找到达到 1200 所需的第三个。

所以说你有X1X2 ,一些简单的代数告诉我们:

5*X3 = 1200 - X1 - 3*X2

接着

X3 = (1200 - X1 - 3*X2) / 5

所以在那里你找到了X3的值X1X2 要找到各种解决方案,您可以用随机数填充X1X2 ,然后让第三个X3匹配。

正如@dantechguy 所提到的,有无限的答案,但这并不意味着我们不能让 python 肯定地告诉我们。 求解方程组的最佳途径是sympy 在这里查看: Sympy

以下将解决您的方程组并告诉您每个变量,并告诉您每个变量的界限。

from sympy.solvers import solve
from sympy import S

x1,x2,x3 = S('x1 x2 x3'.split())
Eq = [1*x1 + 3*x2 + 5*x3-1200, x1>0, x2>0,x3>0]
sol = solve(Eq, x1),solve(Eq, x2),solve(Eq, x3)
display(sol)

这输出:

((0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x1, -3*x2 - 5*x3 + 1200),
 (0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x2, -x1/3 - 5*x3/3 + 400),
 (0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x3, -x1/5 - 3*x2/5 + 240))

如果您在 jupyter 中工作,请使用以下命令使 LATEX 的排版效果很好:

display(solve(Eq, x1))
display(solve(Eq, x2))
display(solve(Eq, x3))

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM