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

如何用SymPy求解符号比例?代码无法得到预期结果求助

问题分析与解决

你的代码有两个关键问题导致无法得到预期结果:

  1. 求解变量不被识别:sympy.solve无法直接把Q/q当作待求解变量,需要先将这个比值定义为新的符号变量。
  2. 平衡条件未明确:原代码仅计算了两个力的和,但实际需求是受力平衡(合力为0),需要明确写出等式Eqn = sy.Eq(F21 + F41i, 0)。

另外,方程中的K、a²、sy.I(矢量方向分量)均不为0,可以提前约去,简化计算过程。

修正后的代码

import sympy as sy

q, Q, a, K = sy.symbols('q Q a K')
# 定义目标变量x = Q/q
x = sy.symbols('x')

F21 = K * q * Q / a**2 * (-sy.I)
F41i = K * Q * Q / (2*a**2) * 1/sy.sqrt(2) * (sy.I)

# 建立受力平衡方程:合力等于0
eq = sy.Eq(F21 + F41i, 0)
# 将Q替换为x*q,把方程转化为关于x的形式
eq_x = eq.subs(Q, x*q)
# 约去非零项K*q*I/a²,简化方程
simplified_eq = sy.simplify(eq_x / (K * q * sy.I / a**2))

# 求解x
ans = sy.solve(simplified_eq, x)
print(ans)

运行结果

执行代码后会输出[2*sqrt(2)],与预期的Q/q = 2√2完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:10:36