如何将GEKKO解决方案转换为浮点数

问题描述 投票:1回答:1
我正在使用GEKKO来求解非线性微分方程组。它能够求解方程式并提供解决方案,但是这些解决方案似乎保存在某种GEKKO对象的格式中,称为“类'gekko.gk_operators.GK_Value'”。]

我有什么办法将其转换为浮点数?我需要操纵这些值以找到其平均值。

这是我的代码

from gekko import GEKKO DELTA=1 OMEGA=0 GAMMA=1 J=3 m = GEKKO() SZ1, SZ2, SZ3, SX1, SX2, SX3, SY1, SY2, SY3 = [m.Var(value=0) for i in range(9)] m.Equations([4*J*(SX2*SY1-SX1*SY2)-GAMMA*(1+SZ1)+2*OMEGA*SY1==0, 2*J*(-2*SX2*SY1+2*SX1*SY2+2*SX3*SY2-2*SX2*SY3)-GAMMA*(1+SZ2)+2*OMEGA*SY2==0, 2*J*(-2*SX3*SY2+2*SX2*SY3)-GAMMA*(1+SZ3)+2*OMEGA*SY3==0, J*SY2*SZ1-0.5*GAMMA*SX1-DELTA*SY1==0, 2*J*SY1*SZ2-2*J*SY3*SZ2-0.5*GAMMA*SX2-DELTA*SY2==0, J*SY2*SZ3-0.5*GAMMA*SX3-DELTA*SY3==0, J*SX2*SZ1+0.5*GAMMA*SY1-DELTA*SX1+2*OMEGA*SZ1==0, 2*J*SX1*SZ2-2*J*SX3*SZ2+0.5*GAMMA*SY2-DELTA*SX2+2*OMEGA*SZ2==0, J*SX2*SZ3+0.5*GAMMA*SY3-DELTA*SX3+2*OMEGA*SZ3==0]) m.solve(disp=True) print([SZ1.value, SZ2.value, SZ3.value]) ans=(SZ1.value+SZ2.value+SZ3.value)/3 print(ans)

我是否有将SZ1,SZ2和SZ3转换为浮点值?
python numeric differential-equations
1个回答
1
投票
打印SZ1.value提供输出:

[-1.0]

看起来像一个python列表

因此输入您的代码:

SZ1.value+SZ2.value+SZ3.value

只是串联三个列表。如果要获取浮点值,可以使用:

SZ1.value[0]

将您的代码更改为:

ans=(SZ1.value[0]+SZ2.value[0]+SZ3.value[0])/3

应该给出期望的结果。

GK_Value是python列表的参考:https://github.com/BYU-PRISM/GEKKO/blob/master/gekko/gk_operators.py#L118

© www.soinside.com 2019 - 2024. All rights reserved.