octave に慣れる. octave ではなく gnuplot と C言語を使ってもOK.
近似の良さは,もとの関数と,フーリエ級数で作った関数が どのくらい類似しているか,距離を計ればわかる. ヒント: 「関数をベクトルとして見る」 (補足参照)
% octave
octave:1> t = 0: 0.1 : 31.4;t は
octave:2> tとしてみれば分かるように315 次元のベクトルになっている. (q を押せば抜け出せる) t = 0: 0.1 : 31.4; の最後の; はベクトルを作った結果を 出力しないように抑制している.
#より後ろはコメントなので入力する必要はない
octave:3> y0 = pi/2*cos(0*t); # 定数ベクトルをつくった(あまり深く考えなくてもいい). octave:4> plot(t,y0); # 横軸が t で縦軸が yそのままだと図のラベルに line 1 と出力されるので, そこを例えば miyazaki と表示させたければ以下のようにする.
octave:3'> plot(t,y0, ";miyazaki;" );項数を増やしていく.
octave:5> y1 = pi/2 - 4/pi*cos(t) ; octave:6> y2 = pi/2 - 4/pi*( cos(t) + 1/9*cos(3*t) ); octave:7> y3 = pi/2 - 4/pi*( cos(t) + 1/9*cos(3*t) + 1/25*cos(5*t) );
octave:8> plot(t,y0, t, y1, t,y2, t,y3);
octave:9> plot(t,y0); octave:10> hold on octave:11> plot(t,y1); octave:12> plot(t,y2);
t = (0:0.01:31.415);
y = pi/2*cos(0*t);
axis ([0, 32, -0.5, 3.5]); # x軸が 0から32 , y軸が -0.5:3.5の範囲を表示
for n = 1:10
y = y - 4/pi/(2*n-1)/(2*n-1)*cos( (2*n-1)*t );
plot (t, y );
hold on;
input ("Press Return");
endfor
それぞれのコマンドは容易に推測できる.
書き方の詳細は異なるけれど C 言語に慣れている人に
とっては for 文が何を意味しているか分かるはず.
% octave foo201.octとして走らせる. 作ったファイルが再利用できてとても便利.
__gnuplot_set__ term postscript
__gnuplot_set__ output "hoge202.eps"
t = (0:0.01:31.415);
y = pi/2*cos(0*t);
axis ([0, 8, -0.5, 3.5]); # x軸が0:32 , y軸が -0.5:3.5 の範囲を表示
for n = 1:10
y = y - 4/pi/(2*n-1)/(2*n-1)*cos( (2*n-1)*t );
plot (t, y );
hold on;
endfor
これは10ページからなるファイルができあがるので,
ggv コマンドで必要なところだけ,抜き出して
ファイルに保存して使えばよい.
% ggv hoge.eps # グラフを見る
octave:12> help axis
正確には,既に描いた図のファイルを作成することはできない. これから plot する図のファイルを作成することはできる.
これから作成する図の出力先を画面上にするか,ファイルにするか,あらかじめ設定しておく .
以下のコマンド(__gnuplot_set__ term)は2連続のアンダーバー(__)が含まれ ており,見た目では分かりにくい. うまく動作しなければ, このページに書かれてある文字をコピーして張り付ければよい.
octave:6> __gnuplot_set__ term postscript enhanced color # 表示をpostscriptに設定.
octave:7> __gnuplot_set__ output "hoge.eps" # 出力ファイル名を設定.
octave:8> plot(t,y1) ; # eps ファイルを作成したい図をここでプロットする.
octave:9> __gnuplot_set__ output "hoge2.eps" # 次にプロットする図の出力ファイル名を設定.
octave:10> plot(t,y2) ; # eps ファイルを作成したい図をここでプロットする.
octave:11> __gnuplot_set__ term X11 # 他の作業を続ける場合. plot した結果が
# 画面に出力されるよう設定をもとに戻す
octave:12> exit # octave の終了
octave:4> help plot