バタワース特性の計算

バタワース特性の計算
n 次のバタワース特性は
An (ω ) =
1
1 + ω 2n
で与えられる.
これを作図してみよう.
1 Excel を使う.
Excel は,とても便利な表計算ソフトで,
「電卓よりも,もう少し高級なことをやりたい」という用途に向い
ている.しかし,Excel が作り出すグラフ,特に x-y グラフなどでは,理工学用としては注意が必要である.
以下,注意事項を織り交ぜながら,説明する.
データの計算
例として,以下のグラフを示す(計算結果のセル内容を付録1に示す)
.これは,散布図,直線,軸範囲,軸
位置,線スタイルなど,多くのパラメータを変更している.デフォルトで Excel が作り出すグラフと比べて
ほしい.説明のためにデータをカラーで描画しているが,すべて黒でもちゃんと区別できるグラフを作るこ
とが求められる.
Fig. 1 Excel で作成したグラフ(1)
このグラフでは,隣り合うデータ点同士を直線で結んでいる.計算間隔は ∆ω = 0.1 であるため,カーブが
急峻な付近では折れ線グラフのように見える.
これが格好悪いと考え,データ点同士を曲線で結ぶ(データ系列の書式設定で「スムージング」をチェック
する)と,次のようなグラフになる.
-1-
Fig. 2 Excel で作成したグラフ(2)
確かに,見た目は滑らかな曲線で「格好良く」なったように感じるが, ω = 0.9 および ω = 1.1 付近を見る
と,変な「こぶ」ができている.スムージングしたために,Excel は勝手に「もっとも滑らかに点同士を接
続していく曲線」を生成したためである.
すなわち,
計算してグラフを描く時には,スムージングで描画してはならない
ということである.
では,折れ線グラフにならないためにはどうするか,というと,計算点数を増やすしかない.
計算点数を5倍( ∆ω = 0.02 )として計算すると,以下のようなグラフになる.
Fig. 3 Excel で作成したグラフ(3)
-2-
この程度のグラフであれば, ω = 1.0 付近の急峻な変化を十分に検討できるグラフになったと言える.
2 Matlab を使う.
Matlab では,対話的に命令を入力して計算し,グラフ化できる.グラフはデフォルトでほぼ満足できるも
のが出来上がり,軸ラベルなどを設定することで,より見栄えの良いグラフにできる.Fig.1 に相当するグ
ラフは以下である.なお,Matlab では,デフォルトで点同士を直線で結ぶ.
1
振幅特性
0.8
0.6
0.4
0.2
0
-0.2
0
0.2
0.4
Fig. 4
0.6
0.8
1
1.2
角周波数 w[rad/s]
1.4
1.6
Matlab で作成したグラフ(1)
このグラフを作成するための Matlab のコマンド入力は以下の通りである.
>> w=0:0.1:2;
>> a2=1./sqrt(1+w.^4);
>> a5=1./sqrt(1+w.^10);
>> a10=1./sqrt(1+w.^20);
>> a20=1./sqrt(1+w.^40);
>> a40=1./sqrt(1+w.^80);
>> a100=1./sqrt(1+w.^200);
>> plot(w,a2)
>> axis([0 2 -0.2 1.2]);
>> grid on;
>> hold on;
>> plot(w,a5)
>> plot(w,a10)
>> plot(w,a20)
>> plot(w,a40)
>> plot(w,a100)
>>
Fig. 5
Matlab のコマンド入力
-3-
1.8
2
計算点数を5倍( ∆ω = 0.02 )として計算すると,以下のようなグラフになる.データ線の色が徐々に変わ
っているのは,6本のデータをまとめて描画する命令を使ったためであり,1本ずつ命令を出して個別に描
画していくとすべて青色のデータ線で描画される.
1
0.8
0.6
0.4
0.2
0
-0.2
0
0.2
0.4
Fig. 6
0.6
0.8
1
1.2
1.4
Matlab で作成したグラフ(2)
-4-
1.6
1.8
2
3. gnuplot を使う.
現時点で gnuplot に関数形を入力して描画することは,計算点数,描画範囲,グラフの体裁などの検討が疎
かになる可能性があるため,推奨しない.しかし,gnuplot はグラフ描画の強力な武器の一つであることは
確かである.
Fig. 7
gnuplot で作成したグラフ
Fig.7 のグラフは,デフォルトで gnuplot が描画するグラフに対して,内部グリッドの間隔だけ変更したも
のである.gnuplot のコマンドは以下の通りである.
gnuplot> set xr[0:2]
gnuplot> set yr[-0.2:1.2]
gnuplot> plot(1/sqrt(1+x**4))
gnuplot> replot(1/sqrt(1+x**10))
gnuplot> replot(1/sqrt(1+x**20))
gnuplot> replot(1/sqrt(1+x**40))
gnuplot> replot(1/sqrt(1+x**80))
gnuplot> replot(1/sqrt(1+x**200))
gnuplot> set grid
gnuplot> replot
gnuplot> set xtics 0.2
gnuplot> replot
gnuplot>
Fig. 8
gnuplot の命令
命令群を見て分かるように,gnuplot では,関数形を入力するだけで,計算点数あるいは計算間隔を必要と
しない.gnuplot が勝手に判断して計算する(計算データを読み込んでグラフ作成だけを gnuplot で行うこ
とも可能である)
.とても便利なツールだが,
「計算する」ことを十分に理解していないと,使いこなすのが
難しい.今のところは,c言語や Excel で計算して数値データをファイルに吐き出し,そのファイルを読み
-5-
込んでグラフを作成する,という程度の使い方にとどめてほしい.
付録1
ω
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
Fig.1 のための Excel 計算シート
A2
A5
A10
1
1
1
0.99995
1
1
0.999201 1
1
0.995974 0.999997 1
0.987441 0.999948 1
0.970143 0.999512 1
0.940887 0.99699
0.999982
0.89799
0.986169 0.999601
0.842271 0.950283 0.994285
0.777064 0.861085 0.944247
0.707107 0.707107 0.707107
0.637046 0.527505 0.359733
0.570396 0.372892 0.15944
0.509244 0.260062 0.072348
0.45447
0.182801 0.034551
0.406138 0.13056
0.017339
0.363851 0.094937 0.009095
0.326998 0.070256 0.00496
0.294915 0.052848 0.002801
0.266955 0.040353 0.001631
0.242536 0.031235 0.000977
A20
1
1
1
1
1
1
1
1
0.999934
0.99269
0.707107
0.147028
0.026075
0.005262
0.001195
0.000301
8.27E-05
2.46E-05
7.84E-06
2.66E-06
9.54E-07
-6-
A40
1
1
1
1
1
1
1
1
1
0.999891
0.707107
0.02209
0.00068
2.77E-05
1.43E-06
9.04E-08
6.84E-09
6.05E-10
6.15E-11
7.08E-12
9.09E-13
A100
1
1
1
1
1
1
1
1
1
1
0.707107
7.26E-05
1.21E-08
4.03E-12
2.44E-15
2.46E-18
3.87E-21
9.02E-24
2.97E-26
1.33E-28
7.89E-31