2017年8月19日 (土)

魚の模様の出来る仕組み

魚の模様の出来る仕組みについて、何年か前にサイエンス Zero で見たことがあったのですが、その仕組みがどうだったか忘れていました。録画していたわけでもないので、再度確認出来ずにいたのですが、先日、その番組を見ることが出来ました。今度は忘れないように、ここにメモしておきます。

Tatejimakinchakudai

その番組では、タテジマ・キンチャクダイの縞模様について説明が有りました。タテジマ・キンチャクダイは、体が成長すると縞模様の本数が増えて縞の間隔が一定に保たれます。その仕組みは、色素の活性化因子と抑制因子によって説明出来ます。


まず、縞模様の形成は次のようになっています。

  1. 細胞は色素の活性化因子を生成する。
  2. その活性化因子は細胞に更に活性化因子を生成するよう働きかける。
  3. 活性化因子は細胞に抑制因子も生成するよう働きかける。(活性化因子が無いと抑制因子は生成されない)
  4. 2 種類の因子は周りの細胞に拡散する。
  5. その拡散速度は抑制因子の方が速い。
  6. 着色された細胞から少し離れた所は抑制因子の方が多くなり、着色されない。

このようにして出来た縞模様は、身体の成長により間隔が広がります。すると、着色された細胞からある程度離れた個所には抑制因子が届かず、その箇所の細胞が着色されます。こうして、身体が成長しても縞の間隔が一定に保たれるという訳です。

活性化因子 抑制因子 A B C

図を用いて説明します。細胞 A と C は着色されているとします。それらから発生した抑制因子が活性化因子より早く色素細胞 B に到達すると B は着色されません。これにより、縞が形成されます。そして、 A と C の間隔が広がり、抑制因子が B に到達しなくなると、 B の生成する活性化因子により B は着色され、その結果、縞の間隔が一定に保たれることになります。

