【日記】gnuplotで関数を場合分けする

普段gnuplotとか使わないしよくわからないけど、フーリエ解析のレポートでグラフを描画して比較してって課題が出たからメモ書き程度に。
更新もご無沙汰だし。

本当はMatlab使ってやってたけど演習室が正月休みで5時までしか空いてないものだから仕方ない。

授業は普通にあるくせに!課題たまるのに!


やりたいこと

gnuplotで例えば

f(x) = 1 (x > 0)

f(x) = -1(x <= 0)

みたいな感じの事をする。

やったこと

三項演算子を使えば普通に分岐できるので、上の例だとgnuplotでは

f(x) = (x > 0)? 1 : -1 

みたいなことをすればいいかと思ったが、これを単純に

plot f(x)

すると、こうなってしまう。

f:id:VirtualNoodle:20160106234634p:plain

調べたところgnuplotは連続な関数の描画をするよ!ってコンセプトで作られて、間は直線で補完してしまうらしい。

回避するには関数を別々に定義するとかしないといけないけど、上の例や、今回のフーリエ解析のレポートの問題みたいなものだと、こんな風に点で描画しちゃったらいいんじゃないかと思う。
点の数をある程度大きくしないと間が飛んじゃったりするけどね。

plot f(x) with dots

f:id:VirtualNoodle:20160106234653p:plain

dotsは1pxの点しか打てないようなので、1つだけ飛んだ点なんかがある場合にはwith pointsにすると目立って良い。
pointsはサイズも変えられる。

感想

gnuplotたのしい!!
割とお手軽に関数の形とかプログラムの出力とかをグラフィカルに見ることが出来るので面白いです。三次元も可能。
Matlabさんみたいに学習コストもかからない(?)
今回の課題はこれで片付いたけどMatlabの方も使い方を覚えないといけない。