【基本】波の表現

光は電磁波の横波です。この波が平面内での挙動を確認してみます。\(x\)軸の正の方向に進む電磁波の電場は、角振動数\(\omega=2\pi\upsilon\)、波数\(k=2\pi/\lambda\)を用いて、初期位相を0とすると、次の様に表されます。

\(E_y=E_0 cos(kx-\omega t)\)

この波は、複素平面で考えると計算上、有利なことが多いです。Eulerの公式\(e^{i \theta }=cos\theta+i sin\theta\)を使えば、

\(E_y=Re[E_0 e^{i(kx-\omega t)}]\)

と表されます。すなわち、複素平面で考えた円運動の実部が電場の振幅としてあらわされるわけです。このことを動画で表現すると下図の様になります。左図が複素平面での円運動の様子です。横軸が虚部、縦軸は実部を表しています。右図は、空間を進む横波の時間変化を示しています。ちょうど時間0の振幅をオレンジ色のマーカーで示しています。このように考えると、計算過程と実際の波を関係づけられますので、理解が深まります。

この動画はjulia言語で作成しました。そのコードは下記の通りです。

using Plots
import ProgressMeter
gr(size=(1000,300))
n = 100  
prog = ProgressMeter.Progress(n,1)

i = -2π:0.02:2π


anim = @animate for t in 0:0.02:2π
    l = @layout [a b]

    x0=zeros(1,length(t))
    x=[cos.(t)]
    y=[sin.(t)]

    global p =plot(xlims=(-6,6),ylims=(-2,2))
    global p=plot!(i, sin.(-i.+t), linecolor = "blue", legend=:false)
    global p=plot!(x0, y, marker=:circle, legend=:false)
    
    global q = plot(xlims=(-2,2), ylim=(-2,2), aspect_ratio=:equal)
    global q = plot!(cos.(-i), sin.(-i), linecolor = "blue", legend=:false)
    global q = plot!(x,y, marker=:circle, legend=:false)
    
    plot(q, p, layout = l, link=:y)

    ProgressMeter.next!(prog)
end
fps = 20
filename = "plot.gif"

gif(anim, filename, fps = fps)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です