多項式に制約のある最小二乗メロンを実行したい。その前に、私は制約のない最適化を試みることにしました。ここで問題です:Scipiy.optimize.minimaze制約のないエラー
私の多項式が
のような$ Fを検索します(x)の斧は^ 4 + BX^3 + CX^2 + DX + E $
=だから私は最高の係数を見つけたいですa、b、c、dおよびeを含む。私は、このように最小限にしたい機能は
x
と
y
は私の点の座標のリストである
def lsq(args, x, y):
return sum([(y[i] - (args[0]*x[i]**4 + args[1]*x[i]**3 + args[2]*x**2 + args[3]*x + args[4]))**2
for i in np.arange(len(x))])
のように見えます。このように、私のコードは次のようになります。
import numpy as np
import scipy.optimize
pH = np.array([8,8,8,7,7,7,7,7,7,7,7,7,6,3,2,2,2,1])
def rank2(y):
return np.array([(i+1)/len(y) for i in range(len(y))])
x = rank2(pH)
y = pH
def lsq(args, x, y):
return sum([(y[i] - (args[0]*x[i]**4 + args[1]*x[i]**3 + args[2]*x**2 + args[3]*x + args[4]))**2
for i in np.arange(len(x))])
params = scipy.optimize.minimize(nejmensi_ctverce, [1.0, 1.0, 1.0, 1.0, 1.0], args = (x, y))
しかし、ここで私はエラーを得た:
File "C:\Users\Robert\Desktop\WinPython-64bit-3.6.1.0Qt5\python-
3.6.1.amd64\lib\site-packages\scipy\optimize\optimize.py", line 628, in _approx_fprime_helper
grad[k] = (f(*((xk + d,) + args)) - f0)/d[k]
ValueError: setting an array element with a sequence
あなたは私を助けることができますか?私はminimize
関数の引数を解析する方法を完全には理解していないと思います。 lsq
で
大きな回答、ありがとうございます。 – Bobesh