レビィ分布をグラフ描画して見た(python&gnuplot)



スポンサードリンク

今読んでいる本「ウォール街の物理学者 (ハヤカワ・ノンフィクション文庫)」という本にレヴィ分布という確率分布が出てきました。

初めて聞いたのでpython やらgnuplot使って描画して見るかと思いやったので書いときます。誰得なのか不明ですが笑

レヴィ分布とは?

wikipediaに『レヴィ分布は、安定な分布のなかでも解析表現可能な確率密度関数を有する数少ない分布のひとつである。』と紹介されています。

初めて聞いたけど、正規分布とかコーシー分布と並んで紹介されているということは結構使えそうな確率分布です。

以下の式で表現されます。
\begin{eqnarray}
f(x;\mu,c)=\sqrt{\frac{c}{2\pi}} \frac{e^\frac{-c}{2(x-\mu)}}{(x-\mu)^{3/2}}
\end{eqnarray}

ここでは[/latex]\mu = 0,  c = 0.5,1,2,4,6,8\(\)と変化させてグラフ描画しました。

pythonの場合

描画に用いたコード

グラフは以下になります。



スポンサードリンク

gnuplotの場合

描画に用いたコードは以下です。

gnuplotの場合はファイル名.gpで上記を保存し、gnuplot “ファイル名.gp”で実行すれば描けます。

ぱっとみ同じに見えますが、c=1とc=0.5のときの形が大分違います。gnuplotの関数指定のところを見ても特に違っている様子はないんですけどねー笑

 

比較してわかったこと

gnuplotで書くよりもpython で書いた方が綺麗に書けそうです。それにnp.arrayでxの刻み幅も指定できるので、粗いグラフから滑らかなグラフまで速攻で書けそうですし。

gnuplotはどうやって関数描いてるのか不明です。xの刻み幅の指定方法もよくわかりません。もしかしたら刻み幅を指定する方法があって、細かく指定してやればpythonのように滑らかで綺麗なグラフが書けるのかもしれません。

 


簡単な関数のグラフ書くならpythonの方が良さそうです。ライブラリも豊富ですしね。今回使ってませんが、listとか使って各グラフ(各c)の設定とかを保持しておいてそのlistの全要素に対して関数を描画するようにしたらもっとコードも短くできますね。

 

記事が役に立ったらシェア!

gnuplotで”球”を描いて見た

球体の良い感じの図が欲しかった。

自分が書いているwebマガジンの方で、球体の図が欲しくなったので、何で書こうかと試行錯誤した結果、gnuplotに決定。 pptが使えないのでkeynote?

いやー、それならepsで出力できる方が良いかと思い、ベクター描画できるinkscapeか(自分はイラストレータがないので)?

そもそもepsにこだわる理由がないなら、球体のフリーイラスト素材使えばよくね?って。でもフリー素材だと本当に球だけになって、簡素になるなぁって。じゃあ、球体書くときに軸とかグラデーションつけたらそれっぽくなるんじゃねって。

でも、それらを図で書くのだるいなって。

ならグラフ描画ツール使ったら一発じゃんて思い、gnuplotを使って球体を表現することにしました。今回は、gnuplotを使って球体を書くときの注意点とか、gnuplotでそれらをコマンド打ちするのめんどいって言う人の為に、自分が作った簡易設定ファイルについて説明します。

自分が直面した壁その1

gnuplotはaquatermで描画するようにインストールするとなぜか、マウスやドラッグでの視点変更ができないです(おそらくデフォルト)。なのでgnuplotをインストール際は、以下のコマンドを使い、x11で描画するように設定してください。これなら、初期状態からグラフ上で、視点変更が可能です。



スポンサードリンク

自分が直面した壁その2

なぜか潰れる。

 

単純にダサいですね。しかしこのコマンドで解決。

画像出力の際に、サイズを指定してやれば良いだけでした。出力せずに、ウィンドウサイズを変更したい場合は

gnuplot起動時に

としてgnuplotを起動してやれば、正方形でウィンドウ表示可能です。以下にサイズを指定し直したものを載せます。

ついでに、コンター表示もしてみました。今回のグラフを作るのに用いた設定コードは以下。

上記のコードを”ファイル名.gp”として保存し、gnuplot を起動した状態で、

として実行すれば描けます。

球体をgnuplotで良い感じに表現したい人の助けになれば幸いです。



スポンサードリンク

記事が役に立ったらシェア!