オンライン数学勉強会用イントロ¶
はじめに¶
まとめ¶
- 勉強会の案内ページ
- コンテンツの案内ページ
- GitHub へのリンク
- 目次の順序で進める
- 時間が余ったら適当に今回出てきた数学またはプログラミングの話を詳しく
事前準備:sympy インストールとチェック¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 |
|
$$x^{2} - 12 x + 8$$
はじめの注意¶
- 吃音があるので聞きにくいと思います。
- 言いにくい場合は文字で書きます。
- いろいろ試験的な取り組みです。
- この資料はあとで配ります。
大方針¶
- Python でプログラミング
- 将来に向けたいろいろなテストを兼ねる
- 中高生または中高数学復習用に作ったコンテンツのテスト・流用
- 試験的に Google Colabolratory を利用
- いま使っている「これ」
- ローカルの環境構築がいらない
- TeX の形式を使うと式もきれいに書ける:$$\int_\Omega f(x) \, dx$$
- 何回くらい・どのくらいの期間になるかは不明
- なるべくゆっくり・ゆるく進める
- 日々いろいろなタスクがある大人向けの勉強会なのでゴリゴリにやると疲れ果てて続かない
- その代わり長期戦でのんびりやる
- 予習はやりたければやる
- 無理がない範囲で、長続きさせることを第一に
- 復習は勉強会の中でやる
- その分ペースも遅くなる
- その遅さが気になるなら予習をしよう
- 復習を自力でやれるくらいならはじめから独学できていると思う
勉強のコツ¶
- 「すぐに理解する・できる」という幻想を捨てる
- 同じことを何度も繰り返して、少しずつ慣れる
- 究極的には「独学」が必要
- そのサポートをするのがこの勉強会の目的
- 細部が詳しい本はたくさんあり、いろいろなレベルの本がたくさんある
- この勉強会の当面の主目的は概要を掴むこと
- 細かいことが気になったら都度調べるなり質問するなりしてもらう
- そしてすぐにわからなくても気にしない
進め方の方針¶
- 細かいことはさておき, プログラミングでできることをゴリゴリ紹介する
- まずはお絵描き中心:微分方程式を解く
- 後の内容も「中高数学のネタを視覚化する」方向で進める。
- 微分方程式に関して
- 高校数学の最終目的地の微分・積分に直結する
- 微分・積分は統計学をはじめとしたその他いろいろな応用でも主力
- 離散化すれば四則演算でしかないので微分・積分をダイレクトに数値計算する形で進める
- 今回、イメージづくりで波動方程式・拡散方程式を見せる
- 波と拡散というイメージと視覚がマッチした対象だから
- まずは概要を掴むのが目的なので本質的な数学部分が難しくなるのは気にしない
- 何をするにも慣れが必要なので, とにかく浴びて慣れてもらうのが目的
- お絵描き+数値計算で Python プログラミングの気分を掴む
- 少しずつプログラムの詳細を見ていく
- 暴力的な量の四則演算を進めるだけなので「数学」の話は最低限に留めながら進める
- ある程度慣れてきた段階でプログラムと並行して数学の話をする
基礎コンテンツの紹介¶
- 中高数学をプログラミングを軸にまとめた。
- この講座ではプログラミング、特に Python については深くは解説しない
- 必要ならその時々の新しい本で勉強すること。
- 古い本を選んでしまうと、最新の環境でその本に書かれたプログラムが動かない可能性がある。
講座の構成¶
- 数学に関わる Python の基礎
- 重要なライブラリ numpy のまとめ
- 重要なライブラリ matplotlib のまとめ
- 重要なライブラリ sympy のまとめ
- 上記ライブラリを使った数学プログラミングのまとめ
- 線型代数:ベクトルと行列
- 微分積分
- 確率
- 統計
- 常微分方程式
- 偏微分方程式
大まかな説明¶
- 最初の第 1 章:Python を使ってどんなことができるかを説明
- 特に Python 自体の基本的な機能とライブラリの使い方を説明
- 必要なコードは各箇所に書かれているので、ここは飛ばしてすぐに本編に進んでも問題ない
- 線型代数以降の各章から、数学・プログラミングが混然一体になった本編がはじまる。
- 常微分方程式の章を先に読んでみるのもおすすめします。
- 次の無料講座を Jupyter の形式にまとめ直したコンテンツ
- 応用からの中高数学再入門 自然を再現しよう 中高数学駆け込み寺
- この講座の前段ともいえる講座で、応用の視点から中高数学の大事な部分を大掴みに説明
- 上記リンク先の登録ページ自体も勉強の参考になるはず。
- 「大事なことは何度でも」の精神
注意・当面の進めるイメージ¶
- 下の 2 つを先にざっと眺める
- 既に無料講座として公開している常微分方程式の章を少しずつ詳しく進める
- 微分積分をやる
環境構築¶
Google Colab¶
- いわゆる gmail のアカウントがあれば使える。
- 「google colaboratory」でググってトップに出てくるページを開けば開くはず
- 公式のチュートリアルもあるので、それを見よう
Python のインストール¶
- インストールのことを「環境構築」とも呼ぶことにする
- 将来の対応を考えて、勉強会では Google Colaboratory で進めてみる
- ローカル(自分の PC)にインストールしたいなら、適当にやる
- 経験上、「素人」の状態で環境構築は本当に大変
- プログラミング・環境構築に慣れていない状態で数学と絡めた環境構築がしたいなら、Anaconda でインストールするのが楽
- Google Colab 前提なのでこれ以上詳しくは触れない
- 本格的にプログラミングするならローカルに環境を作るのは必須
本題:数学とアニメーション¶
定積分のアニメーション¶
- 定積分はグラフが囲む領域の面積
- いわゆる区分求積法:次のように定義する
\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}
- 右辺に注目する
- $\frac{1}{n}$ は単なる割り算
- $\sum_{k=0}^{n-1}$ は $n$ 項足しているだけ
- $\lim$ は $n$ をどんどん大きくしている
- 数値計算でやること
- 十分大きな $n$ で右辺を計算する
- だいたい面積が近似できることを確認する
アニメーション用の基本関数¶
- 次の関数でいろいろやっている:今回詳しくは触れない
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
底辺と高さ 1 の直角三角形の面積¶
- 底辺×高さ / 2 = 1/2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 |
|
参照用¶
\begin{align} \int_0^1 f(x) dx &= \lim_{n \to \infty} \frac{1}{n} \sum_{k=0}^{n-1} f \left( \frac{k}{n} \right), \ n = 2 &\Rightarrow \frac{1}{2} \left(f\left(\frac02\right) + f\left(\frac12\right)\right) \ n = 3 &\Rightarrow \frac{1}{3} \left(f\left(\frac03\right) + f\left(\frac13\right) + f\left(\frac23\right)\right) \end{align}
二次関数¶
- $x^2$ を $[0,2]$ で積分
- 面積は $\int_0^2 x^2 dx = 8/3 = 2.6666...$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 |
|
定積分の大雑把なまとめ¶
- どんどん細かくしていくと、細かさに応じて近似がよくなる。
- 近似を上げていった最果てで厳密な値が得られるとみなす。
- 視覚的に確認すると定義の意図が見えやすくなる
- 定義の意図がわかっていないとプログラムを書くのも難しい
1 次元の波動方程式¶
- ひもの左端を揺らしたときのひもの振動(波)の様子を見る
- 波が右端まで行くと反射するところも見られる
偏微分方程式としての波動方程式¶
\begin{align} u_{tt} = c^2 u_{xx}, \quad \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}. \end{align}
- ここで $c$ は定数で物理的には波の速度。
- 物理だとこれをどうやって導出するかも問われる。
- ここではそうした議論はせず、とにかく数値的に解いてみて波を表している様子を眺める
\begin{align} \frac{\partial u}{\partial t} &= \lim_{\Delta t \to 0}\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \ &\simeq \frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} \end{align}
\begin{align} \frac{\partial^2 u}{\partial t^2} = \frac{\partial}{\partial t} \frac{\partial u}{\partial t}= \frac{u_t(t+\Delta t,x) - u_t(t,x)}{\Delta t} &\simeq \frac{\frac{u(t + \Delta t, x) - u(t,x)}{\Delta t} - \frac{u(t , x) - u(t- \Delta t,x)}{\Delta t}}{\Delta t} \end{align}
最終的に計算する式¶
\begin{align} u(t + \Delta t, x ) = 2 u(t,x) - u(t - \Delta t, x) + \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x) - 2 u(t,x) + u(t, x - \Delta x) \right). \end{align}
- 次の時刻 $t + \Delta t$ の値を計算するのに現在時刻 $t$ とひとつ前の時刻 $t - \Delta t$ の値を使っている。
- 最終的には四則演算だけ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
1 |
|
1 次元の拡散方程式¶
- 真ん中に置いておいた物質が周囲に拡散していく様子を見る
偏微分方程式としての拡散方程式¶
\begin{align} \frac{\partial u}{\partial t}= \nu \frac{\partial^2 u}{\partial x^2}. \end{align}
最終的に計算する式¶
\begin{align} u(t+ \Delta t, x) = u(t, x) + \nu \frac{\Delta t}{(\Delta x)^2} (u(t, x + \Delta x) - 2u(t,x) + u(t, x - \Delta x)). \end{align}
- これも四則演算だけ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
2 次元の波動方程式¶
- イメージとしては膜の振動
- 真ん中を振動させてその波の伝播を見る
偏微分方程式としての波動方程式¶
\begin{align} u_{tt} = c^2 (u_{xx} + u_{yy}). \end{align}
- ここで $c$ は定数で物理的には波の速度
- 1 次元のときとの違いは $u_{yy}$ の追加
- 物理的には次元に依存する議論もあってそれほど簡単ではない
最終的に計算する式¶
\begin{align} &u(t + \Delta t, x, y) \ &= 2 u(t,x,y) - u(t - \Delta t, x, y) \ \quad &+ \left(\frac{c \Delta t}{\Delta x}\right)^2 \left(u(t, x + \Delta x,y) - 2 u(t,x,y) + u(t, x - \Delta x,y) \right) \ \quad &+ \left(\frac{c \Delta t}{\Delta y}\right)^2 \left(u(t, x,y + \Delta y) - 2 u(t,x,y) + u(t, x,y - \Delta y) \right) \ \end{align}
- 右辺の時刻は $t$ と $t - \Delta t$、つまり過去の時刻しか出てこない
- 過去の時間での情報さえわかれば未来の挙動がわかる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
微分方程式の大雑把なまとめ¶
- (いろいろな都合によって)物理では無限に細かいところで方程式を立てている
- そのままでは計算機に計算させられない
- 微分係数・導関数を定義によって有限化:差と商にわける。
- 有限に落とした部分は無限に細かくしていけば元の微分係数・導関数を近似できていると期待する
次回以降¶
- 常微分方程式のところをのんびり進める
- まずは微分方程式で何ができるのかをのんびり
- 微分方程式で記述できる現象を説明したあと、近似計算の数理を追う
- プログラムに落とし込む工夫を見る
- 数値計算プログラムを大雑把に眺める
- 講座・コンテンツ本体を眺める
質疑応答¶
- 今の時点での目標が何かとか
- こんな感じで進めてほしいとか
- こんなネタを扱ってほしいとか
要望メモ¶
- 小さな課題が欲しい。
- 成功体験を積もう。
- 予習の範囲を出す。
- 式とグラフの対応。いろいろお絵描きしてみる。どうやってプログラムに落とすか確認する。
アンケート¶
毎回アンケートを取っています. 質問や要望がある場合もこちらにどうぞ.
アンケートは匿名なので気楽にコメントしてください. 直接返事してほしいことがあれば, メールなど適当な手段で連絡してください.