求解 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都为零时才会有问题,此时角度未定。
我还看到你的被积函数很复杂,在这种情况下,你可能必须分别处理实部和虚部,就像 .
我正在尝试求解环形域中的函数,该函数相对于环形空间的 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都为零时才会有问题,此时角度未定。
我还看到你的被积函数很复杂,在这种情况下,你可能必须分别处理实部和虚部,就像