Isl*_*nds 8 python mathematical-optimization polynomial-math python-2.7
我可以用python中的参数来解决非线性方程组吗?有示例或教程吗?我可以很容易地用枫木做到这一点,但我特定系统的表达式非常大,复制它们非常困难.
例:
sigma*(y-x) = 0
x*(rho-z)-y = 0
x*y-beta*z = 0
Run Code Online (Sandbox Code Playgroud)
你应该得到解决方案:
[[x = 0, y = 0, z = 0], [x = sqrt(beta*rho-beta), y = sqrt(beta*rho-beta), z = rho-1],
[x = -sqrt(beta*rho-beta), y = -sqrt(beta*rho-beta), z = rho-1]]
Run Code Online (Sandbox Code Playgroud)
我问的原因是:我有一个非常大的非线性ODE系统.我想解决固定点(这是可行的,它是用枫木完成的,但它们很大而且很难看).我想从固定点创建更多表达式,然后在scipy中使用优化包.我宁愿在python中完成所有工作而不是来回翻译,因为它效率很低而且可以犯错误.
重申@ Russ的答案,这很容易实现sympy.例如:
In [1]: import sympy as sp
In [2]: x, y, z = sp.symbols('x, y, z')
In [3]: rho, sigma, beta = sp.symbols('rho, sigma, beta')
In [4]: f1 = sigma * (y - x)
In [5]: f2 = x * (rho - z) - y
In [6]: f3 = x * y - beta * z
In [7]: sp.solvers.solve((f1, f2, f3), (x, y, z))
Out[7]:
[(0, 0, 0),
(-sqrt(beta*rho - beta), -sqrt(beta*(rho - 1)), rho - 1),
(sqrt(beta*rho - beta), sqrt(beta*(rho - 1)), rho - 1)]
Run Code Online (Sandbox Code Playgroud)
其中输出格式是可能值的3个可能元组(x, y, z).
| 归档时间: |
|
| 查看次数: |
4696 次 |
| 最近记录: |