微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

求解线性方程组 - gekko

如何解决求解线性方程组 - gekko

这是求解线性方程组的一个简单示例以及对许多方程使用 for 循环的示例。

import numpy as np
from gekko import GEKKO

m = GEKKO(remote=False)

# Random 3x3
A = np.random.rand(3,3)
# Random 3x1
b = np.random.rand(3)
# Gekko array 3x1
x = m.Array(m.Var,(3))

# solve Ax = b
eqn = np.dot(A,x)
for i in range(3):
   m.Equation(eqn[i]==b[i])
m.solve(disp=False)
X = [x[i].value for i in range(3)]
print(X)
print(b)
print(np.dot(A,X))

具有正确的输出。结果 X (np.dot(A,X)==b) - 正确!

[[-0.45756768428],[1.0562541773],[0.10058435163]]
[0.64342498 0.34894335 0.5375324 ]
[[0.64342498]
[0.34894335]
[0.5375324 ]]

在最近的 Gekko 0.2rc6 中还引入了用于线性规划的 axb() 函数。这可能与此函数解决的问题相同,但我不确定如何获得正确的结果。

m = GEKKO(remote=False)

# Random 3x3
A = np.random.rand(3,(3))

# solve Ax = b
m.axb(A,b,x=x)
m.solve(disp=False)
X = [x[i].value for i in range(3)]
print(X)
print(b)
print(np.dot(A,X))

但似乎我错过了一些东西,因为输出不是解决方案???结果 X (np.dot(A,X)==b) - 不正确!

[[0.2560342704],[0.7543346092],[-0.084190799732]]
[0.27262652 0.61028723 0.74616952]
[[0.4201021 ]
[0.5206979 ]
[0.39195592]]

解决方法

m.axb() 目前在 Gekko v0.2.8 中有一个错误。它在 Gekko 的下一个版本中得到修复,或者您可以从 GitHub 获取预发布版本:https://github.com/BYU-PRISM/GEKKO/blob/master/gekko/gekko.py 在 bin 文件夹中带有 APM 可执行文件。 Gekko v1.0.0 提供了此修复程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。