実は、2 種類の因子で模様を形成する仕組みは、チューリングによって方程式が与えられています。それが次式です。
\[ \left\{ \begin{aligned} \frac{\mathrm{d}{X_r}}{\mathrm{d}{t}}&=f(X_r,Y_r)+\mu(X_{r+1}-2X_r+X_{r-1})\\ \frac{\mathrm{d}{Y_r}}{\mathrm{d}{t}}&=g(X_r,Y_r)+\nu(Y_{r+1}-2Y_r+Y_{r-1}) \end{aligned} \right. \] \(X, Y\) がそれぞれ活性化因子と抑制因子です。添え字 \(r\) は細胞を示す番号です。 \(f, g\) などを具体的に決めて計算すると、縞模様の形成の様子をシミュレートすることが出来ます。

ところで、上記方程式は 1 次元についてしか言っていないように思うのですが、これで 2 次元もカバー出来ているのが不思議です。

番組では、縞模様の形成の他にも、肺の形成や細胞性粘菌の集団の振る舞いなどが紹介されていましたが、ここでは省略します。

魚の模様の出来る仕組みについて、目がテンでも放送されたことが有るようです。 目がテン!ライブラリー 生き物(模様)の科学 に解説が掲載されています。

2017年2月26日 (日)

プレイルートに曲線を導入

LongDriver のプレイルートで曲線を使用できるようにしました。曲線は2次のベジェ曲線(放物線)です。プレイルートのノードにフォーカスが当たっている時にメニュー [Each][Curve/Straight] をクリックするとフォーカスの当たっていたノードがベジェ曲線の制御点になるような曲線が描画されます。下記サンプルで4番の選手の2つ目のノードが制御点になっています(画像下側の選手マーク4番を繰り返しクリックするとノードが順次表示されます)。制御点のノードにフォーカスを当てて再度 [Each][Curve/Straight] をクリックすると通常の直線に戻ります。

曲線化とプレイ図のエンコードはすんなり出来たのですが、デコードで暴走させてしまいました。デコードの関数内に曲線用のルーチンを追加したところ、プレイ図コードのスキャン位置が合わなくなり、それが原因で暴走しました。ルーチンを追加したくらいで暴走するようなプログラムを書いていてはダメですね。

ところで、ブレイクポイントを設定してデバッグしていた時に気付いたのですが、「var foo;」のような変数宣言にはブレイクポイントを設定できないのですね。これは、最初に構文解析したら、その後の実行では変数宣言はスキャンしないということでしょうか? 今まで、このような変数宣言はループの外に記述していたのですが、実行中にスキャンしないのなら、ループの内側に記述しても効率は落ちないことになります。


    var foo;		// ループの内側↓に入れても効率は落ちない?
    for (・・・){
        var bar;
        ・・・
    }

ちなみに、最近の JavaScript では var よりも let の方が良いとか言われていますが、馴染みが薄いので、今回は let は使っていません。

なお、LongDriver を読み込む時、ブラウザによってはキャッシュのせいで古い LongDriver を実行することがあるようです。 Chrome では、再読み込みをしてもキャッシュが効いていてダメでした。新しい LongDriver を実行するには、 Chrome の再読み込みマークを右クリックして「ハード再読み込み」を実行する必要がありました。

2017年2月19日 (日)

光に質量を与えたい -2-

超伝導体内で光が質量を獲得する仕組みを知りたくて、インターネット上の資料を幾つか当たってみたのですが、未だ納得できるレベルに至っていません。取り敢えず、解った所をまとめておきます。

光の質量の獲得は秩序変数 \(\Delta\) に対する現象論(ギンツブルグ・ランダウ理論)として記述できます。秩序変数とは相転移を特徴付ける量で、考察の対象に応じて選択されます(秩序変数の超伝導相転移を参照)。この秩序変数を用いて、電磁場が無い時のラグランジアン密度は臨界点近傍で \[ \mathscr{L}=\Delta^*i\partial_t\Delta-\frac{1}{2m}\nabla\Delta^*\cdot\nabla\Delta +b|\Delta|^2+c|\Delta|^4 \tag{1} \] と表されます。ここに \(m\) はクーパー対の質量です。

(1) 式の微分を次のような共変微分に置き換えることで電磁場を導入します。 \[ \begin{eqnarray} \nabla \rightarrow \boldsymbol{D} = \nabla - i\tilde{e}\boldsymbol{A} \tag{2}\\ \partial_t \rightarrow D_t = \partial_t - i\tilde{e}\phi \tag{3} \end{eqnarray} \] すなわち、ラグランジアン密度は (4) 式になります。 \[ \begin{align} \mathscr{L} =& \Delta^*iD_t\Delta - \frac{1}{2m}\boldsymbol{D}\Delta^*\cdot\boldsymbol{D}\Delta\\ & + b|\Delta|^2 + c|\Delta|^4 + \mathscr{L}_\mathrm{em} \tag{4} \end{align} \] ここに \(\mathscr{L}_\mathrm{em}\) は電磁場のラグランジアン密度です。

\(\Delta = |\Delta|e^{i\theta}\) とおき、簡単のため \(|\Delta|\) が時間依存しないとします。そして \[ \begin{eqnarray} \tilde{\boldsymbol{A}} = \boldsymbol{A} - \frac{\nabla\theta}{\tilde{e}} \tag{5}\\ \tilde{\phi} = \phi - \frac{\partial_t\theta}{\tilde{e}} \tag{6} \end{eqnarray} \] を用いると、ラグランジアン密度は \[ \mathscr{L} = \tilde{e}|\Delta|^2\tilde{\phi} - \frac{\tilde{e}^2|\Delta|^2}{2m}\tilde{\boldsymbol{A}}^2 + \mathscr{L}_\mathrm{em} \tag{7} \] となります。このラグランジアン密度より \(\tilde{\boldsymbol{A}}\) の運動方程式は、 \(M=(\tilde{e}^2|\Delta|^2/(2m))^{1/2}\) とおいて、 \[ (\Box + M^2)\tilde{\boldsymbol{A}} = 0 \tag{8} \] となります。ただし、ローレンツゲージ \(\partial_\mu\tilde{A}^\mu = 0\) を仮定しました。 (8) 式は光子 \(\tilde{A}\) が質量 \(M\) を持っていることを表しています。

(1) 式から出発して光子が質量を獲得することが解った訳ですが、超伝導体のラグランジアン密度が (1) 式になることが理解できていません。 BCS の平均場理論によるとハミルトニアン \(H_\mathrm{mf}\) は \[ \begin{align} H_\mathrm{mf} =& -\mu c_i^\dagger c_i + c_i^\dagger t_{ij}c_j\\ & + \frac{1}{2}\langle c_i^\dagger c_j^\dagger\rangle V_{ijkl}c_k c_l + \frac{1}{2}c_i^\dagger c_j^\dagger V_{ijkl}\langle c_k c_l\rangle\\ & - \frac{1}{2}\langle c_i^\dagger c_j^\dagger\rangle V_{ijkl}\langle c_k c_l\rangle \tag{9} \end{align} \] で、 \(\Delta_{ij} = V_{ijkl}\langle c_k c_l\rangle\) が秩序変数になるのですが、これからラグランジアン密度 (1) 式の導き方が判りません。一般的にラグランジアン \(L\) とハミルトニアン \(H\) の間には \[ L = p\dot{q} - H \tag{10} \] の関係がありますが、これに (9) 式を適用するにはどうしたら良いのでしょうか。 (1) 式の質量 \(m\) は (9) 式ではどこに隠れているのでしょうか。

2016年12月 4日 (日)

光はとっくに質量を獲得していた

近接場光がきっかけで光が質量を獲得することに興味を持ち、光が質量を持つ模型という記事を見つけたことを、以前、当ブログの光に質量を与えたいで書きましたが、この「光が質量を持つ模型」よりもっと前から光は質量を獲得していたようです。その現象は超伝導体内部で発生しているそうです。超伝導体内部には光(電場も磁場も)は侵入できず、それは超伝導体内部で光が質量を獲得している表れであるということです。下記の記事に説明が有ります(PDF ファイル)。ただ、今ひとつ解った気になれませんけど。

質量の起源
対称性の自発的破れとヒッグス機構
南部理論と物性物理学

また、下記

ノート置き場

より「超伝導の基礎に関するノート」をクリックすると PDF 「超伝導の基礎に関するノート」がダウンロードされます。

超伝導体内部で光が質量を獲得する機構を、いづれ理解できたらまとめたいと思っています。

2016年11月26日 (土)

インターネットで見つけたプレイ図ソフト

アメリカンフットボールのプレイ図(プレイブック)ソフトを検索してみたところ、図のようなソフトを見つけました。アドレスは
http://footballtactics.net/playbook.html
です。

Pbsoft_alt

私のようなデザインのセンスの無い者の作った LongDriver よりも綺麗な絵になっています。

このソフトを扱っているメインページは
http://footballtactics.net/
で、サッカー用ソフトは完成しているようですが、アメリカンフットボール用は途中で止まっているのか、完成には至っていないようです。このサイトに掲載されている 「documentation」 はサッカー用なので注意が必要です。

さて、 LongDriver を、この footballtactics と比較すると次のような違いが有りました。

まず、footballtactics はデータや画像をローカルファイルに保存できるのに対して LongDriver は出来ません。方法が分からないので、画像の取得は PrtScr キーを使うという姑息な手段を使っています。

次に、 footballtactics はフィールドの向きを変えられるのに、 LongDriver は出来ません。当初、 LongDriver も変えられるようにする積りでいたのですが、気が向いたらやるということにして、未だ実装していません。

3つ目は、 footballtactics はプレイルートに曲線が使えるのに対して、 LongDriver は出来ません。これも当初は予定していたのですが LongDriver では未実装です。モチベーションが上がったら実装するかも知れません(追記2:モチベーションが上がったので曲線も表示できるようにしました)。

4つ目の違いは初期状態に関してです。 footballtactics の初期状態は選手が居ませんが、 LongDriver はデフォルトで基本的な(と思われる)フォーメーションに配置されます。それは、ゼロの状態から22人を配置するのは骨が折れるので、前もって配置しておいた方が良いだろうと考えたからです。

5つ目は、 footballtactics は単一のプレイ図しか扱えないのに対して、 LongDriver は複数のプレイ図を扱えます。これはビリヤードの配置図ソフト FlatTable からの流れとして当然の仕様です。因みに、複数のプレイ図を扱えることが LongDriver という名前の由来です。

6つ目の違いはデータの共有方法についてです。 footballtactics ではこのサイトがサーバーとなってデータを保管し、それをダウンロードすることでデータの共有を行っています。この方法だと、ブログではただの画像を表示するに止まるため、ブログのみで footballtactics のデータを再利用(共有)することは出来ません。そのため footballtactics ではサーバーを使ってデータ共有をサポートしているのだと思われます。それに対して LongDriver では、ブログに貼り付けたデータを利用できるようになっています。

そして最後に footballtactics は Flash で出来ているのに対して LongDriver は SVG+JavaScript で出来ている点が違います。 Flash はいつまで大丈夫なのでしょうか?

追記1:
6番目の項目のデータの共有は footballtactics のサッカー版では可能ですが、アメリカンフットボール版は未実装ではないかと思われます。

«SVG の変換行列(CTM)