2016-10-10 5 views
0

Wie kann ich eine Funktion minimieren (unkoordiniert), respektiere a [0] und a [1]? Beispiel (dies ist ein einfaches Beispiel für I scipy, numpy und py uderstand):Python, scipy: multivariable Funktion im Integral-Ausdruck minimieren

import numpy as np 
from scipy.integrate import * 
from scipy.optimize import * 
def function(a): 
    return(quad(lambda t: ((np.cos(a[0]))*(np.sin(a[1]))*t),0,3)) 

Ich habe versucht:

l=np.array([0.1,0.2]) 
res=minimize(function,l, method='nelder-mead',options={'xtol': 1e-8, 'disp': True}) 

aber ich Fehler bekommen. Ich bekomme die Ergebnisse in Matlab.

eine Idee?

Dank im Voraus

+2

* "... Ich bekomme Fehler." * Bitte zeigen Sie die vollständige Fehlermeldung. –

+1

Ist "Chirplet" das gleiche wie "Funktion"? Möchten Sie auch, dass die Funktion über "l" integriert wird und "a" variiert, um das Integral zu minimieren? – mommermi

Antwort

2

Dies ist nur eine Vermutung ist, weil Sie nicht genügend Informationen in der Frage für jemand wirklich wissen, was das Problem ist, aufgenommen haben. Wenn Sie eine Frage zu Code stellen, der einen Fehler generiert, fügen Sie immer die vollständige Fehlermeldung in die Frage ein. Im Idealfall sollten Sie eine minimal, complete and verifiable example einschließen, die wir ausführen können, um das Problem zu reproduzieren. Derzeit definieren Sie function, aber später verwenden Sie die undefinierte Funktion chirplet. Das macht es für jeden etwas schwieriger, sein Problem zu verstehen.

said that ...

scipy.integrate.quad zwei Werte zurückgibt: die Abschätzung des Integrals und eine Schätzung des absoluten Fehlers des Integrals. Offenbar haben Sie dies in function nicht berücksichtigt. Versuchen Sie etwas wie folgt:

def function(a): 
    intgrl, abserr = quad(lambda t: np.cos(a[0])*np.sin(a[1])*t, 0, 3) 
    return intgrl 
+1

Ich würde auch sagen, auch den eigentlichen Code, der das Problem verursacht. Ich denke, dass das OP ruft ** Funktion ** in seinem/ihrem Code und nicht ** Chirplet **. –

+1

@BillBell Yup. Ich habe einen Vorschlag hinzugefügt, um einen MCVE einzuschließen. –

+0

Warren Weckesser Es tut mir leid, du hast Recht. Das Problem war, dass du dich identifiziert hast, thx für die Lösung;) – plus91

Verwandte Themen