2012-02-01から1ヶ月間の記事一覧

ジョルダン標準形をMathematicaで

ジョルダン標準形について(こちらの資料を) ジョルダン標準形を求めるソースは簡単に見つかるかと思いきや、見つかったのは、Mathematicaのみ こちら C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)作者: 奥村晴彦出版社/メーカー: 技術評論社…

指数行列を計算する19の方法

こちら 行列の級数展開・級数加算を使う 常微分方程式の解法を使う 多項式を作る 行列の分解を使う 行列の指数を和に分けて、それを行列の積としてみる 過去25年間(の進歩)で第20番目の方法(Krylov space methods)がある 指数行列を計算するのではなく、指…

1階線形微分方程式

こちらから はの関数 の変化はに連れて変化する何か()と、に連れて変化する何かととが出会うことで起こるとでも、読む そのようなとき、によらず解析的に解ける、という話 指数関数が出てくる

定数係数1階線形微分方程式

こちらから こちらで言われているように 『なぜ(これを扱う)かって?そりゃあ,よく使うからですよ』 解き方はわかった わかったことは計算機にやらせよう Wolfram のページ(こちら)で 入力に式を入れれば とかもとける

定数係数1階線形微分方程式

推移行列・指数行列

こちらから 状態数をNとする N状態の存在比率をのように時間の関数で表す 状態の占拠率の推移をNxN行列で表すとする とする であるから と置けば であり、これは と解ける ただし、 # 状態数 N <- 5 # 推移行列はNxN行列ですべての成分が正、かつ # すべての…

多次元空間の折れ線

前の記事で、xy平面での単調増加な折れ線を扱った 任意の次元での折れ線を考えてみる この折れ線上を移動するときの位置のパラメタ表示について考えてみたい 次元とする 折れ線はこの空間上の点の並びと、その隣接点を結んだ線分とからなる この折れ線をから…

単調増加観測の凸包を描く・多列のソートも

