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

Sympy求解三元方程组遇阻:solve无结果nonlinsolve仅解出两变量

Sympy求解三元方程组卡顿/不完整解问题

我是Sympy新手,尝试求解一个三元方程组,但solve函数运行30分钟仍无结果,nonlinsolve函数仅能解出其中两个变量。我尝试修改符号定义域、添加变量假设,以及设置manual=True,均未解决问题。已知该方程组存在解(Maple可正常求解),请问我哪里操作有误?

我的代码如下:

import sympy as smp
smp.init_printing()

# 定义带假设的符号
v0,L,T,g,h, = smp.symbols('v0,L,T,g,h',real=True,positive=True)
theta = smp.symbols('theta',real=True,domain=smp.Interval(0,smp.pi/2))

# 定义方程组
eq1 = v0*smp.cos(theta)*T-L
eq2 = v0*smp.sin(theta)*smp.Rational(1,2)-smp.Rational(1,2)*g*(T*smp.Rational(1,2))**2-h
eq3 = v0*smp.sin(theta)*T-smp.Rational(1,2)*g*(T)**2

# 使用solve求解(一直卡顿)
smp.solve((eq1,eq2,eq3),(v0,theta,T))

# 使用nonlinsolve求解(得不到theta的解)
smp.nonlinsolve((eq1,eq2,eq3),(v0,theta,T))

问题分析与解决方法

你的代码存在两处小问题,加上Sympy自动联立求解复杂方程的效率限制,导致了当前困境:

  1. 第二次调用求解函数时误写为solve而非nonlinsolve;
  2. 直接让Sympy处理包含三角函数+有理式的三元联立方程,计算量过大,自动求解逻辑无法顺利分离出theta的解。

可以通过手动分步消元解决,利用方程组结构简化计算:

import sympy as smp
smp.init_printing()

# 定义带假设的符号
v0,L,T,g,h, = smp.symbols('v0,L,T,g,h',real=True,positive=True)
theta = smp.symbols('theta',real=True,domain=smp.Interval(0,smp.pi/2))

# 定义方程组(简化书写,提升可读性)
eq1 = v0*smp.cos(theta)*T - L
eq2 = (v0*smp.sin(theta))/2 - (g*(T/2)**2)/2 - h
eq3 = v0*smp.sin(theta)*T - (g*T**2)/2

# 步骤1:从eq3解出v0*sin(theta)的表达式
vsin_expr = smp.solve(eq3, v0*smp.sin(theta))[0]  # 结果为 (g*T)/2

# 步骤2:代入eq2,解出T的解析解
eq2_sub = eq2.subs(v0*smp.sin(theta), vsin_expr)
T_solution = smp.solve(eq2_sub, T)[0]

# 步骤3:将T代入eq1,解出v0*cos(theta)的表达式
vcos_expr = smp.solve(eq1.subs(T, T_solution), v0*smp.cos(theta))[0]

# 步骤4:利用三角函数关系计算v0和theta
v0_solution = smp.sqrt(vsin_expr.subs(T, T_solution)**2 + vcos_expr**2)
theta_solution = smp.atan2(vsin_expr.subs(T, T_solution), vcos_expr)

# 整理完整解
final_solution = {
    T: T_solution,
    v0: v0_solution,
    theta: theta_solution
}

# 输出结果
final_solution

为什么这样有效?

  • 手动消元避免了Sympy处理复杂的三元非线性联立问题,大幅降低计算量;
  • 利用v0*sin(theta)和v0*cos(theta)的平方和关系,直接推导出v0和theta,绕开了Sympy自动求解时可能卡住的三角函数反推步骤。

内容的提问来源于stack exchange,提问作者Mikkel Ravn-Feld

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:33:11