用python求解同时多元多项式方程

aar*_*ren 6 python math sympy polynomial-math scipy

编辑:我得到的方程式参考包含几个错误.我在这里修好了.解决方案现在可能真的有意义!

当两层流体流过地形时,取决于流速的相对大小和流体中的波速,存在许多不同的解决方案.

关键流程

这些被称为"超临界","次临界"和"关键"(前两个我在这里称为"超临界").

以下等式定义了(h,U0)参数空间中临界行为和临界行为之间的界限:

EQ1

EQ2

我想消除d_1c(即我不在乎它是什么)并找到这些方程的解决方案(h, U_0).

简化因素:

  • 我只需要给出答案 d_0
  • 我不需要精确的解决方案,只需要解决方案曲线的概述,因此可以通过分析或数字方式解决.
  • 我只想绘制区域(h,U0)=(0,0)到(0.5,1).

我想用Enthought分配中的模块来解决这个问题(numpy,scipy,sympy),但是真的不知道从哪里开始.消除变量d1c确实让我感到困惑.

这是python中的方程式:

def eq1(h, U0, d1c, d0=0.1):
    f = (U0) ** 2 * ((d0 ** 2 / d1c ** 3) + (1 - d0) ** 2 / (1 - d1c - d0) ** 3) - 1
    return f

def eq2(h, U0, d1c, d0=0.1):
    f = 0.5 * (U0) ** 2 * ((d0 ** 2 / d1c ** 2) - (1 - d0) ** 2 / (1 - d1c - d0) ** 2) + d1c + (h - d_0)
    return f
Run Code Online (Sandbox Code Playgroud)

我期待一个有许多解决方案分支的解决方案(并不总是物理的,但不要担心),看起来大致如下:

关键政权图

我该如何实现呢?

duf*_*ymo 0

您可以使用 Newton Raphson 或 BFGS 等非线性求解器来求解联立非线性方程。它们对基质的起始条件和条件很敏感,因此需要一些小心。