ニュートン法の視覚化

久しぶりにまた1なにか d3.js で視覚化してみたくなったのだが, このエントリがポストされる次の日はアイザック・ニュートンの誕生日らしいので, 今回はニュートン法 (Newton Raphson 法) を視覚化してみることにした. 早速であるが以下がその成果物である2. f(x)=0f(x)=0 となる関数 f(x)f(x) とその導関数 f(x)f'(x) 及びニュートン法の初期値を受け付け, 実行をクリックすると関数とニュートン法の計算過程における接線がプロットされる. デフォルトでは, 2\sqrt{2} の値を計算するように設定してある. 入力された関数を元に数値微分をしても良かったのだが, なんとなく導関数を入力したかったので, そのようなことはしなかった.






確率論で用いられる言葉の整理

当ブログ内では, 既に確率論の話題としてベイズの定理のエントリが存在するが, 今後同様にして確率論の話題を本ブログで取り上げる際に, 用語へのリファレンスを self-contained で張れるよう, 本エントリにて一度整理しておくこととした.


ヤコビアン

以前のエントリ, ガウス積分の公式とその証明で, 暗に極座標での微小面積が rdrdθrdrd\theta であるとして書いていたので, その内容についても一応書いておこうというのと, 筆者自身の学習/再整理も兼ねて, ヤコビアンに関して書くこととした.

極座標の微小面積

直交座標から極座標へ移行する際に, その微小面積はどうなるかについて考察する.

立方体とその断面

上図1は, 1×1×11\times 1\times 1 の立方体があって, その断面をそれぞれ極座標と直交座標で示しているだけであるが, この断面図のマスの広がり方を見るだけで, 少なくとも極座標における微小面積が drdθdrd\theta とはならないことに納得できる. 単に drdθdrd\theta としてしまうと, rr が大きくなればなるほど微小面積も伸びて大きくなっていってしまうだろうという想像がつく.


ガウス積分の公式とその証明

当ブログ内でガウス積分(オイラー=ポアソン積分)の公式を用いる際に self-contained でリファレンスを張るためと, 個人的な学習の記録として, 本エントリにてガウス積分の公式とその証明について書く1.. 筆者自身にとっての分かりやすさを優先しているため, 若干冗長的な記述があるかもしれない点に注意.

ガウス積分の公式

xRx\in\mathbb{R} のとき ex2dx=π\displaystyle\int_{-\infty}^{\infty}e^{-x^2}dx=\sqrt{\pi}

Haskell でリンクレイヤーにおける ICMP パケットの構築, 送受信および解析による ping の実装

Haskell で低レイヤーのネットワークプログラミングをそういえばしたことがなかったので, 何か実装してみたかったのだが特別ネタも思いつかないので, とりあえずイーサヘッダ, IP ヘッダ等を含む, 生の ICMP Echo/Reply パケットを扱ってみることとした.

ICMP パケットは IP パケットであるので, 通常は ICMP パケット部分のみを構築してPF_INET等で開いたソケットに送りつけたり, recv 等すれば送受信においては必要十分であるが, これではあまり面白みがないので, リンクレイヤーから扱うこととした.

生の ICMP パケットを扱うということは, ICMP データの自作はもちろん, イーサヘッダ, IP ヘッダの自作が必要となる. またイーサヘッダを自作するということは, MAC アドレスを解決しなければならないので, 最低限 ARP パケットの送受信および解析機能の自作が必要となることを意味する. ARP パケットの自作を要するということは, デフォルトゲートウェイやサブネット環境などを取得する機能も必要である. これらを自作してみた.