有限フーリエ級数
この節では、KETCindyの関数プロットでは書けないようなグラフを表示する例を示します。
三角関数や対数関数などの基本的な関数はKETCindyに用意されています。しかし、そうではない関数の場合は、Cindyscriptを使ってプロットデータを作ることができれば、Addgraph() 関数を用いて表示ができるのです。
例として、有限フーリエ級数
のグラフを表示してみましょう。
まず、この式を定義します。
Σで0から30までの和をとります。繰り返しの repeat() を使えばよいでしょう。
f(x):=(
s=pi/2;
repeat(30,n,
s=s+(1-(-1)^n)/n*sin(n*x);
);
);
Cindyscript では,repeatによる繰り返しでなく,リスト処理で行うこともできます。
f(x):=pi/2 +sum(apply(1..30,n,{1-(-1)^n}/n*sin(n*x)));
と1行で定義できます。
次に、これを使ってプロットデータを作ります。
プロットデータとは、要するにあるxの値と関数値の値のセットです。座標の集まりと思ってもよいでしょう。
ここでは、−2πから2πまでの範囲で描画することにして、この区間を200等分することにします。
ここも繰り返しになりますが、repeat() ではなく、Cindyscriptならではの、ちょっとしたテクニックを使います。apply(list,作業) という関数です。これは、引数の list の要素それぞれにある作業をした結果をリストとして返します。そのリストですが、0..200 とすれば [0,1,2,3,・・・,200] という0スタートの整数のリストができますので、これを使って x の値を順に定めて、上で定義した関数の値を求めるのです。
pd=apply(0..200,t,
x=-2*pi+t*4*pi/200;
[x,f(x)];
);
これでプロットデータができます。中身を確かめるのであれば、このあとに plintln(pd); とすれば、コンソールに pd の内容が表示されます。
これを AddGraph() に渡します。書式は AddGraph(name , プロットデータ)です。
AddGraph("1",["pd"]);
これでグラフが描かれます。軸に数字も打っておきましょう。
Expr([[-2*pi,-0.5],"s","-2\pi",[-pi,-0.5],"s","-\pi",[pi,-0.5],"s","\pi",[2*pi,-0.5],"s","2\pi",[0,pi],"w2","\pi"]);
描かれる画面とTeXの図は次のようになります。
< 戻る >