2次元平面に単調増加な観測点があるとする 事情があって、この点を結んだ折れ線には垂直な部分と水平な部分とが、それなりに頻発しているものとする まずはそのような点を適当に作ってみる Np<-20 x<-runif(Np) y<-runif(Np) Ndup<-10 x<-c(x,sample(x,Ndup,…

グラフの凸包を描く・多次元空間の折れ線

折り畳み機能

ふとしたきっかけで秀丸の折り畳み機能というものの存在に気付いた 「誰か教えてくれればよかったのに」と思う機能の一つだったので、知人にも教えてあげたら、喜んでくれた こちら (リンク先の掲載図から)

駆け足で読む『プログラミングHaskell』3 型とクラス

型とクラス 型とクラスはHaskellの基本概念である 型とは 型とは互いに関連する値の集合である 集合であるから、全体があって、要素があって、要素同士にオーバーラップはない 値が集合をなすとき、型を定義できる クラスとは 複数の型があるとき、型がある…

駆け足で読む『プログラミングHaskell』11 遅延評価

複数の関数を適用するとき、どういう順番で関数適用するかを問題にする 外側から、対、内側から 名前渡し、対、値渡し curry化することと関係がある(順序がわかるようにカッコを明示的に書くとわかる) 無限再帰の場合などでは、値渡しでは停止しないが、名前…

駆け足で読む『プログラミングHaskell』10 型とクラスの定義

型を定義する typeによる宣言(既存の型を使って宣言する) type String = [Char] type Pos = (Int, Int) type Board = [Pos] dataによる宣言(まったく新しい型を宣言する) 取りうる値の集合を定義する その上で関数を定義する data Move = Left | Right | Up …

駆け足で読む『プログラミングHaskell』9 対話プログラム(IOがしたい)

IO型の特殊性 IO型は対話形式にするための仕組み HaskellはIOを除くと、「ファイルにすべてを書き込んで(→コンパイルして)→実行する」〜「いつも同じことをするだけ」という処理を作る Haskellで対話式入出力をするときは、対話の受付口と対話の返却口を開い…

駆け足で読む『プログラミングHaskell』7 高階関数

引数として関数を取ったり、返り値として関数を返したりする関数を高階関数(higher-order function)という 複数の関数の処理を行ったりするときは、結果として関数に関数を引数として渡すことになる curry化は「返り値として関数を返す」こと(らしい)だが、…

駆け足で読む『プログラミングHaskell』6 再帰関数

Haskellではループの代わりに再帰関数を使う 整数に対する再帰は以下のような感じ f :: Int -> Int f 0 =1 f (n+1) = (n+1) + (f n) 「関数fの入出力の型はInt。fに0を渡したら1を返す。それ以外のときは、n+1を渡したら 関数fをnに適用した結果にn+1を加え…

駆け足で読む『プログラミングHaskell』5 リスト内包表記

Haskellで、リストは特別な役割をしているので、そのために知っておくべきことがいくつかある 数学の内包表記 内包表記をHaskellのリストで実現するために 生成器 [1..5]が[1,2,3,4,5]であることにする このように..リストを作ってくれるので「生成器」と呼…

駆け足で読む『プログラミングHaskell』4 関数定義

関数は対応付けるもの 対応付けは値と値かもしれないし、値と関数かもしれないし、関数と関数かもしれない 対応づけは1度とは限らない(x -> y -> z -> wのように3つの対応づけもできる) 関数が失敗することなく対応付けするためにHaskellで決まっているル…

駆け足で読む『プログラミングHaskell』

プログラミングHaskell作者: Graham Hutton,山本和彦出版社/メーカー: オーム社発売日: 2009/11/11メディア: 単行本(ソフトカバー)購入: 14人 クリック: 503回この商品を含むブログ (117件) を見る この本はすばらしい。ウェブ上の色々を調べて、ようやく…

型とクラスを理解する過程のメモ

自分の書いたものを消したいくらいだが、このメモは自分で書いた、というそれだけの理由で、自分にとっては価値があるので、残すことにする 型とクラスを調べるために どちらも":info"によって情報を示すことができる(この記事の末尾にそれぞれの表示を示し…

引数

R

"..."と渡す引数 こちらに記事 こちらを"Dot-dot-dot"で検索すると記載 全部の引数を"..."にしてもよい(関数名を変えるだけ) myPlot <- function (...) { plot(...) } x <- y <- runif(10) myPlot(x, y, pch=2, main="test") "...","..."を二つ使えない myPl…

モナドで家系図探索

こちらで父子関係から祖父を探索するHaskell処理を書かれている モナドを使うらしい 家系図探索に使えそう Ancestral Recombination Graphにも使えそう 逆に、無限の伝達規則によってつくられる家系図を描いた上で、無限長の疑似乱数列と組み合わせれば、シ…

Haskellで疑似乱数列

Haskellでは、無限長のリストを作れるので、疑似乱数列を作るときは、それを作って、必要な数だけ抜き出すのがよいそうだ 以下のソースはシードsを指定した上で、無限0-1乱数を作っている import System.Random randomSeq :: Int -> [Double] randomSeq seed…

The Haskell Programmer’s Guide to the IO Monad

Yet Another Haskell Tutorial

3章 Listsは基本 Listsの処理は色々 foldr,foldl Prelude> foldr (-) 1 [4,8,5] 0 Prelude> foldl (-) 1 [4,8,5] -16 ソースコードファイル 色々、ルールはあるけれど、数値を与えて計算するだけなら、以下を"MyTest.hs"というファイルで保存して module My…

Yet Another Haskell TutorialとThe Haskell Programmer’s Guide to the IO Monad

Haskellのチュートリアルはここにリストがあるように、たくさんある 自分の動機は・・・、自分のレベルは・・・、と思って眺める 動機は、Haskellでのもろもろの取り扱いの定義の仕方が知りたい、圏論との関係が知りたい、ということだった 「定義」となると…

車両ソート問題とバブルソートとその一般化

こちらで車両ソート問題における車両の移動をHakellで一般的に取り扱うことを試してみた この問題は「ソート」の問題である では、いわゆる「1次元配列のソート」と同じ枠組みで考えて、「1次元ソートと車両ソートとを同じルール」で取り扱うことを考えた…

Haskellを書いてみよう

あちこち読みかじったので、雰囲気はわかってきたので書いてみる 具体例はこちらでも扱われている「車両のソート問題」 いくつかのソースがこちらにあります 問題は、上手のように引き込み線が複数あって、それらを出たり入ったりできて、一番左から、世の中…

Integerというすごい桁のデータ型

Int型は普通の整数型 Integer型は桁数に制限がない(?) "factorial.hs" factorial :: Integer -> Integer {-factorialの型はIntegerを貰いIntegerを返す-} factorial n = if n == 0 then 1 else n * factorial (n - 1) loadして Prelude> :load "factorial.h…

リストの操作

メモリンク(こちら) Preludeについてのサイト(こちら)でList operationsの項(こちら)を淡々と見ていこう map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs (a -> b) なる関数(任意の型aの値を型bの値に移す関数)と[a](型aの値の…