機械式時計の理論

機械式時計の理論


4-2 gnuplot サンプルプログラム

4-2-6 ヒゲの重心点移動の軌跡

#自由端変位を無限等比級数の和で近似したときの重心移動軌跡

# パラメトリック表示設定
set parametric

# 格子設定
set grid

# グラフの縦横比設定
set size ratio -1

# アルキメデス曲線の始点角θ0、終点角θ1の設定 [rad]
t0=8*pi 
t1=100

# アルキメデス曲線の全長 L
L=0.5*(t1*sqrt(1+t1**2)+log(t1+sqrt(1+t1**2))\
-t0*sqrt(1+t0**2)-log(t0+sqrt(1+t0**2)))

# テンプ回転角 t [rad]の範囲設定
set trange [-5.5:5.5]

# サンプル数設定
set samples 1000

# いったん別ファイルに書き込む
set table "table2.txt"

plot "+" using 1 : (a=t,\
Dx=(t1**2*(L-t*t1)-t*t1**2*(-t1))*cos(t1)/(L-t*t1)**2\
    -(2*t1*(L-2.5*t*t1)\
    -2*t*t1*(-2.5*t1))*sin(t1)/(L-2.5*t*t1)**2\
    -(t0**2*(L-t*t0)-t*t0**2*(-t0))*cos(t+t0)/(L-t*t0)**2\
    +t*t0**2*sin(t+t0)/(L-t*t0)+(2*t0*(L-2.5*t*t0)\
    -2*t*t0*(-2.5*t0))*sin(t+t0)/(L-2.5*t*t0)**2\
    +2*t*t0*cos(t+t0)/(L-2.5*t*t0),\
Dy=(t1**2*(L-t*t1)-t*t1**2*(-t1))*sin(t1)/(L-t*t1)**2\
    +(2*t1*(L-2.5*t*t1)\
    -2*t*t1*(-2.5*t1))*cos(t1)/(L-2.5*t*t1)**2\
    -(t0**2*(L-t*t0)-t*t0**2*(-t0))*sin(t+t0)/(L-t*t0)**2\
    -t*t0**2*cos(t+t0)/(L-t*t0)-(2*t0*(L-2.5*t*t0)\
    -2*t*t0*(-2.5*t0))*cos(t+t0)/(L-2.5*t*t0)**2\
    +2*t*t0*sin(t+t0)/(L-2.5*t*t0),\
     Dy) : (-Dx) : (0) : (0) : (0) w xyerrorbars

unset table

# x軸y軸の範囲設定
set xrange [-2:0]
set yrange [-2.5:-0.5]

# x軸y軸のラベル設定
set xlabel "x/a"
set ylabel "y/a"

# グラフの線種設定
set style line 1 linetype 1
set style line 1 linecolor -1
set style line 1 linewidth 4

# グラフ描画
plot "table2.txt" using 2:3 w l linestyle 1 notitle

# 出力フォーマットとオプションの指定
set terminal jpeg

# 出力ファイル名の指定
set output "jyuushinidou.jpeg"

# グラフ再描画
replot

# フォーマットと出力のリセット
set output
set terminal win
[EOF]

プログラムの実行結果は図のようになる。