Classiclll's Blog

an old boy

pdf(Probability Density Function)エディタ―アドビのPDF(Portable Document Format)じゃないっす

イメージ 1



pdf(Probability Density Function)エディタ―アドビのPDF(Portable Document Format)じゃないっす

ガラクタ置き場に、【非常に地味な】確率密度関数エディタがお目見え。

前記事の仕上げ用ツールとして作ったんだけど、これもちゃんとなるまで時間がかかりそうなので暫定公開。
さらに、クラスP_d_fもスクリプトを触っている途中なのであんまり見てほしくない。

「役に立つ」ツール作りは時間がかかるので出来るだけ避けてたんだけど、やっぱり嵌ってしまった。
まだひどいバグが残った状態。

このツールが役に立つ人ってそんなにいないとは思うけど、とりあえず振る舞いを解説。
タイトル pdf(【確率密度関数】)エディタ
クラス名 P_d_f
生成   new P_d_f()        {(0,1),(1,1)}の一様分布関数
     new P_d_f(x0,y0,x1,y1)  {(x0,y0),(x1,y1)}の一様分布関数
メソッド
  setPoint(xv,yv) pdfオブジェクトに新しい密度点(xv,f(xv))を挿入
  delPoint(xv) pdfオブジェクトから(もしあれば)密度点(xv,f(xv))を削除
  getCuml(xv) pdfオブジェクトからxvまでの累積確率を取得
    *いわゆる、【累積分布関数】
  getInvf(yv) pdfオブジェクトからyv==F(x)となるxの値を取得(F(x)≡∫f(x)dx;0->x)
    *いわゆる、【逆関数】
  getIid() pdfオブジェクトの確率密度に従うi.i.d.な乱数値を取得
    *【逆関数法】をつかった相互独立な(i.i.d.)乱数 (random()関数使用)
  toString() その時点でのpdfオブジェクトの定義内容を文字列で得る。
表示されているもの
  二つのpdfオブジェクトとそれぞれのgetIid()で4000回サンプルした結果(ヒストグラム)
操作方法
  グラフの原点をドラッグすると、ドロップポイント次第で周囲4辺のいずれかに吸い付く
  グラフ上の点をドラッグすると密度関数形をかえられる。
  SHIFキーを押しながらグラフ付近をクリックすると、新たな確率密度点を追加できる。
  CONTROLキーを押しながら確率密度点近辺をクリックすると、その密度点を削除できる。
  "p"キーを押すと、そのときのpdfを生成するスクリプトを【プリント】できる、
   *アプレットのときはコンソール(OSXならアプリケーション>ユーティリティ>コンソール)、
    P5なら、下部ペインのメッセージエリアに下のような生成スクリプトが表示される。

       new P_d_f(0.0,50.0,30.0,80.0).setPoint(100.0, 50.0);

    コピペすれば【現時点の】確率密度関数の定義を【固定】できる。
【参考リンク】
  確率密度関数
  累積分布関数
  逆関数
  逆関数法

ここまで解説しといて肩すかし。

クラスP_d_fのリファクタリングを考え始めたら、 新しい遊び道具 がひらめいてしまった。
なので、KAMEのブラシとブラシのデザインはちょっと置いといて(ほっぽって)、寄り道予定。

【予告】
タイトル Deku(木偶)
構成クラス Karakuri(絡繰り)とUtsusemi(空蝉)
コンセプト インタラクティブLegoToy