2016-04-22 19 views
6

Sto usando sympy v1.0 in un Jupyter Notebook. Ho difficoltà a trovare espressioni per semplificare il modo in cui mi piacerebbe. Ecco un esempio di giocattolo; fa la stessa cosa che i miei espressioni più complicate fanno ...Come semplificare le espressioni sqrt in sympy

import sympy 
sympy.init_printing(use_latex='mathjax') 
x, y = sympy.symbols("x, y", real=True, positive=True) 
sympy.simplify(sqrt(2*x/y)) 

mi dà ...

      expression from sympy

Ma io preferirei ...

      enter image description here

Come posso ottenere sympy per raggruppare le cose in questo modo? Ho provato alcune delle altre funzioni simplify, ma mi danno tutti lo stesso risultato. O mi manca qualcos'altro?

+3

Se non si imposta x e y come reali e positivi, SymPy non li separerà (perché non è valido farlo). – asmeurer

+0

@asmeurer Grazie, questo in effetti aiuta. Ancora tira fuori il 2, ma è più facile da gestire. Ho scoperto che posso anche improvvisare quadrando tutto per verificare come raccoglie tutto. – kwinkunks

risposta

0

sympy vuole davvero semplificare estraendo i termini da sqrt, il che ha senso. Penso che devi fare ciò che vuoi manualmente, cioè ottenere la semplificazione desiderata senza la chiamata sqrt, e quindi fonderla usando Symbol con un involucro LaTex \sqrt. Per esempio:

from sympy import * 
init_printing(use_latex='mathjax') 

# Wanted to show this will work for slightly more complex expressions, 
# but at the end it should still simplify to 2x/y 
x, y = symbols("x, y", real=True, positive=True) 
z = simplify((2*2*3*x)/(1*2*3*y)) 

Symbol("\sqrt{" + latex(z) + "}", real=True, positive=True) # Wrap the simplified fraction in \sqrt{} 

Questo non è proprio l'ideale, ma ho guardato attraverso la documentazione per circa un'ora, e proprio non riusciva a trovare il supporto per ciò che si desidera direttamente. La libreria sympy riguarda più l'effettiva manipolazione simbolica, meno la stampa, quindi non posso dar loro la colpa.

+0

Apprezzo la tua intuizione, ma questo sembra troppo complicato. Il suggerimento di non specificare simboli reali e positivi mi ha aiutato. Grazie lo stesso. – kwinkunks

Problemi correlati