2013-01-01から1年間の記事一覧

移動と格子と結晶

昨日、移動のことをメモした 結晶というのは、"Mathematical model for ideal crystal (or perfect crystal) in R^d is a set Λ, which is formed by a finite number of shifted copies of a single lattice L. Formally, Λ is a perfect crystal if Λ = L +…

移動と格子と結晶

移動とマッチングに関するメモ

空間に点集合が2つ()ある。一つ目の集合()から二つ目の集合()への移動であると考えて、どの点がどの点に移動したとみなすことにするかを考える 同数の点に関するマッチングの決め方であるとみなせる マッチングにはハンガリアン・アルゴリズムが使える場合…

移動とマッチング

畳みこみ

今日は畳みこみ ヒストグラムは離散的にパルス関数で畳み込んだようなもの カーネル密度推定は適当な関数で畳み込んだようなもの いくつかのサイトを やはり一番、東北工業大学中川先生の「人生畳みこみ」 畳みこみを2次元座標で 物理のかぎしっぽ:相関関…

# zは複素数のベクトル # int0,int1はintensityの上下限、sat0,sat1はSaturation(彩度)の上下限 my.hsv <- function(z,int0=0.6,sat0=0.3,int1=1,sat1=1){ # 複素数の偏角 arg <- Arg(z) s <- which(arg<0) arg[s] <- arg[s]+2*pi # 複素数の絶対値 r <- Mod…

複素関数のお絵かき

函数型言語とは

