【发布时间】:2020-03-11 08:44:54
【问题描述】:
我是 Python 新手,我试图弄清楚一切是如何工作的。我对 scipy.optimize 包的最小化功能有一点问题。我尝试使用一些起始值最小化给定函数,但 python 给了我非常高的参数值。 这是我的简单代码:
import numpy as np
from scipy.optimize import minimize
global array
y_wert = np.array([1,2,3,4,5,6,7,8])
global x_wert
x_wert = np.array([1,2,3,4,5,6,7,8])
def Test(x):
Summe = 0
for i in range(0,len(y_wert)):
Summe = Summe + (y_wert[i] - (x[0]*x_wert[i]+x[1]))
return(Summe)
x_0 = [1,0]
xopt = minimize(Test,x_0, method='nelder-mead',options={'xatol': 1e-8, 'disp': True})
print(xopt)
如果我运行这个脚本,最好的给定参数是:
[1.02325529e+44, 9.52347084e+40]
这确实不能解决这个问题。我也尝试了一些稍微不同的起始值,但这并不能解决我的问题。 谁能告诉我我的错误在哪里? 非常感谢您的帮助!
【问题讨论】:
-
您希望最小化总和的 absolute 值。您的代码将负和最小化为 -∞。在
Test做:return(abs(Summe))。还要看看输出消息,它通常是非常有价值的信息。success字段需要在解释结果之前检查。
标签: python numpy scipy scipy-optimize-minimize