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

NumPy/SciPy数值积分与符号积分结果不符问题求助

Python符号积分与数值积分结果不符排查求助

我正在编写Python代码计算一个物理系统的定积分值,基于对系统的了解可以估算积分结果来校验代码合理性。出于执行效率考虑,优先通过被积函数的符号原函数计算积分,而非数值积分。已确认符号原函数推导正确且适用范围没问题,数值积分结果也符合预期及同类旧代码,但符号积分结果与数值积分、预期值差异极大。

最小可复现代码

import numpy as np
from scipy.integrate import quad

# Example bound values
z1 = -500.7
z0 = -1000.4

# Example constant values
A = 1.78
B = 0.454
C = 0.0132

theta = np.pi/4
beta = (A - B * np.exp(C * z0)) * np.cos(theta)
K = C * np.sqrt(A**2 - beta**2)/beta

# Symbolic elementary antiderivative
def integral_result(z):
        return (A / (B * C * np.abs(K))) * np.sqrt((A - beta) * (A + beta) * (C**2 + K**2)) * np.arccosh((B * np.exp(C * z) + A) / beta)

# The exact integrand
def integrand(z):
        return A*np.sqrt(((A - beta)*(A + beta)*(C**2 + K**2))/((K**2*(A**2 + 2*A*B*np.exp(C*z) + B**2*np.exp(2*C*z) - beta**2))))

result, error = quad(integrand, z0, z1)

print("Approximate Expected Value:", (z1 - z0))
print("Numerical Result:", result)
print("Analytical Result:", (integral_result(z1) - integral_result(z0)))

代码输出

Approximate Expected Value: 499.7
Numerical Result: 1257.7634049781054
Analytical Result: 0.2566028102053224

已尝试的排查方法

  • 逐项拆解计算项,验证np.arccosh等函数的参数与输出数值合理性
  • 测试不同A、B、C、theta参数组合下的结果差异
  • 排查浮点精度或舍入误差可能导致的问题
  • 多次确认数学推导过程无误

目前仍未定位问题根源,怀疑是浮点精度、函数文档未提及的细节或其他编码层面问题,恳请提供解决思路或建议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:53:13