繰り返し処理を定義する (define zero (lambda (s) (lambda (z) z))) (define one (lambda (s) (lambda (z) (s z)))) (define two (lambda (s) (lambda (z) (s(s z))))) (define three (lambda (s) (lambda (z) (s(s(s z)))))) 0にadd1を2回適用する ((two …

データ構造

Last In First Out (LIFO) (define stack '()) (define set-stack (lambda () (set! stack '()) 'done)) (define push (lambda (x) (cond ((null? stack) (set! stack (list x))) (else (set! stack (cons x stack)))) stack)) (define pop (lambda () (let …

級数と再帰

順列・組み合わせ・重複組み合わせの通りの数はなので (define perm (lambda (n r) (cond ((= r 0) 1) ((= r 1) n) (else (* n (perm (- n 1) (- r 1)))) ))) (define comb (lambda (n r) (cond ((= r 0) 1) ((= r n) 1) (else (+ (comb (- n 1) (- r 1)) (c…

関数を定義する

こちらでLISPの手習い中 ひとまず関数をひたすら書いてみる (define non (lambda (x) 'non)) (define id (lambda (x) x)) (define add1 (lambda (x) (+ x 1))) (define sub1 (lambda (x) (- x 1))) (define ++ (lambda (i) (+ i 1))) (define -- (lambda (i)…

勉強会初日

今日から勉強会 こちらから環境をダウンロード GHCiを使う(WinGHCiを使う) テキストは すごいHaskellたのしく学ぼう!作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行本(ソフトカバー)購入: 25人 クリッ…

有理数も格子点

昨日、素数を軸とする多次元格子の非負領域は自然数だと書いた 多次元格子の全体はなんだろう? それは有理数全体 さらにでは、無理数はどこに? それは格子のすきまに? それともそれは発想が安易すぎる? 1個の無理数は、この超立方格子空間上の格子点を…

一般次元直三角錐上の格子点の増え方

昨日、素数を軸とする多次元格子の話を書いた 一般化しよう 次元立方格子の非負部分を考える そこになる超平面をとる ただし、すべてのについてであり、任意のについては無理数であるとする こうすることで、非負部分立方格子はこの超平面で2分され、かつ、…

自然数は素数の対数の格子点

こちら(など)で素数とかリーマン予想とかゼータ関数についてごちゃごちゃと書いた その中で、リーマンのゼータ関数の複素数0点の複素数部が作る数列に相当する櫛関数のフーリエ変換が素数とそのべき(素数べき)の対数での櫛関数になるという話を書いた リー…

Scheme事始め5:四則演算を統一的に扱う

四則演算をラムダ関数として扱いなおしてみる "+,-,*,/"の4演算はすべて2項演算なので、「演算記号」を"#"とでも表すとすれば (# 3 4) のように書くこともできる 問題は、どうやって統一的に扱うのにどうするか 以下はその例。infixという関数をラムダ関数…

Scheme事始め4:自作関数

ラムダ関数(ただの関数)は「関数である」ことしか決めないので、それに名前をつけてとっておくには、そのための方法が必要になる > (define linear (lambda (a b x ) (+ (* a x ) b))) > (linear 2 3 4) 11 これは、「定義しましょう、linear というものを、…

Scheme事始め3:RacketでSchemeを扱ってみる

リストでない形で渡すとそれを値評価する。数値はそのやり方がOK、文字列は""で囲む > 123 123 > "Gauss" "Gauss" リストを与えよう 空リストはエラー(空リストはLISPの定義的にはnilという意味なのだけれど…) > () . #%app: missing procedure expression; …

Scheme事始め2:「ただの関数」

関数 関数っていうのは、のようなもの これをって、そう書かないといけない理由もないので、と書くことにする さらにの記号は、は関数を定義するんだよ、という意味だと知っていれば、わざわざ書かなくても用は足りるのでと書くことにする さらにのも空白文…

Scheme事始め1:リストがすべて

集合からn-タプル、ペアノの自然数 集合を要素数の括弧の入れ子とする。その入れ子的構造がn-タプル でとすると、もの構成要素となってくる。ここでは『空集合』、は『空集合を要素とする集合』。この2つは違うもの。違うというのはどれくらい違うかという…

Scheme事始め12:数学的な例を関数を作りながらみてみる(1)

インクレメントとデクレメント > (define ++ (lambda (i) (+ i 1))) > (++ 3) 4 > (define -- (lambda (i) (- i 1))) > (-- 5) 4 冪 > (define ** (lambda (a b) (expt a b))) > (** 2 3) 8 割り算関係。商、剰余、法数 > (define // (lambda (a b) (quotien…

Scheme事始め10:構文拡張

最低限の特殊形式では不便だ、となれば、拡張してやることもできる。そんな構文例が「拡張の塊」となると「LISP方言」のようなものになる 構文の拡張も自作関数もある意味では同じ…

Scheme事始め9:Scheme 型

非数値データ型 > (define type-check (lambda (x) (define form (lambda (str) (display "This is ") (display str))) (cond ((procedure? x) (form "a procedure: ") x) ((number? x) (form "a number: ") x) ((pair? x) (form "a pair: ") x) ((null? x) …

Scheme 最小限LISP Scheme事始め0:教育的環境

素数夜曲―女王陛下のLISP作者: 吉田武出版社/メーカー: 東海大学出版会発売日: 2012/06/01メディア: 単行本購入: 6人 クリック: 266回この商品を含むブログ (17件) を見る この本の後半を参考に: LISPについてまったく何も知らない状態でWindowsノートPCが…

Scheme事始め8:プログラム言語としてのSchemeのルール

Schemeの基礎 すべては()表記する(Listで表す)。自然数もListで表す 関数は「ただの関数」というラムダ関数 カリー化は変数を1つずつ扱う方法で()だけで実現できる ベータ簡約・イータ変換・ベータ正規形が関数の同等性や計算手続きの計算機実行を保証する…

Scheme事始め7:ラムダ算法

という関数があって、という関数があったとする という関数を考えることができる これはyについて関数g()を処理してそれをf()に渡して、という風に入れ子になっているし、1個ずつの変数処理なので、カリー化してある、と言えるもの という新たな関数ができ…

Scheme事始め14:高階手続

手続きを引数として取る手続き apply > (define iota (lambda (min max) (if (> min max) '() (cons min(iota (+ min 1) max))))) > (iota 0 9) (0 1 2 3 4 5 6 7 8 9) > (define num0-9 (iota 0 9)) > (apply + num0-9) 45 <|| --map >|lisp| > (map - num0…

Scheme事始め6:無駄に仰々しく耳慣れない単語たち

ラムダ記法(ただの関数)、car(かー)とcdr(くだー)、アルファ変換、ラムダさん方、ベータ簡約、イータ変換、関数適用、関数抽象… 耳慣れない単語が続くと疲れる 疲れるけれど、まぎれなくするための「わざわざの耳慣れなさ」と思って受け入れておこう たとえ…

Scheme事始め5:関数のカリー化

複数の変数からなる関数があったとき、その変数を1つずつ(プログラムの中で)扱うことをカリー化と言う(らしい) のようなこと Schemeで書くとこんな感じ?下がカリー化風? > ((lambda (x y z) (+ x y z)) 2 3 4) 9 > ((lambda (z) (+ z ((lambda (y) (+ y (…

Scheme事始め13:数学的な例を関数を作りながらみてみる(2)

ペアノ的自然数定義。1を0,1,2,...個要素とするリスト vの操作として表すsuccessorのsucc,predecessorのpred consは1を先頭に付け加えること、cdrは先頭を除くこと > (define succ (lambda (v) (cons 1 v))) > (define pred (lambda (v) (cdr v))) > (succ …