Python模块gekko可以处理复数吗?



我面临着一个海森伯格指数-2 DAE,我试图用python模块gekko来解决它。经过几天的反复试验,我认为我离一个可行的代码已经不远了。但我刚刚意识到,也许壁虎不能处理复数?

下面是一个简单的例子:

import numpy as np
from gekko import GEKKO
# Define the simulation and its parameters
g = GEKKO()
g.options.IMODE = 7
g.options.NODES = 1
# define the time array
n_steps = 100
Time = np.linspace(0, 2 * np.pi, n_steps)
g.time = Time
# Initialise the variables
x = g.Var(0.0)
# Write the model's equations
g.Equation(x.dt() == 1.0j * x)
# solve the equations
g.solve(disp = False)
print(x.value)

如果我尝试运行这段代码,我期望找到标准复指数。但是,我得到了以下错误:

File "gekko.py", line 2185, in solve
raise Exception(response)
Exception:  @error: Model Expression
*** Error in syntax of function string: Missing operator
Position: 9
$v1-(((1j)*(v1)))

你能确认gekko不能处理复数吗?也许可以建议另一个python DAE求解器?

非常感谢!

Gekko本身不处理复数。自动微分和基于梯度的求解器在编程时并没有考虑到这一点。正如您在评论中讨论的那样,通过拆分变量可以解决复数问题。复数在线性规划中的应用?

最新更新