微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

小数对 scipy.integrate.quad 的影响

如何解决小数对 scipy.integrate.quad 的影响

2inf 的跟随函数scipy.integrate.quad 集成。

from math import sqrt,log,exp
import numpy as np
from scipy.integrate import quad

def integrand(x,r1,r2):
    a = r1 + r2
    b = r1 * r2
    R = a * x / 2
    R1 = R ** 2 - a ** 2
    R2 = R ** 2 - (r1 - r2) ** 2
    vdw = -7e-21 * (2 * b / R1 + 2 * b / R2 + log(R1 / R2))
    edl = 7.8e-12 * b / a * log(1 + exp(-328774227 * (R - a)))
    force = vdw + edl
    return exp(force / 4.11447e-21) / x ** 2

n1 = 5010
n2 = 22144
n3 = 22145
radius1 = 1.05 * 10 ** -8 * n1 ** (1 / 1.8)
radius2 = 1.05 * 10 ** -8 * n2 ** (1 / 1.8)
radius3 = 1.05 * 10 ** -8 * n3 ** (1 / 1.8)
w2 = quad(integrand,2,np.inf,args=(radius1,radius2))
w3 = quad(integrand,radius3))
print('w2=',w2[0])
print('w3=',w3[0])

我使用 n2=22144n3=22145,但得到两个完全不同的结果。其实这两个结果应该很接近。

w2= 0.4256854383924181
w3= 11774635265351.027

更有趣的是,当将4.11447(在被积函数中的“return”行)更改为4.11454.1144时,结果将接近。

#4.1145
w2= 11768644300129.305
w3= 11771237857123.924

#4.1144
w2= 0.42568494248362776
w3= 0.4256854757392548

哪个结果是正确的?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。