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
数値シミュレーション / Python Simulation
プログラミング基礎同演習
kaityo256
PRO
December 15, 2020
More Decks by kaityo256
See All by kaityo256
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
6
1.2k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
この講義について / 00-setup
kaityo256
PRO
2
370
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
2
290
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
500
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
1
300
演習:GitHubの基本操作 / 06-github-basic
kaityo256
PRO
1
340
バージョン管理とは / 01-a-vcs
kaityo256
PRO
1
330
Gitの仕組みと用語 / 01-b-term
kaityo256
PRO
1
380
Other Decks in Education
See All in Education
事業紹介資料(トレーナー養成講座)
kentaro1981
0
350
SARA Annual Report 2025-26
sara2023
1
340
プロポーザルを書く技術とアンチパターン/proposal-writing-and-antipatterns
moriyuya
12
2.8k
0506
cbtlibrary
0
150
Course Review - Lecture 13 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
2.3k
면접관 눈에 띄는 데이터 분석 포트폴리오 만드는 법 | 2026년 5월 세미나
datarian
0
270
コミュニティを通じた_キャリア設計のススメ_20260424.pdf
masakiokuda
0
270
Referendum Costituzionale Giustizia
nostradalmine
0
140
2026年度春学期 統計学 第3回 クロス集計と感度・特異度,データの可視化 (2026. 4. 23)
akiraasano
PRO
0
120
Data Physicalisation - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
980
Populism, Post-Liberalism & Climate Change
vyadav
0
160
Gitがない時代 インターネットがない時代の 開発話
sapi_kawahara
0
120
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Odyssey Design
rkendrick25
PRO
2
620
How to build a perfect <img>
jonoalderson
1
5.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
120
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The World Runs on Bad Software
bkeepers
PRO
72
12k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
790
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の時間微分が
こんな式で与えられている を評価できたら次のステップの値が + = + で計算できる あとは初期条件から次々と「次の時刻の状態」を 計算することで系の時間発展を計算できる アニメーションを作ってみる