我正在尝试在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
)。
我正在尝试在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
)。
我尝试使用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)))
我认为这是问题的一个更普遍的解决方案。
x
声明为sympy.Symbol
,但一旦执行赋值x=y+z
,x
就成为y+z
的别名。从那时起,每当您在后面使用x
时,Python都会自动将其翻译为y+z
。Eq(S('x'),y+z)
来显示等式。S('x')
的 x
值? - psychemediaS()
只是将字符串转换为 sympy 表达式。由于 x
已经被定义为符号,因此您可以在此处使用 Eq(x, y + z)
。 - asmeurerFalse
而不是表达式本身。 - iury simoes-sousadisplay(Eq(S('x'), y+z, evaluate=False))
进行操作。这样可以显示完整的表达式,而不是显示“True”或“False”。 - CyclicUniverse我知道这不完全是答案,但对于那些只想要一个函数 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)