Sunfit Brain Lab.

限界集落コンテンツ

Canonical Ensembleの整理

前提 統計力学=マクロな系の平衡状態をマクロな性質を、系のミクロな力学の情報に基づいて、定量的に特徴づける理論 熱力学における平衡状態の普遍性=どのような環境で平衡状態を用意しても全く同じ平衡状態が得られる。 平衡状態を$(T; V, N)$と記述する。 カノニカルアンサンブル(以下、CE)で想定する状況は以下の図に示す通り。 マクロな量子系のエネルギー固有状態を$i = 1, 2, \cdots , n$と番号付けし、対応するエネルギー固有値を$E_i$とおく。 熱浴を1種類の粒子からなる系とする。 熱浴の体積を$V_\mathrm{R}$、粒子数を$N_\mathrm{R}$とし、エネルギー固有状態を$k=1, 2, \cdots$、エネルギー固有値を$B_i$とする。 注目する系と熱浴を合わせた全系の量子状態は$(i, k)$で指定され、系と熱浴の間に相互作用が無視できるほどに小さいならば、$(i, k)$が全系のエネルギー固有状態を指定し、対応するエネルギー固有値は$E_i + B_k$となる。 Canonical Ensembleの導出 全系(注目する系+熱浴)が平衡状態にあるとする。 マクロに見た全系のエネルギーを$U_\mathrm{tot}$とする。 この平衡状態において、注目する系と熱浴の間の相互作用は無視できるほど小さいとする。 まず、全系の平衡状態をミクロカノニカルアンサンブルで記述する。 つまり、 $$ U_\mathrm{tot} - (V_\mathrm{R}+V)\delta < E_i + B_i \leq U_\mathrm{tot}, $$ を満たす$(i, k)$が「許されるエネルギー固有状態」であり、これらが等確率で出現するモデルを考える。 実際には、熱浴の体積が注目する系の体積よりも十分に大きいので、 $$ U_\mathrm{tot} - V_\mathrm{R}\delta < E_i + B_i \leq U_\mathrm{tot}, $$ とできる。 注目する系のエネルギ固有値$i=1, 2,\cdots,n$を1つ固定すると、熱浴のエネルギー固有状態$k=1, 2, \cdots$として「許される」のは、 $$ U_\mathrm{tot} - E_i - V_\mathrm{R}\delta < B_i \leq U_\mathrm{tot} - E_i, $$...

July 1, 2023 · 3 min · 563 words · rKamiura

Vscode での C++ デバッグ環境構築

次の boost を使った簡単な線形代数のサンプルプログラム(ここでは main.cpp というファイル名に書かれているものとする)を実行・デバッグできることをゴールとして環境構築を行う。 #include <boost/numeric/ublas/io.hpp> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/vector.hpp> #include <iostream> #include <vector> using namespace boost::numeric::ublas; /* "y = Ax" example */ int main() { vector<double> x(2); x(0) = 1; x(1) = 2; matrix<double> A(2, 2); A(0, 0) = 0; A(0, 1) = 1; A(1, 0) = 2; A(1, 1) = 3; vector<double> y = prod(A, x); std::cout << y << std::endl; return 0; } M1 Mac gdb は M1 Mac に対応していないため、clang + lldb を使って、C++ のデバッグ環境を整える。 clang は プログラムを LLVM 上で動作させるためのコンパイラであり、lldb は LLVM や clang パーサーを利用したデバッガーである。...

May 7, 2023 · 3 min · 429 words · tatsukawa

Jaxを使った常微分方程式の数値解析

Jax.numpy使いたいし力学系も解析したい 今のところ、Jax.numpyの速さを実感しつつもメカニズムは理解していない。 が、どうせJax.numpyを使う機会が増えるので、力学系解析もJax.numpyでできるようにする。 ライブラリは、Diffraxを用いる。 https://github.com/patrick-kidger/diffrax ODEだけではなく、SDEも簡単に扱える。今回はODEだけ。 CDE(Controlled Differeitial Equation)も扱えるらしいが、これが何かはまだ分かっていない。 とりあえず、Duffing方程式の時間発展までを行ってコードを確認する。 $$ \begin{aligned} \dot{x} &= v,\ \dot{v} &= x - x^3 - ev + \gamma\cos(\omega t). \end{aligned} $$ importとソルバーに入れる関数は以下。 import jax.numpy as jnp from diffrax import diffeqsolve, ODETerm, Dopri5, SaveAt, PIDController def Duffing(t, X, args): x, v = X dx = v dv = x - x**3 - args['e']*v + args['g']*jnp.cos(t) return [dx, dv] 関数の引数は、scipyのodeintと同じで、時間 tと変数 Xとパラメータ argsとする。 パラメータの与え方はいくつか考えられるが、今回は辞書型で与えている。 次に、実際に時間発展させるコードを見る。 ARGS = {'e': 0....

