Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
数値シミュレーション / Python Simulation
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kaityo256
PRO
December 15, 2020
Education
3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
数値シミュレーション / Python Simulation
プログラミング基礎同演習
kaityo256
PRO
December 15, 2020
More Decks by kaityo256
See All by kaityo256
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
6
1.3k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.7k
この講義について / 00-setup
kaityo256
PRO
2
400
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
2
320
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
540
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
1
310
演習:GitHubの基本操作 / 06-github-basic
kaityo256
PRO
1
380
バージョン管理とは / 01-a-vcs
kaityo256
PRO
1
360
Gitの仕組みと用語 / 01-b-term
kaityo256
PRO
1
430
Other Decks in Education
See All in Education
吉祥寺.pmは1つじゃない — 複数イベント並走運営の12年 —
magnolia
0
1.3k
Science Tokyo国際卓越研究大学計画_202604
sciencetokyo
PRO
0
4.1k
Catecismo 26 #2 - Do Credo; Introdução ao 1º artigo
cm_manaus
0
120
参加制約理論
roadofhope
0
110
AIには考えられないことを考えられる人になるために
iqbocchi
1
150
Data Physicalisation - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
1k
Info Session MSc Computer Science & MSc Applied Informatics
signer
PRO
0
290
生成AI時代のエンジニア育成について考えてみた
akasan
0
140
면접관 눈에 띄는 데이터 분석 포트폴리오 만드는 법 | 2026년 5월 세미나
datarian
0
670
プログラミング言語において文字列を複数行にわたって だらだらと記載するアレ
sapi_kawahara
0
160
Course Review - Lecture 13 - Information Visualisation (4019538FNR)
signer
PRO
1
2.6k
アラムコSTEAMチャレンジ 実践報告書
codeforeveryone
0
140
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
How STYLIGHT went responsive
nonsquared
100
6.2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Bash Introduction
62gerente
615
220k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
Into the Great Unknown - MozCon
thekraken
41
2.6k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Skip the Path - Find Your Career Trail
mkilby
1
150
Transcript
1 1 数値シミュレーション プログラミング基礎同演習 慶應義塾大学理工学部物理情報工学科 渡辺 2020/12/15
2 2 数値シミュレーション • 差分化 • 弾道計算 • 反応拡散方程式
3 3 あるルールに従う系の振舞を 再現・予想すること それをコンピュータ上でやるのがコンピュータシミュレーション
4 4 訓練のためのシミュレーション フライトシミュレータ ドライブシミュレータ 娯楽のためのシミュレーション シミュレーションゲーム (戦略、経営等) ロールプレイングゲーム 予測のためのシミュレーション
天気予報・自動車の設計・創薬
5 5 物理とは 我々が住むこの世界を理解・記述する学問 この世界のルール この世界は微分方程式で記述されている これを支配方程式(Governing Equation)と呼ぶ
6 6 古典的な物体の運動を記述する = ∙ = , ∙ = 0
× = − , × − = ニュートンの運動方程式 = 1 + 流体の流れを記述する ナビエ・ストークス方程式 電場や磁場の振る舞いを記述する マクスウェル方程式 例:天体の運動、弾道計算 例:天気予報 例:スマートフォンの開発等
7 7 = 2 2 拡散方程式 物質やエネルギーなどが広がって (拡散して)いく様子を表現する方程式
8 8 = 2 2 拡散方程式 温度の時間変化を表す ある点での温度が上がるか下がるか? あがるならどれくらい上がるか?
9 9 = 2 2 拡散方程式 ある地点での二階微分の値 = () 2
2 > 0 2 2 < 0 下に凸なら正 = () 上に凸なら負
10 10 = 2 2 拡散方程式 まわりの平均との差を表す 下に凸=自分は平均より低い 平均 平均
上に凸=自分は平均より高い
11 11 拡散方程式 まわりを見て 自分が平均以下なら増えようとする 自分が平均以上なら減ろうとする 自分 自分は平均より低い 平均 =
2 2
12 12 支配方程式 = 知りたい現象を記述する微分方程式 これを解けば未来がわかる ほとんどの微分方程式は厳密に解くことができない 数値的に近似解を求める コンピュータシミュレーション
13 13 コンピュータは 離散的値しか扱えない この世界は連続的 計算機が扱えるように連続的な値をとびとびの値にすることを離散化と呼ぶ
14 14 = − 2 2 離散化には空間の離散化と時間の離散化がある 時間 空間
15 15 空間の離散化 時間の離散化 拡大するとピクセルに 静止画像を高速コマ送り 我々が計算機を通して目にするものは離散化されている
16 16 連続的な世界 離散的な世界 この領域全体の物理量を この点での値で代表させる
17 17 微分を差分で近似すること(離散化の一種) + ℎ = + ℎ′ + ℎ2
テイラー展開を一次まで考える 二次以上を無視する ≈ + ℎ − () ℎ ′ について解く 微分が差分で近似された
18 18 O Time t () 時刻tにおける傾き O Time t
() ≈ + −() t+dt 時間変化=現在と少し未来の差
19 19 + ℎ = + ℎ′ + ℎ2 2
′′() テイラー展開を二次まで考える − ℎ = − ℎ′ + ℎ2 2 ′′() 2 2 ≈ + ℎ − 2 + ( − ℎ) ℎ2 ′ を消去 二次の中央差分 二階微分
20 20 = − 2 2 ある場所の時間変化量は まわりの平均との差をへらそうとする この地点での次のステップでの値を 周りの値をみて決める
上記の操作をすべての地点について繰り返すと 次のステップ(少し未来)での「世界」がわかる 「ステップ」を繰り返せば、遠い未来の世界がわかる
21 O x y 地面から投げた場合は45度の角度が最も遠くに飛ぶ ※空気抵抗は無視する
22 O x y 少し高いところから投げた場合、 最も遠くに飛ぶ角度は45度より 上向きになる? 下向きになる?
23 高いところから投げた場合、 初速が速くなると最も遠くに 飛ぶ角度は・・・ 上向きになる? 下向きになる? 物理において「極限」を考えるのは基本
24 24 Belousov-Zhabotinsky (BZ) 反応 いくつかの溶液を混ぜる 色が周期的に変わっていく 周期的な化学反応が拡散と組み合わさると?
25 周期的な化学反応が拡散と組み合わさると 不思議な模様が生まれる 化学反応と拡散を表現する方程式 反応拡散方程式 拡散反応方程式が生み出す模様 チューリング・パターン
26 26 二種類の化学物質uとvがお互いに反応しながら拡散する式 = ∆ − 2 + (1 −
) = ∆ + 2 − + 拡散 反応 Gray-Scott Model
27 = ∆ − 2 + (1 − ) uの時間微分が
こんな式で与えられている を評価できたら次のステップの値が + = + で計算できる しかし を計算するには を計算しなければならない ∆
28 連続的な世界 離散的な世界 (, ) u[m][n] 連続な2変数関数を 2次元のリストで近似する
29 = ∆ − 2 + (1 − ) 座標(m,n)地点での計算
u[m][n]+v[m][n]**2 ここはそのまま計算できる 問題はここ ※ 実際にはNumPyで配列全部まとめて計算する
30 は中央差分で近似する ∆ + + + + ≈ -4 二次元ラプラシアンの中央差分
自分のセルの上下左右を足して、 自分の4倍を引く =まわりの平均との差(の4倍) =
31 = ∆ − 2 + (1 − ) uの時間微分が
こんな式で与えられている を評価できたら次のステップの値が + = + で計算できる あとは初期条件から次々と「次の時刻の状態」を 計算することで系の時間発展を計算できる アニメーションを作ってみる