如果我已使用Sympy获得以下方程式:
是否可以安排变量,以使x和L在方程式中仅显示为x / L?
x/L
用另一个符号(例如y
)代替对我似乎有用:
>>> import sympy as sp
>>> x, L, u, nu, y = sp.symbols('x L u nu y')
>>> expr = 0.45*nu/u**6/(1-x/L)**6 * (u**5*x - 5*u**5*x**2/2/L + 10*u**5*x**3/3/L**2 - 5*u**5*x**4/2/L**3 + u**5*x**5/L**4 - u**5*x**6/6/L**5)
>>> sp.init_printing(use_unicode=True)
>>> expr
⎛ 5 2 5 3 5 4 5 5 5 6⎞
⎜ 5 5⋅u ⋅x 10⋅u ⋅x 5⋅u ⋅x u ⋅x u ⋅x ⎟
0.45⋅ν⋅⎜u ⋅x - ─────── + ──────── - ─────── + ───── - ─────⎟
⎜ 2⋅L 2 3 4 5⎟
⎝ 3⋅L 2⋅L L 6⋅L ⎠
────────────────────────────────────────────────────────────
6
6 ⎛ x⎞
u ⋅⎜1 - ─⎟
⎝ L⎠
>>> expr2 = expr.subs(x/L, y)
>>> expr2
⎛ 5 5 5 3 5 2 5 ⎞
⎜ u ⋅x⋅y 5 4 5⋅u ⋅x⋅y 10⋅u ⋅x⋅y 5⋅u ⋅x⋅y 5 ⎟
0.45⋅ν⋅⎜- ─────── + u ⋅x⋅y - ───────── + ────────── - ──────── + u ⋅x⎟
⎝ 6 2 3 2 ⎠
───────────────────────────────────────────────────────────────────────
6 6
u ⋅(-y + 1)
>>> expr2.collect(x*u**5)
⎛ 5 3 2 ⎞
⎜ y 4 5⋅y 10⋅y 5⋅y ⎟
0.45⋅ν⋅x⋅⎜- ── + y - ──── + ───── - ─── + 1⎟
⎝ 6 2 3 2 ⎠
─────────────────────────────────────────────
6
u⋅(-y + 1)
>>>
如果您确实希望它显示为符号(x/L)
,则需要对其进行定义并重新替换:
>>> s = sp.symbols('(x/L)')
>>> expr2.collect(x*u**5).subs(y, s)
⎛ 5 3 2 ⎞
⎜ (x/L) 4 5⋅(x/L) 10⋅(x/L) 5⋅(x/L) ⎟
0.45⋅ν⋅x⋅⎜- ────── + (x/L) - ──────── + ───────── - ─────── + 1⎟
⎝ 6 2 3 2 ⎠
─────────────────────────────────────────────────────────────────
6
u⋅(-(x/L) + 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句