Rcppを使ってパッケージを作る
- Rcppパッケージには、Rcppを介してcppを使ったパッケージの見本を作成する関数 Rcpp.package.skeleton() がある
- Rstudioで新たにcppファイルを作成して、然るべきフォルダに保存して
- Rcppパッケージの compileAttributes() 関数を実行して、出来上がり
- あとはgithubに上げれば、自分も他人も使える状態
ゼータ メビウス メビウス反転 素数 商群
- 本当にただのメモ
- この論文にはお世話になった
- オイラーのゼータ関数では、個々の自然数に対して1を返す関数(数論的関数)に対して、ディリクレ級数的母関数が定義できて、それがいわゆるリーマンのゼータ関数
- リーマンのゼータ関数にはオイラー積表現があり、そのときに、全ての自然数を素数に因数分解することを使う。したがってオイラー積表現では、全部の素数に渡って、掛け算する
- メビウスの反転公式というものがある
- これは、集合を「割り算して同値類」をとることにより、関数を反転するルール
- リーマンのゼータ関数の場合には、この割り算が、いわゆる算術的割り算だったので素数に渡る処理をした
- この割り切れる関係をポセットにできる
- ポセットではチェインを一つずつ数える。この数論的関数自体をゼータ関数と呼び、その対応的な数論的関数をメビウス関数と呼ぶ。この辺り、自然数に1を対応づける関数の母関数としてのゼータ関数と、ちょっと「ゼータ」の使い方が違いそうだ
- そして、この対応する関数がどうして対応するかが、実は、メビウス反転と関係し、さらにその背後にディリクレ級数的母関数が、「割り切れる」ものに関して畳み込みが定義されていることとも関係しているのだが、文書によっては、そこに触れずに、関係だけを記載するものもあり、文書によっては、関係するメカニズムを延々と書いていて、何が知りたかったのかがわからなくなる長さになったりするので注意が必要
- グラフのゼータ関数(伊原・Selberg)は、から出発していない。リーマンのゼータ関数のオイラー積表現の対応物として、ゼータ関数ができている。素数に対応するものとして基本となる閉測地線をとる。その測地線の「値」には「長さ」をとる
- その概念をグラフの隣接行列と結びつけたら、determinantの式で表せるよ、というあたりに、伊原のゼータ関数に関する文書は重点を書いているので、そちらから入って、ポセットのゼータ関数との関係を理解しようとすると、色々な所に、段差があって大変だ
ポセットのメビウス関数とオイラー標数
- このPDF
- かいつまむと
- ポセットのチェイン(順序がたどれるパス)を単体とみなす(たとえば、x1,x2,x3がチェインなら、x1,x2,x3の軸上の点(1,0,0),(0,1,0),(0,0,1)を結んだ三角形がこのチェインの表す単体
- ポセット全体は構成ノード数の次元の空間に置かれた単体的複体となる
- この単体的複体は山あり谷あり
- ポセットの各チェインに対して1を返す関数を、数論的関数(整数に対して複素数を返す関数)とすると、その数論的関数を係数とするディリクレ級数的母関数は、ゼータ関数に相当する(普通の自然数に対して、必ず1を返すような数論的関数に対応する、ディリクレ級数的母関数がリーマンのゼータ関数である)
- ゼータ関数と、ディリクレ級数的畳み込みにおいて、逆関数になっているのがメビウス関数(メビウス関数も数論的関数。今はポセットを考えているから、各チェインに対して値を与える関数になっている)
- メビウス関数を、ポセットのような、集合のinclusion-exclusion関係に対して考えるとき、+1,-1の交代が現れる
- 今、ポセットの一番下と一番上を閉じてやると、メビウス関数はの項に分解した表現ができて、その各項に係数がつく
- この係数がオイラー標数(点の数、辺の数、面の数、四面体の数…、という構成単体の規模別の数)の±1倍となっており、メビウス関数自体が、オイラーの標数の式に一致することが示せるという
球面グラフのスペクトル分解で球面調和関数
書きかけ