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

如何使用SymPy对方程进行变量整理,得到vz(t)的显式表达式

SymPy提取vz(t)显式表达式最优方案

你现有代码存在笔误:调用dsolve时传入的参数是eqn,但你定义的方程变量名为eqns,修正后可按以下步骤拿到显式的vz(t)表达式:

  • 定义符号时增加物理属性约束,减少求解过程中生成的无效复数、无意义解
  • 求解微分方程后调用solve显式提取vz(t)
  • 通过初值条件过滤符合物理逻辑的有效解

完整实现代码如下:

import sympy as sym
sym.init_printing()
# 为符号增加实域、正参数约束,减少冗余解
t,m,k,g,v0,psi = sym.symbols("t m k g v_0 psi", real=True, positive=True)
vz = sym.Function('v_z', real=True)

# 定义微分方程
eqns = sym.Eq(-k*vz(t)**2 - m*vz(t).diff(t) - m*g, 0)
# 求解微分方程,修正变量名笔误
sol = sym.dsolve(eqns, ics = {vz(0): v0*sym.sin(psi)})

# 显式求解vz(t)
vz_candidates = sym.solve(sol, vz(t))
# 过滤符合初值条件的有效解
valid_vz = [expr for expr in vz_candidates if sym.simplify(expr.subs(t, 0) - v0*sym.sin(psi)) == 0][0]

# 输出vz(t) = ... 形式的显式结果
sym.Eq(vz(t), valid_vz)

如果需要进一步简化表达式,可调用sym.simplify(valid_vz)对结果做代数化简。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:30:04