チューリングマシンと限定合理性 : 「行動ゲーム理論入門」を読んだ

この本「行動ゲーム理論入門」はたまたま本屋で見かけてパラパラと見ていたら、経済学の本にもかかわらず「チューリングマシン」だとか「強化学習」だとかいう一見経済学とは関連の薄そうな単語があったので、興味深いな、と思って脊髄反射的に購入した。僕はこの分野は全く知らない状態でこの本を読み始めたのだけど、非常に刺激的な本だったので記憶が鮮明なうちに書いておくことにする。

“チューリングマシンと限定合理性 : 「行動ゲーム理論入門」を読んだ”の続きを読む

自然対数の底 e (ネイピア数)のランダム性を調べてみた

自然対数の底 e(ネイピア数)を少数展開してみると

271828182845904523536028747135266249775724709369995957496696
762772407663035354759457138217852516642742746639193200305992
181741359662904357290033429526059563073813232862794349076323
382988075319525101901157383418793070215408914993488416750924
476146066808226480016847741185374234544243710753907774499206…

となります。ネイピア数500万桁についてランダム性を調べてみました。
“自然対数の底 e (ネイピア数)のランダム性を調べてみた”の続きを読む

HTML5 の canvas を使って動くトップ画像を作ってみた

このブログは現在(2011/8)、wordpress 3.2.1 に標準搭載された html5 対応テーマ「TwentyEleven」を改造して使っています。標準状態ではトップ画像の部分には美しい写真がランダムに表示されることになっていますが、この部分を html5 の練習がてら、canvas要素を使って動かしてみました(暇だなあ)。

IEの対応とかそういう細かいこと(といったら怒られるかもしれませんが)は気にしていません。canvas に対応していない場合は標準のランダム画像が表示されます。ところでこの記事、タイトルから見ると canvas の解説でも始めそうな勢いですが、canvas については全く触れません。あしからず。
“HTML5 の canvas を使って動くトップ画像を作ってみた”の続きを読む

Slice sampling

ベイズ統計などではよくマルコフ連鎖モンテカルロ(MCMC)を使います。MCMCというと Metropolis Hastings とか Gibbs Sampler を思い浮かべる人が多いと思います。しかし、MCMCというのはこの2つだけではないようです。ここでは最近、MCMCを実装する中で知った slice sampling という方法を実装してテストしてみた結果について書いてみます。 “Slice sampling”の続きを読む

Eigen ー C++で線形代数を!(3)

前回(といってもずいぶん前のことですが)は eigen の基本的な使い方について書きました。

Eigen ー C++で線形代数を!
Eigen ー C++で線形代数を!(2)

今回は連立方程式を解くための一つの方法である LU 分解を eigen から使う方法について書いてみたいと思います。

毎度のことですが、より詳細な情報についてはマニュアルを読んでください。英語ですがわかりやすく書いてあります。ちなみに今回使っている Eigen のバージョンは 3.0 です。

Eigen を使うと非常に簡単に LU 分解を計算することができます。余計なお世話かもしれませんが、こんなに簡単だとついついブラックボックスとして使いがちです。しかし、LU分解による求解は数値解析の観点からはベストの方法であるとは限りません。特に、疎行列のケースでは(CG法系列の)別の解法を使ったほうがよいでしょう。Eigen も sandbox レベルでは BiCG などの疎行列用の解法が存在しています。Eigen の疎行列ライブラリを使って自分で実装してもそんなに問題はないと思います。

いきなり御託を並べてしまいましたが、気を取り直して、先に進みましょう。
“Eigen ー C++で線形代数を!(3)”の続きを読む

微分の近似について

すこしマニアックな話題を。ある関数の微分をコンピュータ上で計算するための近似式として最も基本的なものは以下のものでしょう。差分(商)とか呼ばれるものですね。
\begin{align*}
f'(x)\simeq\frac{f(x+\Delta x)-f(x)}{\Delta x}
\end{align*}
もうすこし精度をよくしたい場合に次のような式もよく利用されます。
\begin{align*}f'(x)\simeq\frac{f(x+\Delta x)-f(x-\Delta x)}{2\Delta x}\end{align*}
しかし複素数を使ったこんな近似の仕方もあるようです。
\begin{align*}f'(x)\simeq\frac{\text{Im}(f(x+i\Delta x))}{\Delta x}\end{align*}
直感的にはよくわからないこの式がうまくいくことを理論と数値実験でみてみよう、というのがこの記事の目的です。 “微分の近似について”の続きを読む

[Ruby] 10行で書ける Dijkstra 法

Dijkstra法はグラフ上の最短経路を求めるアルゴリズムです。このアルゴリズムの戻り値はある基点となるノードからその他のすべてのノードまでの距離の配列です。

解説はウェブ上にも豊富にあるので省略することにして、ここではどのくらい短いコード量で Dijkstra法を実装できるのか、という遊びをしてみます。仕様としては

  • 隣接リストではなく隣接行列を受け取る
  • ある二点間に辺が存在しない ⇔ 隣接行列の要素が負の値
  • ある辺の距離は隣接行列の正の要素で表現
  • 出力は指定した頂点からすべての頂点までの距離
  • 外部ライブラリを使用しない

くらいのものを考えましょう。

こんな感じになりました。

“[Ruby] 10行で書ける Dijkstra 法”の続きを読む