1

Python で "quad" と "args" を使用して積分を使用して、問題 "Fringes of Young" を解決する必要があります。

ここに画像の説明を入力

光源サイズ R の M(X,Y) に対する画面上の強度の式は次のとおりです。

ここに画像の説明を入力

ソース ポイント S の座標は次のとおりです(xs=0,ys)-R/2<=ys<=R/2

I(X,Y,R)「quad」の「args」を使用して強度を計算する関数を作成する必要があります。I(0,Y,10e-6)次に、 -0.01 から 0.01 の間の Y をプロットしI(0,Y,0.002),I(0,Y,0.003),I(0,Y,0.004)ます。私のせいはどこですか?

私のコード:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad

y_min   = -0.01
y_max   = +0.01
R       = y_max-y_min
y       = np.linspace(y_min, y_max, 100)
X       = 0
Y       = 0
d       = 1
D       = 10
s       = 10
Lambda  = 0.5e-3

delta_s   = lambda ys,X,Y : np.sqrt(X**2+(Y-d/2)**2+D**2)+np.sqrt((ys-d/2)**2+s**2)- \
                            np.sqrt(X**2+(Y+d/2)**2+D**2)-np.sqrt((ys+d/2)**2+s**2)
def integrand(y_s,x,y):
    value =  2*(1+np.cos(2*np.pi*delta_s(x,y,y_s)/Lambda))
    return value

def calcul_XYR(X,Y,R):
    compteur  = 0
    I_XYR    = []               # array for I(X,Y,R)
    while compteur < len(y-1):
        Y = y[compteur]
        print(Y)
        I_XYR.append(1/R*quad(integrand, -R/2, R/2, args=(X,Y))[0])
        compteur+=1
    return I_XYR

plt.figure(figsize=(7, 5))
plt.title("Franges de Young - Figure 3")
plt.axis([y_min, 0.015, 0, 4])
plt.xlabel("Y (mm)")
plt.ylabel("Intensity (a.u.)")
plt.plot(y, calcul_XYR(0,Y,1e-6),  '-', color="red",   label=r'$R=10^{-6}$')
plt.plot(y, calcul_XYR(0,Y,0.002), '-', color="blue",  label=r'$R=0.002$')
plt.plot(y, calcul_XYR(0,Y,0.003), '-', color="black", label=r'$R=0.003$')
plt.plot(y, calcul_XYR(0,Y,0.004), '-', color="green", label=r'$R=0.004$')
plt.legend(loc='right', bbox_to_anchor=(1.00, 0.3))
plt.savefig('question 3 figure.pdf', format='pdf')
plt.show()

結果 :

ここに画像の説明を入力

期待される :

ここに画像の説明を入力

また、I(X、Y、1e-06) に対応する 2D 画像を (パラメータ : cmp(gray)、vmin、vmax で imshow を使用して) プロットしたいと思います。(X は -10 から 10 の間)。

4

1 に答える 1