Python:使用scipyoptimize minimize 不会最小化函数
Python: Using scipy optimize minimize does not minimize function
我是 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]
这确实没有解决这个问题。我也尝试了一些略有不同的起始值,但这并没有解决我的问题。
谁能告诉我我的错误在哪里?
非常感谢您的帮助!
你的测试函数实际上是一条负梯度的直线,所以没有最小值,它是一个无限递减的函数,这解释了你的大结果,尝试像 x 平方这样的东西来代替
我是 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]
这确实没有解决这个问题。我也尝试了一些略有不同的起始值,但这并没有解决我的问题。 谁能告诉我我的错误在哪里? 非常感谢您的帮助!
你的测试函数实际上是一条负梯度的直线,所以没有最小值,它是一个无限递减的函数,这解释了你的大结果,尝试像 x 平方这样的东西来代替