固有振動
n=1,2,...に対して基準振動を下記で定義します。
は弦の長さ、 は弦を伝わる横波の速さを表します。 を変化させた場合のアニメーションをSageMathで作ります。
SageMath - Open-Source Mathematical Software System
プログラム
main.sageを作成します。
def lcm(x, y): return (x * y) // math.gcd(x, y) def wave1(A,l,c,dt,n): sine = [plot(A*sin(n*pi*x/l)*cos(n*pi*c*t/l), (0,2*l), color=Color(1,0,0), ymin=-A, ymax=A) for t in sxrange(0,2*l/n/c,dt)] return sine def wave2(A,l,c,dt,n1,n2): sine = [plot(A/2*sin(n1*pi*x/l)*cos(n1*pi*c*t/l)+A/2*sin(n2*pi*x/l)*cos(n2*pi*c*t/l), (0,2*l), color=Color(1,0,0), ymin=-A, ymax=A) for t in sxrange(0,2*l*lcm(n1,n2)/c,dt)] return sine
SageShellを起動して、ロードしておきます。
sage: load("main.sage")
アニメーション
とし、時間 は 0.4 刻みで変化させることとします。
n=3 の場合
sage: animate(wave1(1,1,0.1,0.4,3)) Launched gif viewer for Animation with 17 frames
の倍数の箇所は変化せず固定されていることがわかります。
n=1 と n=3 の和
sage: animate(wave2(1,1,0.1,0.4,1,3)) Launched gif viewer for Animation with 150 frames