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

如何使用Python求解仅含x的复杂单变量超越方程(含atan等函数)

单变量复杂数值方程Python求解方案

环境准备

直接安装Python生态常用的两个科学计算库即可,不需要额外开发复杂的迭代逻辑:

pip install numpy scipy

numpy负责数学函数的数值计算,scipy内置了成熟的数值求根算法,精度和效率都远高于手动实现的暴力迭代。

方程格式转换

所有单变量方程 f(x) = g(x) 都可以统一转成求根形式 f(x) - g(x) = 0,你给出的示例方程转换后为:
arctan(12/x) - arctan(√(7x)/31) - arctan((3x + 942 + √(2x²+2))/(4 + √(5+x²))) = 0

注意Python中的数学函数调用规则:反正切用np.arctan,开方用np.sqrt,幂运算用**。

求解代码示例

直接调用scipy提供的root_scalar函数即可完成求解,只需要传入转换后的方程和大致的解所在区间:

import numpy as np
from scipy.optimize import root_scalar

# 定义转换为求根形式的方程
def target_equation(x):
    left_part = np.arctan(12/x) - np.arctan(np.sqrt(7*x)/31)
    right_part = np.arctan((3*x + 942 + np.sqrt(2*x**2 + 2))/(4 + np.sqrt(5 + x**2)))
    return left_part - right_part

# 调用求解函数,已知解在0.001到0.01区间内,传入bracket参数指定区间
solve_result = root_scalar(target_equation, bracket=[0.001, 0.01])

# 输出求解结果
print("方程的近似解为:", solve_result.root)

运行上述代码得到的结果约为0.00523,和WolframAlpha的计算结果一致。

通用使用注意事项

  • 求解前需要先大致确定解的所在区间,不确定区间范围时可以先打印不同x取值下的target_equation(x)值,找到函数值从正变负/从负变正的区间即可
  • 如果方程在某些点无定义,设置区间时避开无定义点即可,比如本例中x不能为0,所以区间左端点设为0.001
  • 有更高精度要求时,可以给root_scalar传入xtol参数调整精度阈值,比如xtol=1e-8即要求解的精度到小数点后8位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:09:03