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

使用Python SymPy指定区间求解三角函数交点的报错修复方法

问题修复方案

错误原因

报错核心是nsolve函数不支持直接传入SymPy逻辑条件(And(0 < x, x < pi/2))作为搜索参数,同时原代码没有把输入的字符串方程转换为SymPy可识别的表达式,也会触发后续运算错误。

修复思路

  • 用sympify()将用户输入的字符串方程转换为SymPy表达式
  • 区间内求根可以选择两种可行方案:
    • 方案1:给nsolve传入区间中点作为初始猜测值,nsolve会在初始值附近搜索根
    • 方案2:用solveset直接指定求解区间,更适合固定区间的三角函数求根

修复后完整代码

import mpmath
from IPython.display import display, Latex 
from sympy import *
init_printing(pretty_print=True)

a, b, c, d, x, y, z = symbols('a b c d x y z')

# 输入方程后转换为SymPy表达式
Equation1 = sympify(input('Enter the first equation: '))
Equation2 = sympify(input('Enter the second equation: '))

# 求解区间0<x<pi/2内的根,两种方案二选一即可
# 方案1:用nsolve,传入区间中点pi/4作为初始猜测值
solve_trig = nsolve(Equation1 - Equation2, x, pi/4)

# 方案2:用solveset直接限定求解区间,更稳妥
# solve_trig = solveset(Equation1 - Equation2, x, Interval.open(0, pi/2)).evalf().pop()

# 输出保留三位小数的结果
print(f"{solve_trig:.3f} radians")

运行测试

当输入第一个方程为tan(x),第二个方程为cos(x)时,输出结果为:

0.666 radians

注意事项

输入方程时需要符合SymPy的语法规范,三角函数、圆周率直接写tan()、cos()、pi即可,不需要额外加前缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:36:05