如何在sympy中显示完整的表达式?

8

我正在尝试在Jupyter笔记本中使用sympy以可重复的方式记录和执行一系列数学计算。

如果我定义如下:

from sympy import *

init_printing()
x, y, z = symbols("x y z")

x=y+z
x

那么我可以显示x的值(即y+z)。

如何显示完整的方程式(x=y+z)?

运行Eq(x,y+z),即使使用evaluate=False也会返回已替换x值的表达式(y+z=y+z)。

3个回答

8

我尝试使用Eq(S('x'),y+z),也尝试使用Eq(S('x'),x),但是sympy一直返回一个布尔变量。

所以我找到了一种使用内置函数Ipython显示它的方法:

from sympy import *
from IPython.display import display, Math

init_printing()
x, y, z = symbols("x y z")

x=y+z
display(Math('x = '+latex(x)))

我认为这是问题的一个更普遍的解决方案。


对我不起作用:“KaTex解析错误”。 也许我的变量命名不好。 - gberth

5
尽管您最初将x声明为sympy.Symbol,但一旦执行赋值x=y+zx就成为y+z的别名。从那时起,每当您在后面使用x时,Python都会自动将其翻译为y+z
如果您坚持使用这种工作流程,可以使用Eq(S('x'),y+z)来显示等式。

是否有一种方法可以返回等同于 S('x')x 值? - psychemedia
S() 只是将字符串转换为 sympy 表达式。由于 x 已经被定义为符号,因此您可以在此处使用 Eq(x, y + z) - asmeurer
当我尝试这种方式时,它返回的是 False 而不是表达式本身。 - iury simoes-sousa
3
请使用 display(Eq(S('x'), y+z, evaluate=False)) 进行操作。这样可以显示完整的表达式,而不是显示“True”或“False”。 - CyclicUniverse

0

我知道这不完全是答案,但对于那些只想要一个函数 f(x,y,z,...) 右侧的整洁打印的人,你可以像这样使用 f.subs(x,x):

import sympy as sp
x,y,z=sp.symbols('x,y,z')
f=x+2*y+3*sp.exp(z)
f.subs(x,x)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接