You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy中对Eq对象求导仅得符号未计算,如何解决?

Sympy中保留等式美观性并获取导数计算结果的方法

问题原因

用Eq(U, X**a*Y**b)定义等式后,对其求导时Sympy会将U视为独立符号,因此得到的结果是Eq(diff(U, X), a*X**(a-1)*Y**b)——左侧是U对X的导数符号,右侧是计算后的导数。若你希望左侧也替换为U的表达式对应的导数,或同时保留U的美观定义和导数计算结果,可采用以下方案:

方案1:求导后替换U的表达式

先创建U的定义等式,求导后用等式右侧替换左侧的U,得到全展开的导数等式:

from sympy import symbols, Eq, diff

a, b, X, Y, U = symbols('a b X Y U')
# 美观的U定义等式
eq_def = Eq(U, X**a * Y**b)
# 对等式求导
eq_deriv = diff(eq_def, X)
# 用U的表达式替换左侧的U,得到展开后的导数等式
full_deriv_eq = eq_deriv.subs(U, eq_def.rhs)
print(full_deriv_eq)

输出结果:Eq(a*X**(a - 1)*Y**b, a*X**(a - 1)*Y**b)

方案2:分离定义与求导,兼顾美观与结果

先定义U的表达式,用等式展示美观定义,再直接对表达式求导并包装成导数等式:

from sympy import symbols, Eq, diff

a, b, X, Y, U = symbols('a b X Y U')
# 定义U的表达式
u_expr = X**a * Y**b
# 美观的U定义等式
eq_def = Eq(U, u_expr)
# 计算导数并包装成等式,左侧保留dU/dX符号,右侧是计算结果
eq_deriv = Eq(diff(U, X), diff(u_expr, X))
print("U的定义:", eq_def)
print("U对X的导数:", eq_deriv)

输出:

U的定义: U = X**a*Y**b
U对X的导数: dU/dX = a*X**(a - 1)*Y**b

这样既可以用eq_def展示美观的U定义,又能得到包含计算后导数结果的等式。

内容的提问来源于stack exchange,提问作者Macosso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:45:42