我想解一个联立微分方程,基于洛伦兹方程:
def f(xyz, t, rho, sigma, beta):
x, y, z = xyz
return [sigma * (y - x),
x * (rho - z) - y,
x * y - beta * z]
我写道:
def f(xyz, t, rho, sigma, beta):
x, y, z = xyz
return [sigma * y(t).diff(t) + sigma * x + beta * y -77,
x + rho * y - 61]
基本上,我在第一个方程中有另一个y的微分,我试着求导,但它说:
typeerror:“numpy.float64”对象不可调用
你能告诉我如何解决这些问题吗?还有第二个问题?
3条答案
按热度按时间kxe2p93d1#
你有一个线性的导数系统,叫它们
xp, yp
. 幸运的是,它是三角形的,所以您可以通过反向替换来求解它。所以首先要解决这个问题yp
然后将其插入xp
.通常,您可以使用线性系统解算器
numpy.linalg.solve
或者更一般的解算器,如scipy.optimize.fsolve
从隐式方程组中提取导数(尽可能,微分代数方程组也可以具有这种形式)。uxh89sit2#
问题是当你写作的时候
y(t)
,python认为您正在调用一个名为y
争论不休t
但是y
似乎是十进制数,而不是函数。python有一个动态类型系统,所以当您编写
python将分配变量
y
的中间值的数据类型xyz
hm2xizp93#
那么你想用python解洛伦兹微分方程吗?
下面的链接可以帮助你找到你想要的答案https://www.programmersought.com/article/82154360499/
或者你可以这样解决: