2016-04-22 15 views
6

私はJupyter Notebooksympy v1.0を使用しています。私はどのようにしたいのかを簡略化する表現を得るのに苦労している。ここにおもちゃの例があります。それは...私の複雑な式を行うのと同じことをしsympyでsqrt式を簡略化する方法

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

は私に...

      expression from sympy

を与えるしかし、私は希望...

      enter image description here

このようにしてsympyをグループ化するにはどうすればよいですか? Iveは他のsimplify関数のいくつかを試しましたが、それらはすべて私に同じ結果を与えます。あるいは私は何か他のものを逃していますか

+3

xとyを実数と正数に設定しないと、SymPyはそれらを分割しません(そうすることができないため)。 – asmeurer

+0

@asmeurer本当にありがとうございました。それはまだ2を引き出しますが、それは対処が簡単です。私はまた、すべてを集めてすべてのものがどのように集まっているかをチェックすることで即興化することもできることを発見しました。 – kwinkunks

答えて

0

sympyは、実際にはsqrtの用語を引き出すことで簡素化したいと考えています。 sqrtコールがなければ、手作業でやりたい簡略化をしてから、Symbol LaTex \sqrtラップを使用してファジーしてください。たとえば:

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

これは本当に理想的ではありませんが、私は約時間のドキュメントに目を通し、そしてちょうどあなたが直接欲しいもののためにサポートを見つけることができませんでした。 sympyライブラリは、実際の記号操作のほうが印刷に関するものではありませんので、私はそれらを非難することはほとんどありません。

+0

あなたの洞察力に感謝しますが、これはあまりにも複雑です。本当の、肯定的な記号を指定しないという提案は私を助けました。とにかくありがとうございました。 – kwinkunks