首页 > 解决方案 > 需要帮助查找和修复“RuntimeWarning:在 double_scalars 中遇到除以零”

问题描述

我的代码图片

我收到以下警告:

RuntimeWarning: divide by zero encountered in double_scalars

我已经进行了一些搜索,但我无法弄清楚我到底在哪里或如何出错,这显然无助于我解决任何问题。任何帮助将不胜感激,谢谢。这是我的第一篇文章,如果格式不理想等,请见谅。

代码:

    def integral(integrand,a,b,arg):
    def real_func(x , arg):
        return np.real(integrand(x,arg));
    def imag_func(x,arg):
        return np.imag(integrand(x,arg));
    real_integral = integrate.quad(real_func , a , b , args=(arg))
    imag_integral = integrate.quad(imag_func , a , b , args=(arg))
    return real_integral[0] + 1j * imag_integral[0];

vintegral=np.vectorize(integral)

def f_integrand(s,omega):
    sigma = np.pi / (np.pi + 2)
    xs=np.exp(-np.pi*s/(2*sigma))
    x1=-2 * sigma / np.pi*(np.log(xs/(1+np.sqrt(1-xs**2)) + np.sqrt(1-xs**2)))
    x2 = 1-2*sigma/np.pi*(1-xs)

    zeta = x2 + x1 * 1j
    Vc = 1 / (2 * sigma)
    theta = -1 * np.arcsin(np.exp(-(np.pi) / (2.0 * sigma) * s))
    t1 = 1 / np.sqrt(1 + np.tan(theta) ** 2)
    t2 = -1 / np.sqrt(1 + 1 /np.tan(theta) ** 2)
    return np.real((t1 -1j * t2) / np.sqrt(zeta ** 2 - 1)) * np.exp(1j * omega * s / Vc);

t0 = time.time()
omega = 10
result = integral(f_integrand , 0 , np.inf , omega)
print (time.time())
print (result)

标签: pythonscipy

解决方案


推荐阅读