2015-10-04 11 views
9

L'assegnazione diretta di una variabile non modifica le espressioni che hanno utilizzato la variabile in modo retroattivo.Come sostituire più simboli in un'espressione in sympy?

>>> from sympy import Symbol 
>>> x = Symbol('x') 
>>> y = Symbol('y') 
>>> f = x + y 
>>> x = 0 

>>> f 
x + y 
+0

check-out: http://docs.sympy.org/latest/tutorial/basic_operations.html per 'expr.subs (x, val)' –

risposta

17

di sostituire diversi valori:

>>> from sympy import Symbol 
>>> x, y = Symbol('x y') 
>>> f = x + y 
>>> f.subs({x:10, y: 20}) 
>>> f 
30 
+0

Cercavo una risposta a questo prima. Capisco perché il mio codice non ha funzionato, ma ho solo bisogno di un riferimento rapido per la sintassi di sub i valori. Non ho trovato nulla all'interno della mia prima ricerca su google, quindi ho pensato di condividere la risposta dopo averlo capito, speriamo di salvare il prossimo ragazzo prima o poi. Pubblicare lo stile di domande e risposte è una caratteristica di StackOverflow. http://meta.stackoverflow.com/questions/290038/answer-your-own-question-qa-style – Wesley

+0

cosa succede se f è una matrice di simboli? come in 'a = symarray ('a', 3)'? –

1

realtà sympy è progettato per non sostituire i valori fino a quando si vuole veramente per sostituirli con subs (vedi http://docs.sympy.org/latest/tutorial/basic_operations.html)

Prova

f.subs({x:0}) 
f.subs(x, 0) # as alternative 

anziché

x = 0 
+0

cosa succede se f è una matrice di simboli? come in 'a = symarray ('a', 3)'? –

1

Il comando x = Symbol('x') negozi Sympy di Symbol('x') Into Python variabile x. L'espressione Sympy f creata successivamente contiene Symbol('x'), non la variabile Python x.

Quando si riassegna x = 0, la variabile Python x è impostata su zero e non è più correlata a Symbol('x'). Ciò non ha alcun effetto sull'espressione Sympy, che contiene ancora Symbol('x').

Questo è meglio spiegato in questa pagina della documentazione Sympy: http://docs.sympy.org/latest/gotchas.html#variables

Che cosa si vuole fare è f.subs(x,0), come detto in altre risposte.

+0

cosa succede se f è una matrice di simboli? come in 'a = symarray ('a', 3)'? –