Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

数学

「プログラミング言語の基礎概念」を読んだ

学部生向けなのでさくさく読めてよい。 プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)五十嵐 淳 カバーしているのは操作的意味論*1で、序盤から中盤にかけて単純な自然数の和積算の意味論をベースに徐々に盛りつけてMLライクな言語の意味…

今日は社会ネットワーク分析勉強会 #1の日です

社会ネットワーク分析勉強会 #1にお邪魔しています。タグは#TokyoSNAです。Niftyさんのエンジニアサポートという制度で行われているようです。Nifty++

問題4.19の解答(台形公式、シンプソンの公式)

概説微分積分の問題4.19の解答。台形公式は定積分を台形で近似するもの。台形の公式を使って面積を出して整理すればすぐ出てくる。 def trapezoidal(f, range_, n): a, b = range_ result = f(a) + f(b) for i in xrange(1, n): result += f(a + (b - a) * i…

問題4.13の解答(回転体の表面積)

概説微分積分の問題4.13の解答。公式をそのまんま利用。 import sympy as sym from sympy.utilities import lambdify import scipy as sp import scipy.integrate def surface_of_revolution(y, range_): dy = sym.diff(y, x) y_lambda = lambdify(x, y) dy_…

問題4.7と4.8の解答(不定積分と定積分)

概説微分積分の問題4.7と4.8の解答。手計算に飽きたので現実逃避。4.7 は sympy を使う。理論的に解けるのはわかってるけども、手計算じゃもはや無理。7番目の問題にやたら時間がかかったんだけど、辛かったのはどの辺だろ。セオリー的にはt = tan(x/2)と置…

問題3.17の解答(Matplotlib)

昨夜サボってたグラフの表示。sympy の関数を numpy に持ち込むのに sympy.lambdify を使った。 import sympy as sym from sympy.abc import x import pylab import numpy as np def graph(f, range, nums=100): vf = np.vectorize(f) t = np.linspace(range…

問題3.19の解答(マクローリン展開)

概説微分積分の問題3.19の解答。exp(0.5)、cos(1)、log(1.1)を小数第二位まで求める問題。ラグランジュの剰余項Rn(x)の絶対値を評価する必要があるのだけど、評価方法を経験則的にやってるので一般化できてない。 import math def trunc(x): if x > 0: retur…

問題3.21の解答(ニュートン法)

概説微分積分の問題3.21の解答。x^3 + x^2 - 3 = 0 と x^4 - x - 1 = 0 を解く問題。 def f1(x): return float(x) ** 3 + float(x) ** 2 - 3 def df1(x): return 3. * float(x) ** 2 + 2. * x def f2(x): return float(x) ** 4 - float(x) - 1 def df2(x): r…

正しいのになぜかみんなが「変だ!」という問題にPerlで答えてみた

正しいのになぜかみんなが「変だ!」という問題: x,y,zを自然数とする。このとき、x=3ならばy=5になる。あるいは、y=5ならばz=8になる。 @noricoco これは良問!さすが @noricoco 先生 > RT @hyuki Perlで解答するとこうだろうなあ。 perl -e 'for my $x(0,…

今日はPRML復々習レーン kick-off meetingの日です

1年前に挫折したわけですが、一応もう一回来てみました。適当にメモします(キックオフなので打ち合わせ中心だと思いますが)。 ご挨拶 / @naoya_t さん 今日はエクストリームリーディングします 自己紹介タイム 今後は幹事役を分散したい 会場安いとことか募…

95%の信頼区間とは

10000本のクジにx本の当たりが入っているとする。ここから100本のクジを引いた結果を元に、当たりクジが何本入っているか区間推定したい。非復元抽出なので厳密にいえば100本中の当たりクジの本数yは超幾何分布に従うが、抽出する数と比較して全体数が大きい…

超幾何分布と二項分布

非復元抽出とは、有限個のものから複数個を抽出する際に、抽出したものを戻さずに2回目以降の抽出を行うこと。こうすると二回目以降の試行の確率はだんだんと変化していくことになる。復元抽出する場合は二項分布となるが、非復元抽出をすると超幾何分布とな…

二項分布とポアソン分布

二項分布は試行回数が多くなると階乗周りの計算量が多くなる。一回の事象の発生確率pが十分に小さければ、ポアソン分布で近似ができる。例えば、5枚の硬貨を投げてすべて表がでるかどうかを64回やったときの分布を二項分布とポアソン分布で比較すると、以下…

3囚人問題

こちらはモンティ・ホール問題より有名だと思う。 ある監獄にA、B、Cという3人の囚人がいて、それぞれ独房に入れられている。罪状はいずれも似たりよったりで、近々3人まとめて処刑される予定になっている。ところが恩赦が出て3人のうち1人だけ助かることに…

モンティ・ホール問題

3囚人問題は有名だけど、こちらを見かけたのは恥ずかしながら初めて。 「プレイヤーの前に3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろにはヤギ(はずれを意味する)がいる。プレイヤーは新車のドアを当てると新車がもらえる。プレイ…

あなたの圏は大丈夫? - 手続き型言語の裏に潜む罠

Monads in PerlやAllows in Perlの話では、合成compと恒等射idを以下のように定めた。 sub comp($$) { my ($g, $f) = @_; sub { $g->($f->(@_)) }; } sub id { @_ } しかし、これは厳密には圏とならない。 合成の結合則 h . (g . f) == (h . g) . f が満たさ…

今日は 関数型都市忘年会 の日です

実家に帰るついでにふらっと立ち寄ります。ってことで、札幌に向かっています。午前中は関数型都市忘年会に出席します。途中で退席予定です。

Directing AE with Arrows

@maki_daisukeさんに教えてもらったのを読んで実装してみた。 use strict; use warnings; { package AsyncArrow; use Scalar::Util qw/weaken/; use AnyEvent; use Exporter qw/import/; use Class::Accessor::Lite new => 1, rw => ['code']; our @EXPORT =…

YAPCで話さなかったこと

今回のトークでは「斜めの矢印」とか「合成」とかそういう言葉を説明に含める必要があったので圏論のことばや記法を前半で色々紹介しましたが、泥沼詳細には踏み込み過ぎないように気をつけました。その泥沼詳細にあえて踏み込んでみたい人のために、このト…

YAPCで話したこと

今回のYAPCでスピーカーデビューしてきました。スライドは以下にあります。 Monads in Perl (動画) 応募した当初は、十数名聞きにくればいいかなーと思っていたのですが、蓋を開けてみると結構な人数に聞いていただき、ほんとうにありがとうございました。今…

Catamorphism の他の例

Catamorphismを使って二分木での畳み込みを定義すると比べると関連が見えてくるかも? リストの畳み込み 自己関手Fとして、型Xを1+A*Xへ移すものをとる。1+A*ArrayRef A→ArrayRef A なる以下のF代数が始対象となる。 sub array(;$$) { @_ == 0 ? [] # type 1…

Catamorphismを使って二分木での畳み込みを定義する

高階関数がなす圏上の自己関手Fとして、型Xを A+X*X へ移すものを考える。A+X*X は具体的には、$a∈A 、$x1, $x2∈X としたとき、$a または ($x1, $x2) の形を含むもの。F代数とは、FX→X のような射をいう。例えば、以下のような射A+Int*Int→Int。 sub choose_…

「論理と計算のしくみ」が大変ためになった

読み終わったので感想です。他の方々からも良書だ、良書だと勧められましたが、結論から言うとやはり買いです。 論理と計算のしくみ萩谷 昌己 西崎 真也 前半は論理学から話を初めてゲーデルの不完全性定理までを論じます。後半はλ計算と型理論についての内…

fixed point operator による再帰的な記述の除去

論理と計算のしくみを読んでるメモ。fixed point operator があれば、再帰的な記述を再帰しない記述に直せる。再帰的な記述とは、例えば、以下のようなもの。 my $fact = sub { my $x = shift; $x <= 1 ? 1 : $x * $fact->($x - 1); }; 階乗を求める関数$fac…

Coqの証明と自然演繹の関係

「Aならば、AならばBならばB」の証明はCoq*1だと以下のように書けます。 Goal forall (A B : Prop), A -> (A -> B) -> B. Proof. intros A B. intro. intro. apply H0. apply H. Qed.なんでこれが証明になっているんでしょうか。Coqのモデルは自然演繹*2だそ…

Rubyでわかる?チューリングマシンの停止性問題

論理と計算のしくみを読んでいてチューリングマシンの停止性問題(Halting problem)の証明がしっくり来なかったので、Rubyで書いてみました。こうして書いてみると、証明のアイデアとしては単純明快です。ちなみに、Lisper のためのチューリングマシンの停止…

第15回FormalMethods勉強会に行ってきた

Coqのお勉強をしたくて出席してきました! 非常〜にわかりやすいチュートリアルで、おかげさまで概要がわかるようになりました。やはりこういう抽象的な内容は、文章より実際にレクチャーして頂いた方が掴みやすいですね。

3/5より新たな初心者向けの圏論の勉強会が始まるようです

conceptual mathematicsを読む会です。初心者向けであり読みやすく、具体例に豊富で圏のイメージがつき、易しいにも関わらず重要なアイデアが詰まっています。ある圏論の研究者は、「僕はこれでようやく圏についてイメージを得ることができるようになった」…

モナドのdo記法をPerlのCoroで実装してみた

先に言っときますが、決して役に立つエントリではないので圏論やコルーチンみたいなものに興味がある人だけどうぞwPythonにおけるHaskellチックなdo記法をジェネレータで実装する方法に心惹かれたので、Perlで真似してみました。ジェネレータはコルーチン的…

CLTT p45 Exercises 1.3.1 (i) の証明の一部 (2)

前回の続き。only if を示します。 Categorical Logic and Type Theory, Volume 141 (Studies in Logic and the Foundations of Mathematics) まず、(u,f)がカルテシアンなので、(u,π'):(I,Y)→(J,Y)とIに関して、以下を可換にするようなj:I×Y→Xが存在します…