定数を使う
方形波の3次のフーリエ級数は,振幅A,周波数f,時間tとして次式で表されます。
この関数のグラフを描く場合,毎回 (2*pi*f) を入力するのは面倒ですし,間違いの元となります。 そこで定数をラベル付けし,それを利用するようにします。 A = 1.0,f = 300 [kHz]とすると,
gnuplot> a = 4 * 1.0 / pi gnuplot> b = 2 * pi * 300 * (10**3)
と定義しておきます。 定数piはあらかじめ定義されているようです。
gnuplot> print pi 3.14159265358979
printは与えられた式の値を(計算して)表示するコマンドです。 a, bを用いると,
# 結果 gnuplot> plot a * ( sin(b*x) + (1.0/3.0)*sin(3*b*x) + (1.0/5.0)*sin(5*b*x) )
でグラフを描くことができます(割り算を1/3と入力すると,整数の除算で結果も整数になり1/3が0になってしまうので注意)。
ここでは紛らわしいので「定数 (constant)」として説明しましたが,gnuplotのヘルプなどでは「変数 (variable)」と書かれています。 実際,これらの「変数」の一覧を表示するには次のようにします。
gnuplot> show variables
関数を定義する
さらに手間を省くために(抽象化するとも言えます),関数を定義します。
gnuplot> k(n) = 1.0 / n gnuplot> f(n,x) = k(n) * sin(b*n*x)
k(n) は特にわざわざ独立に定義する必要はありませんが,一応定義しておきました。 さて,plotしてみます。
gnuplot> set xrange [0:10] gnuplot> plot a * ( f(1,x) + f(3,x) + f(5,x) ) # 結果 gnuplot> plot a * ( f(1,x) + f(3,x) + f(5,x) + f(7,x) + f(9,x) ) # 結果 gnuplot> plot a * ( f(1,x) + f(3,x) + f(5,x) + f(7,x) + \ > f(9,x) + f(11,x) + f(13,x) ) # 結果
次数を増やすと近似の精度が高くなることが確認できます。 なお,行末の\はコマンドが次の行まで継続することを指示します。
$Id: constants.shtml 1289 2007-02-04 13:22:39Z SYSTEM $