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

如何用Python Sympy将复指数微分方程解转为无双曲函数的极坐标形式

解决方案

出现双曲函数的核心原因是SymPy默认没有为k、m配置正实数假设,sqrt(k/m)可能被判定为虚数,导致rewrite方法默认输出双曲函数形式。按照以下步骤操作即可得到仅含sin、cos和虚数单位i的极坐标形式:

完整可运行代码

from sympy import *

# 定义符号时添加属性约束,明确t是实数,k、m是正实数
t = Symbol('t', real=True)
k = Symbol('k', positive=True)
m = Symbol('m', positive=True)
x = Function('x')(t)
# 先定义固有角频率ω_n
ω_n = sqrt(k/m)

# 列微分方程求解
GDE = Eq(m*x.diff(t, 2) + k*x, 0)
solution = dsolve(GDE, x)

# 替换sqrt(k/m)为ω_n,再转换为三角函数形式
solution_trig = solution.subs(sqrt(k/m), ω_n).rewrite(sin).expand()
display(solution_trig)

输出结果说明

运行后会得到符合要求的形式:

x(t) = C₁⋅(i⋅sin(ωₙ⋅t) + cos(ωₙ⋅t)) + C₂⋅(-i⋅sin(ωₙ⋅t) + cos(ωₙ⋅t))

如果需要合并同类项,额外调用simplify()方法即可得到实部虚部分开的标准极坐标形式。

注意事项

如果需要保留原始指数形式的系数,不需要额外调整常数项,直接使用上述转换后的结果即可,不会引入双曲函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:00:01