2016-06-09 66 views
5

Per quanto sciocco possa sembrare, mi piacerebbe utilizzare le lettere greche composte come un unico simbolo in SymPy. Ad esempio, se si immette in un notebook Jupyter seguente:Esiste un modo corretto per impostare le lettere greche composte come simbolo in SymPy?

import sympy as sp 
ab = sp.Symbol("alpha beta") 
sp.pprint(ab) 

ab si comporta come desiderato quando usato in manipolazioni simboliche, ma il risultato è:

alpha beta 

desidero dell'uscita essere:

α⋅β 

ho potuto utilizzare il comando sub dopo manipolazioni, in questo modo:

ab.subs({ab : sp.Symbol("alpha") * sp.Symbol("beta")}) 

ma questo è noioso e indesiderabile.

+0

Aggiungere un '*' tra ogni lavoro char? '>>> pprint (alpha * beta) α⋅β' –

+0

No. Se prendessi la derivata di quell'espressione rispetto a' alpha', otterrei 'beta'. Voglio ricevere zero. –

risposta

4

I nomi dei simboli possono essere qualsiasi stringa, ma la conversione automatica dei nomi delle lettere greche in lettere greche per la stampa non funziona per tutti gli input. Immagino che non provi a dividere la stringa in spazi.

Se si utilizza il notebook Jupyter, si può solo impostare il nome del simbolo di essere il LaTeX di ciò che si vuole

ab = Symbol(r'\alpha\cdot\beta') 

(non dimenticate di prefisso la stringa con r, in modo che doesn Python non mangiare i backslash)

Se si utilizza l'output di testo normale, è possibile impostarlo sulla stringa Unicode. Questo dovrebbe funzionare anche nel notebook Jupyter, anche se renderà leggermente diverso dal momento che renderà i caratteri Unicode reali invece del LaTeX.

ab = Symbol(u'α⋅β') 
+0

Proprio quello di cui avevo bisogno! Grazie! –