Auswerten einer Funktion an einem Punkt in SymPy

8

Ich versuche verschiedene Optimierungsmethoden zu schreiben, um sie zu überarbeiten. Ich möchte in der Lage sein, SymPy zu verwenden, um eine Funktion mit einer beliebigen Anzahl von Variablen an einem gegebenen Punkt auszuwerten, wobei die Koordinaten des Punktes in einem Array gespeichert werden.

Ich möchte zum Beispiel f(x,y) = 3*x**2 - 2*x*y + y**2 + 4*x + 3*y am Punkt b = [1,2] auswerten. Aber ich würde wirklich gerne eine allgemeine Art und Weise, dies zu tun, die eine Funktion mit einer beliebigen Anzahl von Variablen und eine angemessene Länge Array als der Punkt als ausgewertet werden kann, so dass sympy.evalf(f, subs = {foo}) ist nicht wirklich sehr nützlich.

    
Tam Coton 18.03.2013, 13:49
quelle

2 Antworten

4

Sie arbeiten mit SymPy-Ausdrucksbäumen, nicht mit Funktionen. Auf jedem Ausdruck können Sie Folgendes tun:

%Vor%     
Krastanov 18.03.2013, 14:43
quelle
1

Ich würde auch erwarten, dass dies einfacher ist, aber hier ist ein guter Workaround:

Wenn Sie die Symbolnamen kennen ( 'x' , 'y' , z. B.), können Sie eine dict im laufenden Betrieb mit zip :

erstellen %Vor%     
askewchan 18.03.2013 14:43
quelle

Tags und Links