[英]How to convert GEKKO solutions into a float
我正在使用 GEKKO 來求解非線性微分方程組。 它能夠解決方程並給我解決方案,但是這些解決方案似乎以某種名為“類'gekko.gk_operators.GK_Value'”的GEKKO對象格式保存。
我有什么辦法可以將其轉換為浮點數嗎? 我需要操縱這些值來找到它們的平均值。
這是我的代碼
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 轉換為浮點值的方法?
打印 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.