如何使用 SymPy 在同一行显示变量?
How can I display variables on the same line with SymPy?
我有这段代码,我想将它与文本显示在同一行。
from sympy import *
c, x, L, y, a, b, E, xi, A, R, D, nu, q0, h, eta = symbols("c,x,L,y,a,b,E,xi,A,R,D,nu,q0,h,eta")
w = c * x / a * (1 - cos(2 * pi * y / b))
wx = diff(w, x)
wxx = diff(w, x, 2)
wy = diff(w, y)
wyy = diff(w, y, 2)
q = q0 * (1 - x / a)
display(w, q, wy)
当我显示它时它显示:
w
q
wy
我想让它显示 w,q,wy 这样我也可以输入文本。有人知道怎么做吗?
试试这个:首先使用 init_printing()
,不要使用 display
:
from sympy import *
init_printing()
c, x, L, y, a, b, E, xi, A, R, D, nu, q0, h, eta = symbols("c,x,L,y,a,b,E,xi,A,R,D,nu,q0,h,eta")
w = c * x / a * (1 - cos(2 * pi * y / b))
wx = diff(w, x)
wxx = diff(w, x, 2)
wy = diff(w, y)
wyy = diff(w, y, 2)
q = q0 * (1 - x / a)
w, q, wy
这会将它们显示为内嵌的元组。
编辑 以容纳评论。我个人不会使用它,因为它可能会造成更多的麻烦,而不是它的价值:
import inspect
from IPython.display import display, Math
def edisplay(var):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
var_name = [var_name for var_name, var_val in callers_local_vars if var_val is var]
var_name.sort()
var_name = [v for v in var_name if v[0] != "_"]
if len(var_name) == 0:
raise ValueError
lat = var_name[0] + "=" + latex(var)
display(Math(lat))
edisplay(q)
# out: q = q0*(1 - x/a)
edisplay(w)
# out: w = c*x*(1 - cos(2*pi*y/b))/a
我有这段代码,我想将它与文本显示在同一行。
from sympy import *
c, x, L, y, a, b, E, xi, A, R, D, nu, q0, h, eta = symbols("c,x,L,y,a,b,E,xi,A,R,D,nu,q0,h,eta")
w = c * x / a * (1 - cos(2 * pi * y / b))
wx = diff(w, x)
wxx = diff(w, x, 2)
wy = diff(w, y)
wyy = diff(w, y, 2)
q = q0 * (1 - x / a)
display(w, q, wy)
当我显示它时它显示:
w
q
wy
我想让它显示 w,q,wy 这样我也可以输入文本。有人知道怎么做吗?
试试这个:首先使用 init_printing()
,不要使用 display
:
from sympy import *
init_printing()
c, x, L, y, a, b, E, xi, A, R, D, nu, q0, h, eta = symbols("c,x,L,y,a,b,E,xi,A,R,D,nu,q0,h,eta")
w = c * x / a * (1 - cos(2 * pi * y / b))
wx = diff(w, x)
wxx = diff(w, x, 2)
wy = diff(w, y)
wyy = diff(w, y, 2)
q = q0 * (1 - x / a)
w, q, wy
这会将它们显示为内嵌的元组。
编辑 以容纳评论。我个人不会使用它,因为它可能会造成更多的麻烦,而不是它的价值:
import inspect
from IPython.display import display, Math
def edisplay(var):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
var_name = [var_name for var_name, var_val in callers_local_vars if var_val is var]
var_name.sort()
var_name = [v for v in var_name if v[0] != "_"]
if len(var_name) == 0:
raise ValueError
lat = var_name[0] + "=" + latex(var)
display(Math(lat))
edisplay(q)
# out: q = q0*(1 - x/a)
edisplay(w)
# out: w = c*x*(1 - cos(2*pi*y/b))/a