sympy - 通过 sympy 求解非线性方程组
问题描述
我有一个 ODE 系统,想通过使用 nonlinsolve() 找到平衡点,但是当我通过 jubyter 或 spyder 运行它时,程序继续运行而没有任何结果。
N,x1,x2,x3,x4,y1,y2,r1,r2,r3,r4,eta1,eta2,eta3,eta4,R,c1,c2,c3,c4,a11,a12,a21,a22,a31,a32,a41,a42,b12,h,h11,h12,h21,h22,h31,h32,h41,h42,s1,s2,s3,s4,epsilon1,epsilon2,omega1,omega2,K11,K22,beta11,beta21,beta31,beta41,beta12,beta22,beta32,beta42,gamma12=sp.symbols('x1,x2,x3,x4,y1,y2,r1,r2,r3,r4,eta1,eta2,eta3,eta4,N,R,c1,c2,c3,c4,a11,a12,a21,a22,a31,a32,a41,a42,b12,h,h11,h12,h21,h22,h31,h32,h41,h42,s1,s2,s3,s4,epsilon1,epsilon2,omega1,omega2,K11,K22,beta11,beta21,beta3a,beta41,beta12,beta22,beta32,beta42,gamma12')
F2=x1*(r1*(1-(eta1*x1+eta2*x2+eta3*x3+eta4*x4)/N)-(a11*y1)/(y1+a11*h11*x1)-(a12*y2)/(y2+a12*h12*x1))+s1
F3=x2*(r2*(1-(eta1*x1+eta2*x2+eta3*x3+eta4*x4)/N)-(a21*y1)/(y1+a21*h21*x2)-(a22*y2)/(y2+a22*h22*x2))+s2
F4=x3*(r3*(1-(eta1*x1+eta2*x2+eta3*x3+eta4*x4)/N)-(a31*y1)/(y1+a31*h31*x3)-(a32*y2)/(y2+a32*h32*x3))+s3
F5=x4*(r4*(1-(eta1*x1+eta2*x2+eta3*x3+eta4*x4)/N)-(a41*y1)/(y1+a42*h41*x4)-(a42*y2)/(y2+a42*h42*x4))+s4
F6=y1*(-epsilon1*(1+(y1+omega2*y2)/K11)-(b12*y2)/(y2+b12*h*y1)\
+beta11*(a11*x1)/(y1+a11*h11*x1)\
+beta21*(a21*x2)/(y1+a21*h21*x2)\
+beta31*(a31*x3)/(y1+a31*h31*x3)\
+beta41*(a41*x4)/(y1+a41*h41*x4))
F7=y2*(-epsilon2*(1+(omega1*y1+y2)/K22)+gamma12*(b12*y1)/(y2+b12*h*y1)\
+beta12*(a12*x1)/(y2+a12*h12*x1)\
+beta22*(a22*x2)/(y2+a22*h22*x2)\
+beta32*(a32*x3)/(y2+a32*h32*x3)\
+beta42*(a42*x4)/(y2+a42*h42*x4))
equ=(F2,F3,F4,F5,F6,F7)
sol=nonlinsolve(equ,x1,x2,x3,x4,y1,y2)
print(sol)
是否可以根据参数获得解决方案?
解决方案
如果您乘以所有分母,您的方程组可以重铸为多元多项式系统。例如,如果你这样做,F2
你会得到
In [26]: F2.as_numer_denom()[0]
Out[26]:
s₁⋅x₁⋅(a₁₁⋅h₁₁⋅x₂ + y₂)⋅(a₁₂⋅h₁₂⋅x₂ + r₁) + x₂⋅(-a₁₁⋅x₁⋅y₂⋅(a₁₂⋅h₁₂⋅x₂ + r₁) - a₁₂⋅r₁⋅x₁⋅(a₁₁⋅h₁₁⋅x₂ + y₂) + r₂⋅(a₁₁⋅h₁₁⋅x₂ + y₂
)⋅(a₁₂⋅h₁₂⋅x₂ + r₁)⋅(-N⋅y₁ - η₂⋅x₂ - η₃⋅x₃ - η₄⋅x₄ + x₁))
我们可以从这里看到多项式是 5 阶的,因为它的术语x2**3*N*y1
很宽泛,你有一个由 7 个非低阶多项式组成的系统。我希望除非你很幸运,否则不可能有一个通用的封闭式解决方案。
推荐阅读
- unix-timestamp - 如何正确地将 Unix 时间转换为 Win32 使用的 FILETIME
- python - 安装后错误 Anaconda
- r - 将 base::colnames 更改为名为 colnames 的通用函数
- javascript - 使用 Twitter Bootstrap 3 的 Grid 时,panel-body 与 navbar-header 重叠
- swift - UITableViewRowAction - 延迟关闭动画直到确认
- string - LiClipse 主题:主题不适用于字符串
- r - ggplot中的2种不同颜色
- python - 熊猫直方图:从数据中提取列和分组
- html -
在 HTML 中使用脚本和另一个 .ts 文件中的参数 - python - 无法访问文本文件中的 JSON 数据