You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gekko运行报TypeError: Must be real number not GKvariable如何解决

报错原因

  • Python标准库math下的三角函数仅支持接收原生数值类型(int/float等)作为入参,你传入的sigma是Gekko自定义的GKVariable类型变量,无法被math.cos识别,因此抛出类型错误。
  • Gekko的求解器需要识别方程内的所有运算关系才能完成求解,直接调用math库的运算会打断这个识别链路,即使强行转类型也会丢失变量的运算关联逻辑。

解决方法

把方程里的math.cos(sigma)替换为Gekko内置的cos方法即可,Gekko的内置数学函数专门适配自身的变量类型,可被求解器正常解析。

修正后的完整代码:

from gekko import GEKKO
m = GEKKO()
sigma = m.Var()
m.Equation((0.5*1.225*(Vt**2)*s*b)*(pb*(beta-sigma) \
            + Cndr*((((Vw**2)*Ss*CDy)/((Vt**2)*s) \
            - Cyb*(beta-sigma))/Cydr)) + Fw*dc*m.cos(sigma)==0)
m.solve(disp=False)
print(sigma.value)

提示:后续如果在Gekko方程中需要使用其他数学运算,也请统一使用Gekko实例的内置方法(如m.sin、m.exp、m.log等),不要调用math或numpy库的同类方法。


内容的提问来源于stack exchange,提问作者Deepu Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:27:01