うなりの動画(合成波)

23 7月

うなりが生じる様子を Mathematica で計算してみました。8Hzと10Hzの波をもちいて,2Hzのうなりを生じさせます。うなりの周期が0.5秒なので,計算も0.5秒分です。0.5秒の間に,8Hzの方は4個の波が通り過ぎて,10Hzの方は5個の波が通り過ぎるので,波1個分ずれます。8Hzの波の位相を黒の矢印で,10Hzの方を赤の矢印で表してみました。10Hzの方が一周多く回転します。青の矢印は黒と赤の矢印のy座標を合成した値を示します。下記をクリックすると動画(mp4)が表示されます。

 

 

下記がコードです。書き出されるAVIファイルは900MB程度の大きさですが,mp4に変換すると3MB程度になりました。

gsnaplist={Null};

f1 = 8.0
f2 = 10.0
omega1 = 2*Pi*f1
omega2 = 2*Pi*f2
dt = 1.0/(2000)

Do[

t = dt * i;

gp = Plot[Sin[omega1 *((x-(2 - 4*(-t+0.00001)) )/4)+ Pi/2] + Sin[omega2*((x-(2 - 4*(-t+0.00001)))/4)+ Pi/2],{x,2,2+4*(t+0.00001)},Axes -> False];
gr =Show[gp,

Graphics[{Text[Style["f1 = 8 Hz, f2 = 10 Hz  time = " ,24],{0.1,2.35}],
Text[Style[NumberForm[t,{4,2}] ,24],{1.8,2.35}],
Arrow[{{0,0},{Cos[omega1 * t + Pi/2],Sin[omega1*t + Pi/2]}}],
{Red,Arrow[{{0,0},{Cos[omega2 * t + Pi/2],Sin[omega2*t + Pi/2]}}]},
{Blue,Arrow[{{1.9,0},{1.9,Sin[omega1 * t + Pi/2] + Sin[omega2*t + Pi/2]}}]},
}],PlotRange -> {{-1.4,5},{-2.4,2.4}}];
gsnaplist=Append[gsnaplist,gr],

{i,0,1000,1}]

gsnaplist = Drop[gsnaplist,1];

Export["test.avi",gsnaplist,"AVI",ImageSize -> {640,480}];