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

Python Scipy的dblquad函数短区间双重积分计算结果错误问题

问题原因与修正方案

核心错误原因:scipy.integrate.dblquad要求被积函数的参数顺序为「内层积分变量在前,外层积分变量在后」,也就是先写y再写x,你当前代码中将参数顺序写为x, y,相当于交换了两个变量的输入位置,最终计算的是变量互换后的积分值,这就是你观察到交换cos项正负号后结果匹配的原因。

修正后的代码如下:

import scipy.integrate as spi
import numpy as np

x_limit = 0
y_limit = lambda x: np.arccos(np.cos(x))

# 修正参数顺序:内层积分变量y在前,外层x在后
integrand = lambda y, x: np.exp(-(2+np.cos(x)-np.cos(y)))
low_limit_y = 0              # 内层积分y的下限
up_limit_y = y_limit
low_limit_x = x_limit        # 外层积分x的下限
up_limit_x = 2*np.pi-x_limit

integral = spi.dblquad(integrand, low_limit_x, up_limit_x, low_limit_y, up_limit_y)

print(integral)

运行上述代码即可得到和预期一致的3.58857左右的计算结果,误差在数值积分的可接受范围内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:57:02