2016-05-06 14 views
0

Ich bin neu in der Optimierung und Probleme mit der Minimierung der kleinsten Quadrate. Hier ist der Code habe ich versucht, so weit:Probleme mit scipy.optimize.leastsq haben

def func (tpl, x):. return 1./exp(x/360 * tpl)

def errfunc (tpl, x, y) : func (tpl, x) - y

// x-Achse

xdata np.array = ([181.274])

// minimieren sum (y - func (x)) * * 2

YDATA np.array = ([0.992198836646864,0.992996067735572])

// Anfangsschätz

tplInitial1 = (0,031, 0,032) Popt, pcov = leastsq (errfunc, tplInitial1 [:], args = (xdata , ydata)) print popt

Ich hatte gehofft, [0.032359,0.03071] zurückgegeben von der Funktion zu minimieren, aber "nur Längen-1-Arrays können in Python-Skalare konvertiert werden". Jede Hilfe wird geschätzt. Vielen Dank.

+1

Ist das der eigentliche Code, den Sie ausführen? '//' ist keine Python-Kommentarsyntax! –

+1

'errfunc' hat keine' return' Anweisung, also gibt es 'None' zurück. Vermutlich sollte der Körper der Funktion 'return func (tpl, x) - y 'sein. –

Antwort

0

Ich vermute, Sie verwenden math.exp anstelle von numpy.exp (d. H. Die skalare Version anstelle der Array-Version). Versuchen Sie es mit from numpy import exp.