1

我是 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]

这真的不能解决这个问题。我也尝试了一些稍微不同的起始值,但这并不能解决我的问题。谁能告诉我我的错误在哪里?非常感谢你的帮助!

4

1 回答 1

1

您的测试函数实际上是一条具有负梯度的直线,因此没有最小值,它是一个无限递减函数,可以解释您的大结果,请尝试使用 x squared 之类的方法

于 2020-03-11T00:44:54.153 回答