O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

数理解析道場

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
数値解析と物理学
数値解析と物理学
Carregando em…3
×

Confira estes a seguir

1 de 42 Anúncio

Mais Conteúdo rRelacionado

Semelhante a 数理解析道場 (20)

Mais recentes (20)

Anúncio

数理解析道場

  1. 1. 微分方程式で遊ぼう 米倉崇晃 米倉班 東京大学・院・理 生体制御研究室 「植物の周期と変調」第3回若手WS 数理解析道場
  2. 2. 本日の資料 本日のシミュレーション演習 本日は、Google Colabを使ってシミュレーションを体験します。 https://drive.google.com/drive/folders/1ClWcrwwMBMgWDd- RhSDzR1bQgkGPOHGo?usp=sharing
  3. 3. Take Home Message 本日の目標 数理モデルは難しくない。 微分方程式を通して、数理モデルと計算機シミュレーションの 構造を見てみよう。 振動を生み出す仕組みに触れてみよう。 Mathematical model is not difficult. Let’s observe the structure of mathematical model and computer simulation. How does the oscillation generate?
  4. 4. Take Home Message 数理モデルに対する、僕のスタンス あまり「数学」に興味はない。 あまり「現象」の背後の理論に興味はない。 「現象」の背後にある機構を知りたい。 その手段として「数理モデル」がある。 ※過信もダメ。形態学、発生学、生理学、遺伝学を蔑ろにしていいわけ では絶対にない。よほど強い結論が得られない限り、あくまでも「有力 な証拠の一つ」にとどめるべき。 I’m not interested in “mathematics”. I’m not interested in the theory underlies on the phenomena. I’m not interested in the mechanisms. Mathematical modellings are one of the approaches of them.
  5. 5. Take Home Message 数理モデル、要る? 私の研究に数理モデル要らないけど……。 直観があれば生物学の研究はできます! I don’t need the mathematical models…. The intuition is sufficients….
  6. 6. Take Home Message 直観力を計る問題 問題 タンパク質A 濃度依存的に分解 タンパク質A前駆体 修飾酵素F 増える 増える 増える 増える 変わらない 変わらない 変わらない 減る 減る 減る 変わらない 減る 増える 変わらない 減る 増える 変わらない 減る タンパク質A前駆体 タンパク質A ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ 酵素Fは、タンパク質A前駆体と結合してタンパク質Aを 成熟させる効果を持つ。 この修飾酵素Fの働きが低下したとき、タンパク質A前駆 体の濃度、タンパク質Aの濃度はそれぞれ修飾酵素Fが十 分量ある場合と比べてどうなるか。 ※ただし、反応は平衡に達しているものとする。
  7. 7. Take Home Message 直観力を計る問題 問題 増える 増える 増える 増える 変わらない 変わらない 変わらない 減る 減る 減る 変わらない 減る 増える 変わらない 減る 増える 変わらない 減る タンパク質A前駆体 タンパク質A ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ タンパク質A 濃度依存的に分解 酵素Fは、タンパク質A前駆体と結合してタンパク質Aを 成熟させる効果を持つ。 この修飾酵素Fの働きが低下したとき、タンパク質A前駆 体の濃度、タンパク質Aの濃度はそれぞれ修飾酵素Fが十 分量ある場合と比べてどうなるか。 ※ただし、反応は平衡に達しているものとする。 タンパク質A前駆体 修飾酵素F
  8. 8. Take Home Message そもそも、数理モデル、要る? 数理モデルは、生物学者の直観をサポート、検証する ツールとして有用。 実験困難な事象に対して、思いもよらなかった現象が見 つかるかもしれない。 今回は、微分方程式に焦点を当てつつ、 数理モデルに触れたい。 Mathematical modelling are useful to support or to verify our intuitions…. Mathematical modelling may support to find new phenomena. Today I focus on “Differential Equation”
  9. 9. (1) 微分方程式 大抵は微分方程式を押さえておけばOK! 𝑑𝑋𝑖 𝑑𝑡 = 𝑓𝑖(𝑋1, 𝑋2, 𝑋3, … … , 𝑋𝑛) 常微分方程式 (遺伝子発現変動や化学反応) 𝑑𝒙𝑖 𝑑𝑡 = 𝜕𝑈 𝜕𝒙𝑖 セルバーテックスモデル (細胞の動力学) 𝜕𝒗 𝜕𝑡 = − 1 𝜌 + 𝜈∇2 𝒗 − 𝒗 ∙ ∇ 𝒗 + 𝒈 ナビエストークス方程式 (維管束内の流れ) ∇ ∙ 𝒗 = 0 これ、全部微分方程式 𝜕𝜙 𝜕𝑡 + 𝛁𝜙 ∙ 𝒖 = 𝐹 フェイズフィールドモデル (膜の動力学) Every equations I show are differential equations.
  10. 10. (1) 微分方程式 微分方程式は変化を示す 𝑑𝑋 𝑑𝑡 = 𝑓(𝑋) 微分方程式のかたち 𝑋 分解 タンパク質Xの量がxだったとき、 Xの増減する速度はf(x)である。 式の意味 decomposition The velocity of the amount change of x is f(x).
  11. 11. (1) 微分方程式 微分方程式は変化を示す 𝑑𝑋 𝑑𝑡 = 𝑘 − γ𝑋 微分方程式のかたち 𝑋 分解 decomposition
  12. 12. (1) 微分方程式 微分方程式は解けることもあるけど…… 𝑑𝑋 𝑑𝑡 = 𝑘 − γ𝑋 これは数学ができるなら解析的に(つまり厳密に)解ける。 න 𝑑𝑋 𝑘 − γ𝑋 = න 𝑑𝑡 න 𝑑𝑋 𝑘 − γ𝑋 = 1 γ න 𝑑𝑋 𝑘 γ − 𝑋 = − 1 γ l𝑛 𝑘 γ − 𝑋 + 𝐶1 න 𝑑𝑡 = 𝑡 + 𝐶2 − 1 γ l𝑛 𝑘 γ − 𝑋 + 𝐶1 = 𝑡 + 𝐶2 𝑘 γ − 𝑋 = 𝑋0𝑒−γ𝑡 𝑋 = 𝑘 γ ± 𝑋0𝑒−γ𝑡 𝑘 γ 𝑡
  13. 13. (1) 微分方程式 別に解を知る必要はない 𝑑𝑋 𝑑𝑡 = 𝑘 − γ𝑋 微分方程式のかたち 𝑋 分 解 𝑋 𝑑𝑋 𝑑𝑡 𝑘 𝑘 γ 𝑋は時間とともに 𝑘 γ に収束する。 𝑑𝑋 𝑑𝑡 = 0 で収束! 𝑋 is converged into 𝑘 γ .
  14. 14. (1) 微分方程式 一因子なら、挙動は式から予想できる 𝑑𝑋 𝑑𝑡 = 微分方程式のかたち 𝑋 分 解 𝑋 𝑑𝑋 𝑑𝑡 平衡点 安定 不安定 複雑だけどXのみに依存する式 stable unstable Equillibrium point
  15. 15. (1) 微分方程式 直観力を計る問題 問題 増える 増える 増える 増える 変わらない 変わらない 変わらない 減る 減る 減る 変わらない 減る 増える 変わらない 減る 増える 変わらない 減る タンパク質A前駆体 タンパク質A ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ タンパク質A 濃度依存的に分解 酵素Fは、タンパク質A前駆体と結合してタンパク質Aを 成熟させる効果を持つ。 この修飾酵素Fの働きが低下したとき、タンパク質A前駆 体の濃度、タンパク質Aの濃度はそれぞれ修飾酵素Fが十 分量ある場合と比べてどうなるか。 ※ただし、反応は平衡に達しているものとする。 タンパク質A前駆体 修飾酵素F
  16. 16. (1) 微分方程式 微分方程式を理解した上での解説 タンパク質A タンパク質A前駆体 修飾酵素F 𝐴𝑝𝑟𝑒 𝐴 ℎ 𝑔 𝐴 𝑓 𝐴𝑝𝑟𝑒 𝑑𝐴𝑝𝑟𝑒 𝑑𝑡 = ℎ − 𝑓 𝐴𝑝𝑟𝑒 𝑑𝐴 𝑑𝑡 = 𝑓 𝐴𝑝𝑟𝑒 − 𝑔 𝐴 通常状態 𝐴 = 𝑔−1 ℎ 𝐴𝑝𝑟𝑒 𝑓 𝐴𝑝𝑟𝑒 ℎ 𝑓−1 ℎ 平衡に達しているので、 𝑑𝐴𝑝𝑟𝑒 𝑑𝑡 = 𝑑𝐴 𝑑𝑡 = 0 つまり、𝐴𝑝𝑟𝑒 = 𝑓−1 ℎ
  17. 17. 1 2 𝑓 𝐴𝑝𝑟𝑒 (1) 微分方程式 微分方程式を理解した上での解説 タンパク質A タンパク質A前駆体 修飾酵素F 𝐴𝑝𝑟𝑒 𝐴 ℎ 𝑔 𝐴 𝑑𝐴𝑝𝑟𝑒 𝑑𝑡 = ℎ − 1 2 𝑓 𝐴𝑝𝑟𝑒 𝑑𝐴 𝑑𝑡 = 1 2 𝑓 𝐴𝑝𝑟𝑒 − 𝑔 𝐴 Fの酵素活性が半分の時 平衡に達しているので、 𝑑𝐴𝑝𝑟𝑒 𝑑𝑡 = 𝑑𝐴 𝑑𝑡 = 0 つまり、𝐴𝑝𝑟𝑒 = 𝑓−1 2ℎ 𝐴 = 𝑔−1 ℎ 𝐴𝑝𝑟𝑒 𝑓 𝐴𝑝𝑟𝑒 ℎ 𝑓−1 ℎ 2ℎ 𝑓−1 2ℎ 正解は②
  18. 18. (1) 微分方程式 別に解を知る必要はない 𝑑𝑋 𝑑𝑡 = 微分方程式のかたち 𝑋 分 解 𝑋 𝑑𝑋 𝑑𝑡 𝑋の濃度だけでは振動しえない 複雑だけどXのみに依存する式 Depending only on X concentration is not sufficient for generating oscillation.
  19. 19. (1) 微分方程式 別に解を知る必要はない 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑘 − γ𝑋 𝑡 − τ もし時間遅れがあったら……? 𝑋 分 解 𝑋 𝑑𝑋 𝑑𝑡 𝑘 𝑘 γ 𝑋は 𝑘 γ を中心に振動しそうだ How about the case with delay?
  20. 20. (2) シミュレーションで遊ぼう オイラー法で微分方程式のシミュレーション 時間方向の離散化 𝑡 𝑢 𝑑𝑢 𝑑𝑡 = 𝑓 𝑢 厳密解 𝑢 = 𝑢0 + න 𝑡0 𝑡 𝑓 𝑢 𝑑𝑡
  21. 21. (2) シミュレーションで遊ぼう オイラー法で微分方程式のシミュレーション 𝑑𝑢 𝑑𝑡 = 𝑓 𝑢 時間方向の離散化 𝑡 𝑢 数値解 𝑢𝑘+1 = 𝑢𝑘 + 𝑓 𝑢𝑘 ∆𝑡 ある時間の𝑢の変化量は一定と近似する。 ∆𝑡 ∆𝑡 ∆𝑡 ∆𝑡 区間内の変化速度は、 区間の開始時点のもの を使うと楽々計算でき る(オイラー法) The change is constant within the timestep. Euler method: the velocity depends on the u at the start point.
  22. 22. (2) シミュレーションで遊ぼう オイラー法で微分方程式のシミュレーション 𝑑𝑢 𝑑𝑡 = 𝑓 𝑢 時間方向の離散化 𝑢 数値解 𝑢𝑘+1 = 𝑢𝑘 + 𝑓 𝑢𝑘 ∆𝑡 ∆𝑡を小さくすればどんどん厳密解に近づく。 𝑡 Small ∆𝑡 realize the reproduction of exact solution.
  23. 23. (2) シミュレーションで遊ぼう オイラー法の別の書き方 𝑑𝑢 𝑑𝑡 = 𝑓 𝑢 元の微分方程式 離散化 𝑢𝑇 = 𝑢0 + න 𝑡0 𝑇 𝑓 𝑢 𝑑𝑡 lim Δ𝑡→0 Δ𝑢 Δ𝑡 = 𝑓 𝑢 Δ𝑢 ≈ 𝑓 𝑢 Δ𝑡 𝑢𝑇 ≈ 𝑢0 + ෍ 𝑡=𝑡𝑜 𝑡=𝑇−1 𝑓 𝑢𝑡 Δ𝑡
  24. 24. (2) シミュレーションで遊ぼう シミュレーションで遊ぶ! 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑘 − γ𝑋 𝑡 𝑋 分 解
  25. 25. (2) シミュレーションで遊ぼう シミュレーションの構成 ライブラリのインポート パラメータの設定 繰り返し計算 図示 𝑑𝑢 𝑑𝑡 = 𝑓 𝑢 𝑡 𝑢 ∆𝑡 ∆𝑡 ∆𝑡 ∆𝑡 Import library Parameter settings Repeating calculations Drawing Graphics.
  26. 26. (2) シミュレーションで遊ぼう シミュレーションの基本 import numpy as np %matplotlib inline import matplotlib.pyplot as plt まずはライブラリのインポート ライブラリは色々便利な関数を、簡単・高速に利用できる。 numpy:配列処理・数式処理のスペシャリスト matplotlib :グラフ描画のスペシャリスト
  27. 27. (2) シミュレーションで遊ぼう シミュレーションの準備 n = 1000 # ステップ数 dt = 0.01 # tの刻み幅 k = 1.0 γ = 1.0 # γ の値 # 初期条件 x0 = 0.1 # t, x の値を格納するリスト t_list = [] x_list = [] # t = 0 では x = x0 t = 0.0 x = x0 𝑋 𝑡 x0 0.0
  28. 28. (2) シミュレーションで遊ぼう 繰り返しちょっとずつ計算 𝑋 𝑡 x0 # 初期値を格納する。 t_list.append(t) x_list.append(x) # Euler 法を用いた時間発展。 for i in range(n): f = k - γ * x x = x + f * dt t = t + dt # 計算した x, t を格納する。 t_list.append(t) x_list.append(x) 𝑡 𝑥 0.00 0.01 0.02 0.10 0.11 0.13
  29. 29. (2) シミュレーションで遊ぼう グラフの描画 # グラフに結果を描画する。 plt.plot(t_list, x_list, label='simulation') plt.xlabel('t') plt.ylabel('x') # 凡例を表示する。 plt.legend(loc='best') 𝑡 𝑥 0.00 0.01 0.02 0.10 0.11 0.13
  30. 30. (2) シミュレーションで遊ぼう シミュレーションで遊ぶ! 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑘 − γ𝑋 𝑡 − τ もし時間遅れがあったら……? 𝑋 分 解 # 時間遅れがある場合 # --略-- tdelay_step = 151 # 時間遅れの大きさ # --略-- for i in range(n): if t >= tdelay_step*dt: f = k - γ * x_list[-tdelay_step] # 右辺を予め計算する。 else: f = k # 右辺を予め計算する。 x = x + f * dt # Euler 法を用いた時間発展 t = t + dt # 時刻をdtだけ進める。 How about the case with delay?
  31. 31. (2) シミュレーションで遊ぼう シミュレーションで遊ぶ! 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑘 − γ𝑋 𝑡 − τ 𝑋 分 解 もし時間遅れがあったら……? How about the case with delay?
  32. 32. (2) シミュレーションで遊ぼう シミュレーションで遊ぶ! 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑘 − γ𝑋 𝑡 − τ 𝑋 分 解 tdelay_step = 101 tdelay_step = 201 もし時間遅れがあったら……? How about the case with delay?
  33. 33. (3)時間リズムを生み出す微分方程式 概日時計-時間周期を生み出す微分方程式 𝑑𝑇 𝑑𝑡 = 𝑘𝑈𝑇 𝑆 𝑈 + 𝑘𝐷𝑇 𝑆 𝐷 − 𝑘𝑇𝑈 𝑆 𝑇 − 𝑘𝑇𝐷 𝑆 𝑇 𝑑𝐷 𝑑𝑡 = 𝑘𝑇𝐷 𝑆 𝑇 + 𝑘𝑆𝐷 𝑆 𝑆 − 𝑘𝐷𝑇 𝑆 𝐷 − 𝑘𝐷𝑆 𝑆 𝐷 𝑑𝑆 𝑑𝑡 = 𝑘𝑈𝑆 𝑆 𝑈 + 𝑘𝐷𝑆 𝑆 𝐷 − 𝑘𝑆𝑈 𝑆 𝑆 − 𝑘𝑆𝐷 𝑆 𝑆 Rust et al., 2007. KaiC KaiC KaiC KaiC U→T D(ST)→T T→D T→U U S ST T KaiA 𝑘𝑋𝑌 𝑆 = 𝑘𝑋𝑌 0 + 𝑘𝑋𝑌 𝐴 𝐴 𝑆 𝐾1/2 + 𝐴(𝑆) 𝐴 𝑆 = max 0, 𝑘𝑎𝑖𝐴 − 2𝑆
  34. 34. (3) 時間リズムを生み出す微分方程式 ごく単純な場合で考えてみよう 𝑑𝑋(𝑡) 𝑑𝑡 = −γ𝑋 𝑡 + 𝑌 𝑡 𝑑𝑌(𝑡) 𝑑𝑡 = −𝑋 𝑡 + γ𝑌 𝑡 𝑋 分 解 𝑌
  35. 35. (3) 時間リズムを生み出す微分方程式 ごく単純な場合で考えてみよう 𝑑𝑋(𝑡) 𝑑𝑡 = −γ𝑋 𝑡 + 𝑌 𝑡 𝑋 分 解 𝑑𝑌(𝑡) 𝑑𝑡 = −𝑋 𝑡 + γ𝑌 𝑡 𝑌 𝑋だけの微分方程式にしてみよう。 方針: 𝑑𝑌(𝑡) 𝑑𝑡 = −𝑋 𝑡 + γ𝑌 𝑡 の式を使って、𝑌(𝑡)を𝑋で表し、 𝑑𝑋(𝑡) 𝑑𝑡 の式に代入したい。 唐突な演習: 𝒅𝒀(𝒕) 𝒅𝒕 = −𝑿 𝒕 + 𝜸𝒀 𝒕 を𝒀について解け。 ヒント:①移項して ②両辺に何か掛けて ③両辺積分する。
  36. 36. (3) 時間リズムを生み出す微分方程式 演習問題の答え 𝑑𝑌(𝑡) 𝑑𝑡 = −𝑋 𝑡 + γ𝑌 𝑡 𝑒−γ𝑡 𝑑𝑌(𝑡) 𝑑𝑡 − γ𝑌 𝑡 𝑒−γ𝑡 = −𝑋 𝑡 𝑒−γ𝑡 𝑑 𝑑𝑡 𝑌 𝑡 𝑒−γ𝑡 = −𝑋 𝑡 𝑒−γ𝑡 𝑌 𝑡 = 𝑌0 − 𝑒γ𝑡 න 0 𝑡 𝑋 𝑢 𝑒−γ𝑢𝑑𝑢 移項する。Transpose 𝑌 𝑡 𝑒−γ𝑡 = − න𝑋 𝑡 𝑒−γ𝑡 𝑑𝑡 𝑑𝑌(𝑡) 𝑑𝑡 − γ𝑌 𝑡 = −𝑋 𝑡 両辺に𝑒−γ𝑡を掛ける。 Multiply 𝑡で積分する。 Integrate 𝑋 分 解 𝑌
  37. 37. (3) 時間リズムを生み出す微分方程式 要素を跨ぐと時間遅れが出てくる 𝑑𝑋(𝑡) 𝑑𝑡 = −γ𝑋 𝑡 + 𝑌 𝑡 𝑋 分 解 𝑑𝑋(𝑡) 𝑑𝑡 = 𝑌0 − γ𝑋 𝑡 − 𝑒γ𝑡 න 0 𝑡 𝑋 𝑢 𝑒−γ𝑢 𝑑𝑢 𝑌 𝑡 = 𝑌0 − 𝑒γ𝑡 න 0 𝑡 𝑋 𝑢 𝑒−γ𝑢 𝑑𝑢 𝑋の時間変化には過去の𝑋が関わる 要素を挟んだ フィードバック The change of 𝑋 depends on the past 𝑋.
  38. 38. (3) 時間リズムを生み出す微分方程式 時間周期は遅れが生み出す 𝑋 分 解 要素を挟んだ フィードバック 究極的にはこれ Rust et al., 2007. KaiC KaiC KaiC KaiC U S ST T KaiA
  39. 39. (3) 時間リズムを生み出す微分方程式 概日時計-時間周期を生み出す微分方程式 𝑑𝑇 𝑑𝑡 = 𝑘𝑈𝑇 𝑆 𝑈 + 𝑘𝐷𝑇 𝑆 𝐷 − 𝑘𝑇𝑈 𝑆 𝑇 − 𝑘𝑇𝐷 𝑆 𝑇 𝑑𝐷 𝑑𝑡 = 𝑘𝑇𝐷 𝑆 𝑇 + 𝑘𝑆𝐷 𝑆 𝑆 − 𝑘𝐷𝑇 𝑆 𝐷 − 𝑘𝐷𝑆 𝑆 𝐷 𝑑𝑆 𝑑𝑡 = 𝑘𝑈𝑆 𝑆 𝑈 + 𝑘𝐷𝑆 𝑆 𝐷 − 𝑘𝑆𝑈 𝑆 𝑆 − 𝑘𝑆𝐷 𝑆 𝑆 Rust et al., 2007. KaiC KaiC KaiC KaiC U→T D(ST)→T T→D T→U U S ST T KaiA 𝑘𝑋𝑌 𝑆 = 𝑘𝑋𝑌 0 + 𝑘𝑋𝑌 𝐴 𝐴 𝑆 𝐾1/2 + 𝐴(𝑆) 𝐴 𝑆 = max 0, 𝑘𝑎𝑖𝐴 − 2𝑆
  40. 40. (3) 時間リズムを生み出す微分方程式 概日時計-時間周期を生み出す微分方程式 KaiC KaiC KaiC KaiC U S ST T KaiA 𝑘𝑎𝑖𝐶 = 2 𝑘𝑎𝑖𝐶 = 3.4
  41. 41. Take Home Message 数理モデル、要る? 数理モデル、研究に使えるじゃん! 数理が分かれば直観が研ぎ澄まされるね! Mathematical modelling is useful for me! Mathematical modelling is support our intuition!
  42. 42. 本日の資料 本日の資料 ▪ https://sites.google .com/view/tyonekura/slides 本日の講習会で用いるスライドは、以下のURLから閲覧できま す(著作権の絡む図は存在しません)。 本日は、Google Colabを使ってシミュレーションを体験します。

×