Bài toán nhiễu xạ sóng sau đập chắn dài bán vô hạn được Penny và Price (1952) đề xuất dựa trên lý thuyết của Sommerfeld về nhiễu xạ ánh sáng:

$$ \frac{\zeta}{a} = I(\lambda^+) \exp[ikr \cos(\alpha + \theta)] + I(\lambda^-) \exp[ikr \cos(\alpha - \theta)] $$

trong đó $(r,\theta)$ là tọa độ cầu như định nghĩa trên hình, còn $a$ là biên độ, $r$ là khoảng cách tính bằng số lần bước sóng.

hình

$$ I(\lambda) = \frac{1+i}{2} \int_{-\infty}^{\lambda} \exp\left(-i \frac{\pi\lambda^2}{2} \right) d\lambda $$

và $$ \lambda^{\pm} = -\sqrt{\frac{4kr}{\pi}} \sin \frac{\alpha\pm\theta}{2}. $$

Có thể tính theo hàm sin, cos Fresnel, song để cho nhanh ta sẽ tính trực tiếp $I(\lambda)$ trong Julia.

In [1]:
# ví dụ với α = 60∘ và θ = 45∘. 
function I(λ::Number)
    0.5(1+im)/sqrt(2im) * (1 + erf(sqrt(0.5π*im)*λ))
end

function fresnelS(x::Number)
    # tính hàm sin Fresnel
    0.25(1 + im)*(erf(0.5(1+im)*sqrt(π)*x) - im*erf(0.5(1-im)*sqrt(π)*x))
end

function fresnelC(x::Number)
    # tính hàm cosin Fresnel
    0.25(1 - im)*(erf(0.5(1+im)*sqrt(π)*x) + im*erf(0.5(1-im)*sqrt(π)*x))
end

function I₂(λ::Number)
    # cách khác để tính I, dựa trên hàm fresnelS và fresnelC
    0.5(1 + fresnelC(λ) + fresnelS(λ)) - 0.5im*(fresnelC(λ) - fresnelS(λ))
end 

function diffrac₀(α::Number, θ::Number, kr::Number)
    λcộng = -sqrt(4kr/π)*sin(0.5(α + θ))
    λtrừ = -sqrt(4kr/π)*sin(0.5(α - θ))
    I(λcộng)*exp(im*kr*cos(α + θ)) + I(λtrừ)*exp(im*kr*cos(α - θ))
end

function diffrac(α::Number, θ::Number, kr::Number)
    # cách khác để tính nhiễu xạ dựa trên I₂
    λcộng = -sqrt(4kr/π)*sin(0.5(α + θ))
    λtrừ = -sqrt(4kr/π)*sin(0.5(α - θ))
    I₂(λcộng)*exp(im*kr*cos(α + θ)) + I₂(λtrừ)*exp(im*kr*cos(α - θ))
end
Out[1]:
diffrac (generic function with 1 method)
In [2]:
# Kiểm tra với trường hợp α = 90∘ (CERC, 1984), trên Hình 7.10 tr. 165 (Kamphuis 2000)
abs(diffrac₀(π/2, π/12, 10π)), 
abs(diffrac₀(π/2, π/4, 6π)),
abs(diffrac₀(π/2, 5π/12, 12π)),
abs(diffrac₀(π/2, π/2, 8π))
Out[2]:
(0.08784228733885828,0.0683757535342266,0.22655469614565005,0.5291392776966711)
In [3]:
# Kiểm tra với trường hợp α = 90∘ (CERC, 1984), trên Hình 7.10 tr. 165 (Kamphuis 2000)
abs(diffrac(π/2, π/12, 10π)), 
abs(diffrac(π/2, π/4, 6π)),
abs(diffrac(π/2, 5π/12, 12π)),
abs(diffrac(π/2, π/2, 8π))
abs(diffrac(π/2+20π/180, π/4, 2π*35*sqrt(2)/92))
Out[3]:
0.29558362454829956

Rõ ràng, cách dùng các hàm sin và cos Fresnel tuy chậm hơn nhưng cho kết quả tốt hơn, rất khớp với sơ đồ CERC (1984).

Có thể dùng phương pháp chồng chập để xác địnhdao động sau một khe hở tạo bởi hai đập chắn dài vô hạn hai phía. Giả sử góc sóng tới là $\alpha = 30^\circ$, bề rộng khe gấp đôi chiều dài sóng.

In [5]:
sóng₁= diffrac(π/6, π/4, 2π*√2)
sóng₂= diffrac(5π/6, π - atan(1/3), 2π*√10)
sóng = sóng₁ + sóng₂
abs(sóng)
# sóng₁, sóng₂
Out[5]:
1.0859297579920844
In [16]:
abs(diffrac(70π/180, π/4, 35*sqrt(2)/92)),
abs(diffrac₀(70π/180, π/4, 35*sqrt(2)/92))
Out[16]:
(0.6691300568241266,0.45396587058630905)