![](/img/trans.png)
[英]How to solve nonlinear equation with Python with three unknowns and hundreds of solutions?
[英]How to find a solution with three unknowns in Python
有无限的解决方案,因此只要您有两个 x 值,您就可以找到达到 1200 所需的第三个。
所以说你有X1
和X2
,一些简单的代数告诉我们:
5*X3 = 1200 - X1 - 3*X2
接着
X3 = (1200 - X1 - 3*X2) / 5
所以在那里你找到了X3
的值X1
和X2
。 要找到各种解决方案,您可以用随机数填充X1
和X2
,然后让第三个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.