目次

数学メモ

何の脈絡もなく,気になったことをメモしてるだけのページ。

permutation(順列)・combination(組み合わせ)

_{n}P_{m} = \frac{n!}{(n-m)!}

_{n}C_{m} = \frac{n!}{m!(n-m)!}

色んな関数のグラフ

とりあえず描いてみた。

一番下(みずいろ)のがシグモイド関数ってヤツで, \frac{1}{1+e^{-ax}} って形。グラフでは a=1 で,この a をゲインって呼ぶ。(-inf, inf)→(0, 1)の全単射(連続)。

対数関数

対数関数って言うと,f(x) = \log_a xって形の関数。グラフにすると,

ってなる。一応説明すると, 底が 0.5 の対数関数 底が 2 の対数関数 底が e(ネイピア数)の対数関数(自然対数) 底が 10 の対数関数(常用対数) ね。

更に一応付け加えると, e ってのは f(x) = e^x \Rightarrow f'(x) = e^xっていう性質がある数のことで,e=2.71828...。他にも面白い性質があるんですが,それはまたの機会に。

ちなみにGNUPLOT(上のグラフを描いてるソフト)には対数系の関数が log(x) と log10(x) の2つある (それぞれ,eと10を底とする対数)らしいんだけど,じゃぁ 2 を底とする対数はどうすんのか,一瞬悩んじった。

まぁ,当たり前なんですが,

\log_a(x) = \frac{\log_n(x)}{\log_n(a)} なので,一つ対数関数があれば底は変換できるんだよね。

んで何で 2 を底とする対数関数なんて出したかって言うと,ある自然数nを2進法で表したとき, その桁数(文字列で表したときの長さ)が \lfloor \log_2n \rfloor + 1 になるって事実があるから。 (\lfloor n \rfloor は,n の小数点以下を切り捨てるって意味。\lfloor 1.2 \rfloor = 1 ね。プログラミング言語では良くある floor(n) って関数。)

…ホントか?以下,試してみた。

10進 2進 \lfloor \log_2n \rfloor + 1 \log_2n
1 1 1 0
2 10 2 1
3 11 2 1.58496250072
4 100 3 2
127 1111111 7 6.98868468677
128 10000000 8 7
256 100000000 9 8

確かにそうなる。

じゃぁ何でか。\log_2nは, 2\log_2n乗したらnになるって意味だから,小さい数から増えて行って位が上がる数になったら\log_2nの値が1増えることになる。だから,その\log_2nの小数点以下を切り捨てて,1の位の桁数1を足すと,全体の桁数が求められるわけだ。


ちなみに,\log_2n\lg_n って書く 1)らしい。(\log_en\ln_n って書くけど,こっちは有名。)

用語

k-tuple

a sequence with k elements

power set

べき集合(冪集合) S = \{ a,b,c \} \Rightarrow \mathcal{P}(S) = \{ \phi, \{a\}, \{b\}, \{c\}, \{a,b\}, \{a,c\}, \{b,c\}, \{a,b,c\} \}