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

Haskell Cabal

Haskellの色々なタイプやら関数やらをモジュールとして作り、さらにモジュールを合わせてパッケージにするらしい そのパッケージを「みんなで登録」する場所がHackageらしい(こちら) で、そのHackageがどういう状態なのか、チェックしつつ、パッケージインス…

Functors, Applicative Functors, Monoids(10)

定義をがっちり作って、それにうまく動くように関数を作って・・・という「がっちりした作り」ではなくて、定義・概念が相互にオーバーラップするような作りになっているのがタイプ・タイプクラス。そして、そのようなタイプ・タイプクラスの連結状態として…

関数とその組み合わせ(9)

関数処理を考えるときに、関数と引数との位置関係について、また、その処理順序指定記法について、よく考えて慣れることは大事。f(x)で書いたり、中置関数としたり、再帰したり・・・

モジュール(8)

ターミナルから実行して表示させるプログラムを作る main = putStrLn "hello" を書いたテキストファイルhs0129.hsを作成し、そのファイルの置き場にて、ターミナルで ghc --make hs0129 としてやれば、これはghcが持つコンパイラ機能により、実行可能プログ…

モジュール(7)

タイプ・タイプクラスの自作 以下をファイルに書いてロードすると、Showクラスを継承したPersonなるタイプができて、それは、String,String,Intを持つ。しかも、それをPerson->Stringというタイプ関係で扱う関数fが生成される data Person = Person { f:: St…

モジュール(6)

できあいの色々を使わないと!モジュール モジュールを集めたパッケージは、Hackageで管理してあって、それを取ってくるにはcabalというのが便利なのだけれど、Macは慣れていない(し、そもそもとってきたものがどこにあるのかの探し物をすることすら慣れてい…

カリー、map とその類似処理(5)

mapはリストによく使う すべてのリスト要素に何か処理をするのがmap それに似ているのは、filter。これもすべてのリスト要素に何か処理をするが、条件に合ったものだけを返して、それ以外は返さないところが違う さらに類似は、foldl。これはリストの左から…

文法の基礎(4)

入力が7なら1を返し、それ以外なら0を返す関数を作る(hs0129.hsというファイルで保存) sevenorothers :: (Integral a) => a -> a sevenorothers 7 = 0 sevenorothers x = 1 これをロードして ghci> :l hs0129.hs [1 of 1] Compiling Main ( hs0129.hs, inte…

タイプも基本(3)

インテジェのリストだよ ghci> let a=[1..5] ghci> :t a a :: [Integer] 関数を書いて、そのタイプをチェック。リストを取ってその和を返す関数 そのタイプは、何かしらのタイプa(ただし、それはsumがとれるようなタイプであって、そのようなタイプはNumと称…

ごく基本。関数ファイルの読み込み、リスト・タプル・集合表記(2)

関数を書いたファイルを保存して、ロードして使う doubleme x = x + x というテキストファイルを"hs0129.hs"という名前で保存して :l hs0129.hs とやれば、読み込んでコンパイルしてくれて doulbeme 3 とやれば使える ghci> :l hs0129.hs [1 of 1] Compiling…

MacでHaskellやり直し(1)

MacでやっていたHaskell環境にトラブル発生、と言うわけで、インストールからやり直し Haskellのインストールはこちらから インストールが終われば、ターミナルを開いて > ghci これで動くので、この勉強会テキストへGo!

一様分布:超立方体・超球面・超円板

Rmdファイルが以下にあります Rmdファイルからhtmlファイルを作る、epubファイルを作るには、こちらを参照 一様乱数:多次元超立方体・多次元球面・多次元円板作者: ryamada発売日: 2015/01/28メディア: Kindle版この商品を含むブログ (1件) を見る --- titl…

Rcpp sugarで統計分布の関数を使う

Rcppのsugarというのは、Rcppパッケージで提供される、cppコードとして使う関数なんだけれども、その名称がうまいことR本体の関数と同じように作ってあって、Rの関数を思い出しながらcppを書けるようにしてくれている一群の「Rユーザを甘やかす関数」のこと …

rforscience

rforscienceのサイトは、海洋データなどの扱いを中心に、微分方程式の扱い、球面プロット・3次元プロットなどに関していろいろ提供している 3次元プロットにはrglパッケージがあるが、少なくとも、ある面では、rforscienceが提供しているplot3Dパッケージ…

rforscienceと三次元プロットパッケージ

Rcppまとめ

2015年の年始にRcppについて調べ物をした。記事が散在したので整理しておく 大きく2系統 (1)Rを使えることを前提にベクトル・行列処理をRcpp化するための実践記録 (2)RでCppを使うにあたってCppってどういう構成になっていて、どうやって「あったらいいな」…

Armadillo

ArmadilloはC++の線形代数ライブラリなのだけれど、Rで使うときにはRcppArmadilloパッケージを介して使う手がある(C++のArmadilloをC++を書くときに使ってもよいのだろうけれど、それより「R Armadillo連携に特化しているということだろう Rcpp自体の代りにR…

STL

STLとは 色々あるけれど、いくつかの大事な塊がある (1)Iterator (繰り返し処理のための仕組み) (2)アルゴリズム (3)データ構造 (1) Iterator 地道にベクトルの要素アドレスを指定して回すこともできるが… double sumC(NumericVector x) { int n = x.size();…

Rcpp sugar

Rcpp sugar これは、C++なんだけど、Rと同じように書けるようにしてある関数についてのこと たとえば、Rではベクトル化計算ができるし、そうするのが速いのだが、C++ではループを回すのが普通。ただし、ベクトル化演算が基本演算でできるようにC++でsugar登…

Rcpp、一歩前へ

Rcppの基礎は前掲記事で終わり。ただループ処理を速くしたいだけなら、それだけでもたぶんOK C++でR的に書きたい→sugar 、データ構造やアルゴリズムで便利なライブラリを使いたい→STL (その先にboost)、RcppArmadilloなどがある C++、コンパイラに負荷がか…

Rcppおさらい

Rcppを使ってみた(こちら) おおまかに分かったので、じゃあ、Rcpp/Cppの強みについておさらいしておこう 一番の基本(この記事) 少し先(sugar,STL,Armadillo) こちらを読む Rcppをいつ使う? Rのコードでできるだけのことをしても「遅い」とき それはいつ? …

ミラーニューロン メモ

スポーツ 代数でミラーニューロン 行動の観察により、行動を自身で行うときにおきる神経活動が誘発されるが、その観察による誘発に絡む神経がミラーニューロン 目的意識と関係がある模様 自己の内化や発達とも関連 行動という物理的に現れる部分(神経細胞と…

Rcppで格子遊び2

完全2部グラフから、条件を満たす辺のリストを作る 2部グラフの一塊はx+y+z+w=n-1のベクトルの集まり、もう一塊がx+y+z+w=nのベクトルの集まり それぞれ、相当のベクトル数ではあるけれど、全ペアの距離を調べてリストアップする ただし、出来上がるエッジ…

Rcppで格子遊び1

頂点数を数える 頂点数はただの漸化式。C++化する必要もないだろう。してもよいけど… n <- 500 a <- rep(0,n) a[1] <- 1 for(i in 2:n){ a[i] <- (i+2)*a[i-1]/(i-1) } a Rcppを使ってみる コメント行は"//"で始まる RcppArmadilloを使うので"//Rcpp::depend…

Rcppで格子遊び0

こちらでRcppを覚えてみようか、そのための地ならし情報収集をしてみよう、という記事を書いた。 その実践編。『自分のためにRcppを使ってみる 〜RstudioでC++を覚える』 課題を以下のように設定する。 d=4次元立方格子の非負整数格子を考える 格子はハミン…

Rの関数管理とGithub その2

GitHubを使う GitHubはネット上にある「ファイル置き場」「共同ファイル管理場」 したがって、以下の3点が必要 GitHubを使ってRコード管理をするための基本作業 その「場」を確保する→『A』 その「場」にファイルを置くためのローカルPCの作業を知る→『…

Rの関数管理とGithub

いい加減に書いた関数でも、使いまわしたい こちらにそんなときに、ローカルなフォルダにパッケージ様のディレクトリ構成で置いておいて、適宜読み込む方法について書いてある さらには、それをGithubにpushすれば、Github公開にもなる 準備 roxygen2を使う…

バックトラック法〜pythonを使う(続)

こちらにパズルを解くパイソンコードの解説があった パイソンの練習がてら、なぞってみる コピペをしても動かないので、いまいちなのだけれど…コメントをいただきまして、1行修正して回りました。 いくつか学ぶこと Classの作り方 クラスオブジェクトを作る…

ぱらぱらめくる『計算で身につくトポロジー』

計算で身につくトポロジー作者: 阿原一志出版社/メーカー: 共立出版発売日: 2013/07/11メディア: 単行本この商品を含むブログ (1件) を見る 『トポロジーを理解するために、定義・定理・証明というプロセスを自分で証明・計算することを通して、理論への探検…

II 曲面のホモロジー群と閉曲面の分類 ぱらぱらめくる『計算で身につくトポロジー』

閉曲面に広げるには、頂点集合・辺集合に加えて、面集合を考えた「単体複体」を扱うこと それに伴って、境界準同型に辺と面との関係が登場し、ホモロジー群がちょっと込み入るだけ 面の向き、向き付き可能という考え方が分類上、大事 computing homology(pyt…