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:12> source "foo201.oct"として走らせる. 作ったファイルが再利用できてとても便利.
print("hoge202.eps","-depsc2")
print("hoge202.png")
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
print("hoge202.eps","-depsc2")
% evince hoge202.eps # グラフを見る
octave:12> help axis
octave:4> help plot