April 29, 2023 · 2 min · 300 words · rKamiura

EigenをBoostのodeintに組み込む  [draft]

Eigenを導入したい

November 23, 2022 · 1 min · word · rKamiura

Laurent G. et al. (2019)

元論文: Survival of Self-Replicating Molecules under Transient Compartmentalization with Natural Selection 自己複製分子 (replicator) が、寄生体(parasite)を伴った環境において一時的な区画化(transient compartment)の下で自然選択的に生存するか、生存するならば一時的な区画化は生存に対してどのような影響を与えるのかを調べた研究。 実験方法 次の 4 ステップを 1 round として、$R (\in \mathbb{N})$ round 実行する。 プールから区画に分子を割り当てる(Inoculate) 区画の総分子数 $n = m + y \in \mathbb{N}$ は平均 $\lambda$ のポアソン分布に従うものとみなしてサンプリングする。ここで $m$ は replicator の数で $y$ は parasite の数を表す。 replicator の数 $m$ はパラメータ $x$ を持つ二項分布に従うものとみなしてサンプリングする。 各区画で replicator と parasite の時間発展を行う(Maturate) Inoculate ステップ で得た $m$ と $y=n-m$ を初期値として、次のダイナミクスを実行する。 $$ \begin{aligned} \dot{m}(t) &= \alpha m(t)^2\\ \dot{y}(t) &= \gamma m(t) y(t) \end{aligned} $$...

November 23, 2022 · 4 min · 844 words · tatsukawa

ブログのセットアップ

サーバー運用や静的サイトジェネレータの自分の中の知識が遥か昔で止まっているため、モダンなやり方は分からないのですが、このブログを立ち上げるにあたり作業したことを記録しておきます。 概要 VPSサーバーを借りてブログ環境を構築した 他人がこの記事を読んで新しく得られる情報は無いと思うが、自分のために記録を残しておく 構成 サーバー Sakura VPS 2G プラン (約20,000円/年) OS Ubuntu 20.04 ドメイン取得 Google Domains (約1,000円/年) 静的サイトジェネレーター Hugo デプロイ Github Actions 作業内容 サーバー選択 お金をかけずにブログを始めたいなら、Netlify や Github Pages などの静的サイトのホスティングサービスを使えば良いと思います。 しかし、ブログ以外の何かもやりたいという気持ちがあったためレンタルサーバーを借りることにしました(ちゃんとした目的はなかったので見切り発車以外の何者でも無いですが)。 ということで、最近だと AWS や GCP が良い選択肢だな、と思ってかかるコストを計算したところ思ったより高い…となったために最終的に VPS を借りることにしました。 最近だと国内の VPS もいろんな選択肢があり色々見て調べていました。 調べた感想を列挙すると、 WebARENA Indigo NTT PCコミュニケーションズのサービスということでちょっとだけ信頼できる。安いが、SSDがめちゃくちゃ少ない割に増設オプションも無い。 KAGOYA Cloud 安い。クレジットカード情報の入力フォームがちゃんとしてなさそう(偏見)で怖くなってやめました。 Sakura VPS 上2つと比べるとそこまで安いわけではないですが、一番まともな雰囲気を感じました(個人の感想)(妥協) ということで Sakura VPS を選びました(本当は他にもVPSはいろいろありますが、ここで調べて消耗するのが嫌だったので2, 3個でやめました)。 Sakura VPS を10年ぶりぐらいに触ったのですが、コントロールパネルがだいぶ改修されていて感動しました。 ドメイン取得 面倒だから Sakura からドメイン取得もすれば良いかな〜と思っていましたが、同じドメインでも Google Domains に比べて Sakura の方が2倍近く価格が高かったので流石にそれは厳しい気持ちになり、Google Domains を使うことにしました。 ところで Google Domains でドメインを取得すると、そのドメインで Google Workspace を始められるっぽくて、何か新しい事業を始めたい場合はこれを使うとめちゃくちゃ便利なのでは…?となりました。...

November 22, 2022 · 2 min · 400 words · tatsukawa