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

求助:SymPy无法求解包含对数项差值的方程

解决SymPy求解含对数差值方程的问题

问题根源

原代码使用了浮点数0.71,SymPy对浮点数的处理会默认视为数值近似问题,而非精确符号运算,导致求解逻辑混乱;同时未合并对数项,增加了方程复杂度,让求解器难以识别可解结构。

修复方案与代码

核心优化点

  • 用精确分数替换浮点数:将0.71换成SymPy的Rational(71, 100),保证符号计算的精确性
  • 合并对数项:利用log(X) - log(Y) = log(X/Y)的性质化简方程,降低求解难度

完整修复代码

import sympy as sp
from sympy import Rational

# 定义符号变量
t, a, b, x, T, psi1 = sp.symbols('t a b x T psi_1')

# 用精确分数定义指数,合并对数项简化方程
exponent = Rational(71, 100) / psi1
log_part = sp.log( ((a+x)**exponent * (b+x)**(-exponent)) / (a**exponent * b**(-exponent)) )
eq = -T + t + log_part

# 求解方程
solution = sp.solve(eq, x)
print(solution)

化简后方程的推导逻辑

合并对数项后,方程可进一步简化为:

log( [b(a+x)]/[a(b+x)] ) = T - t
两边取自然指数得:b(a+x)/(a(b+x)) = exp(T - t)
整理后可直接解出x的显式表达式

运行修复后的代码,会得到x的解析解:

[(a*b*(exp(T - t) - 1))/(a - b*exp(T - t))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:22:10