首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂非线性系统的平衡点

复杂非线性系统的平衡点
EN

Stack Overflow用户
提问于 2018-02-27 23:24:25
回答 1查看 51关注 0票数 0

当我运行下面的代码时,我得到

代码语言:javascript
复制
TypeError:  can't multiply sequence by non-int of type "Add'

有没有人能解释一下为什么会出现这个错误?

代码语言:javascript
复制
from sympy.core.symbol import symbols
from sympy.solvers.solveset import nonlinsolve

x, y, z, r, R, a, m, n, b, k1, k2 = symbols('x,y,z,r,R,a,m,n,b,k1,k2', positive=True)

f1 = r * x * (1 - x / k1) - (a * z * x ** (n + 1)) / (x ** n + y ** n)
f2 = R * y * (1 - y / k2) - (b * z * y ** (n + 1)) / (x ** n + y ** n)
f3 = z * (a * x ** (n + 1) + b * y ** (n + 1)) / (x ** n + y ** n) - m * z
f = [f1, f2, f3]
nonlinsolve(f, [x, y, z])
EN

回答 1

Stack Overflow用户

发布于 2018-02-28 01:22:19

错误消息并不是真正的描述性的,但完整的堆栈跟踪指出了问题所在: SymPy尝试将表达式当作一个多项式来处理,并发现这是不可能的,因为指数n是一个符号,而不是一个具体的整数。

简单地说,SymPy没有一个算法来解决这样的系统(我不确定是否有任何CAS )。

当写成多项式形式时,系统的总次数为n+2的单项式。因此,对于n=1,这是完全没有希望的:一个由三个三次方程和三个未知数组成的系统。SymPy可以解决n= 0的情况,我不会期望比这更多的了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49012245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档