我在sympy
中使用Jupyter Notebook v1.0。我无法通过表达来简化我的喜好。这是一个玩具的例子;它做了同样的事情我更复杂的表达式...
import sympy
sympy.init_printing(use_latex='mathjax')
x, y = sympy.symbols("x, y", real=True, positive=True)
sympy.simplify(sqrt(2*x/y))
给了我......
但我更喜欢......
如何让sympy
以这种方式对事物进行分组?我尝试了其他一些simplify
函数,但它们都给了我相同的结果。或者我错过了其他什么?
答案 0 :(得分:1)
当您不想简化时(如@asmeurer所指出的那样),对于希望表现得像符号和“香草符号”的数字,请使用“符号欺骗”:
>>> _2,x,y = list(map(Symbol,'2xy'))
>>> sqrt(_2*x/y)
sqrt(2*x/y)
答案 1 :(得分:0)
sympy
确实希望通过从sqrt
中提取条款来简化,这是有道理的。我认为您必须手动执行您想要的操作,即在没有sqrt
调用的情况下获得所需的简化,然后使用带有LaTex Symbol
换行的\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
库更多地是关于实际的符号操作,而不是关于打印,所以我几乎不能责怪它们。