gpt4 book ai didi

python - 如何在 Python GEKKO 模块中定义二阶导数?

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:09 24 4
gpt4 key购买 nike

我想用 GEKKO 求解二阶微分方程。在文档中,只有一个示例向您展示了如何求解一阶方程。我不知道如何编写 y 的二阶导数来使其工作。

这是一阶微分方程文档中的示例。

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt

m = GEKKO()
m.time = np.linspace(0,20,100)
k = 10

y = m.Var(value=5.0)
t = m.Param(value=m.time)
m.Equation(k*y.dt()==-t*y)
m.options.IMODE = 4
m.solve(disp=False)

plt.plot(m.time,y.value)
plt.xlabel('time')
plt.ylabel('y')

plt.show()

最佳答案

一阶导数可以声明为 dy = y.dt(),二阶导数可以声明为 ddy = dy.dt()

import numpy as np
import matplotlib.pyplot as plt


m = GEKKO()
m.time = np.linspace(0,20,100)
k = 10

y = m.Var(value = 5.0)
t = m.Param(value=m.time)
dy = m.Var(value = 0.0)
ddy = m.Var(value = -5/10)


m.Equations([
k*y.dt()==-t*y,
dy == y.dt(),
ddy == dy.dt()

])

m.options.IMODE = 4
m.solve(disp=False)


plt.figure()
plt.plot(m.time,y.value, label = 'y')
plt.xlabel('time')
plt.plot(m.time, dy.value, label = 'dy')
plt.xlabel('time')
plt.plot(m.time, ddy.value, label = 'ddy')
plt.xlabel('time')
plt.legend()
plt.show()

enter image description here

您可以在此处找到更多信息: https://apmonitor.com/wiki/index.php/Apps/2ndOrderDifferential

关于python - 如何在 Python GEKKO 模块中定义二阶导数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com