如何使用 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