求解 Python 中环形域中的积分

Solve integral in an annular domain in Python

我正在尝试求解环形域中的函数,该函数相对于环形空间的 angular 方向具有相位变化。

我的解决方法如下:

import numpy as np
from scipy import integrate

def f(x0, y0):
    
    r = np.sqrt(x0**2 + y0**2)
    
    if r >= rIn and r <= rOut:
        theta = np.arctan(y0 / x0)
        R = np.sqrt((x - x0)**2 + (y - y0)**2 + z**2)
        integrand = (np.exp(-1j * (k*R + theta))) / R
        return integrand
    else:
        return 0


# Test

rIn = 0.5
rOut = 1.5
x = 1
y = 1
z = 1
k = 3.66

I = integrate.dblquad(f, -rOut, rOut, lambda x0: -rOut, lambda x0: rOut)

我的问题是我不知道如何消除计算 theta 时出现的被零除。

我们将不胜感激任何帮助!

改用numpy.arctan2,只有当x和y都为零时才会有问题,此时角度未定。

我还看到你的被积函数很复杂,在这种情况下,你可能必须分别处理实部和虚部,就像 .