2016-04-22 15 views
6

vereinfacht, verwende ich sympy v1.0 in Jupyter Notebook. Ich habe Probleme, Ausdruck zu bekommen, um zu vereinfachen, wie ich möchte. Hier ist ein Spielzeugbeispiel; es tut dasselbe meine kompliziertere Ausdrücke tun ...Wie man sqrt Ausdrücke 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)) 

gibt mir ...

      expression from sympy

Aber ich würde es vorziehen, ...

      enter image description here

Wie kann ich sympy bekommen, um Dinge auf diese Weise zu gruppieren? Ich habe versucht, einige der anderen simplify Funktionen, aber sie alle geben mir das gleiche Ergebnis. Oder vermisse ich etwas anderes?

+3

Wenn Sie x und y nicht als real und positiv festlegen, wird SymPy sie nicht aufteilen (weil es ungültig ist). – asmeurer

+0

@asmeurer Danke, das hilft in der Tat. Es zieht immer noch die 2 heraus, aber das ist leichter zu bewältigen. Ich fand heraus, dass ich auch improvisieren kann, indem ich alles quadriere, um zu überprüfen, wie alles zusammenkommt. – kwinkunks

Antwort

0

sympy möchte wirklich vereinfachen, indem Begriffe aus sqrt ziehen, was Sinn macht. Ich denke, Sie müssen tun, was Sie wollen, manuell, d. H. Erhalten Sie die Vereinfachung, die Sie ohne den sqrt Anruf wünschen, und dann täuschen Sie es mit Symbol mit einem LaTex \sqrt Wrap. Zum Beispiel:

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{} 

Das ist wirklich nicht ideal, aber ich sah durch die docs für etwa eine Stunde, und konnte einfach nicht ihre Unterstützung finden für das, was Sie wollen direkt. Die sympy Bibliothek ist mehr über tatsächliche symbolische Manipulation, weniger über das Drucken, so kann ich kaum sie beschuldigen.

+0

Ich schätze deine Einsicht, aber das fühlt sich zu kompliziert an. Der Vorschlag, keine echten positiven Symbole anzugeben, hat mir geholfen. Trotzdem danke. – kwinkunks