微積分と物理/積分
のバックアップソース(No.11)
Unity学習帳2冊目
微積分と物理
/
積分
のバックアップソース(No.11)
[
トップ
] [
差分
|
バックアップ
|
リロード
] [
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
[ ]
差分
を表示
現在との差分
を表示
微積分と物理/積分
へ行く。
« Prev
Next »
#contents #jsmath **積分とは何か? [#v7a2ab49] &font(150%){''積分とは? = 面積を求める計算''&br;}; 「積算」とは一般的に数値を次々と加えていく計算を指す。&font(120%){\(5+3+8+10=26\)}; このような計算を「積算」と呼ぶ 積分は細かくいくつにも分割した領域の面積を積算する計算技術を指す **区分求積法 [#s289f866] #jsmath 区分求積法とは、読んで字の如く「区分」に分けた領域を「求める」「積算」です。この様な計算法を総称して&font(Red){積分};と呼びます 区分求積法は積分の考えのベースになっています 面積を求める事によってどのような事が可能となるのでしょうか? 日常でも、ある目的地に向かって車でドライブする時、その目的地までの距離を想像する場合、無意識に面積の計算を我々はしています たとえば車の平均時速が \(40\)km/h だったとして目的地が \(5\)h 時間かかる場所だったとすると \(40\)km/h \(\times 5\)h\(=200\)km という長方形の面積の計算を無意識にしている事になります グラフにすると以下のようになります &ref(integral1.png); このように &font(Red){''速度と時間のグラフの面積を求める事で距離の値が得られる''}; 事が判りました では、もしこの速度のグラフが正方形ではなく自由な形、極端に言えば曲線で曲がっていたり、ぐにゃぐにゃとした線を描く関数のグラフだった場合 どのようにすれば、その面積(距離)が求められるでしょうか?そこで積分という計算テクニックが重要になってきます 例えばアクセルべた踏みで加速していく車があったとします。この車にはブレーキが無く永遠に加速していくとして この加速する度合い、加速度\(a\)が \(9.8\) m/sだったとした時(\(a=9.8\))、速度\(v\)の関数式は、\(v=9.8t\) m/sとなります この車の\(4\)秒後の位置を知る必要があるとして、これをグラフで図にすると以下になります &ref(integral2.png); この赤い領域の面積を求めれば、この速度の関数から4秒後の車の位置が得られそうです。面積の形を見ると直角三角形なので簡単に求められます 4秒後の車の位置は\(\displaystyle \frac { 底辺\times 高さ }{ 2 } =\frac { 4\times 9.8\times 4 }{ 2 } =78.4\) mとなります 積分必要ないですね・・・今回はたまたま直角三角形の面積を求める事で解決できましたが、これが曲線が混じったグラフの場合、このやり方は通用しません つまりグラフの形よって公式が変化してしまう(先ほどは長方形、今回は三角形でした)ので、どんな状況でも対応できる「一般的な数式」とは言えません 例えば以下のようなグラフの場合、途端に対応できなくなります &ref(integral3.png); ここでより「一般的な数式」どんな状況でも対応できる「区分求積法」が必要になってきます 区分求積法とは、冒頭でも説明したように「区分」に分けた領域を「積算」して「求める」計算です つまりグラフ図にするとこうなっています &ref(integral4.png); この例では1秒毎に4秒まで4区分に分けて面積を計算し、それらを積算で足し合わせて総面積を求めています わかりやすく今回は4区分にしていますが、この区分数は自由に増やす事が出来ます。区分数を増やしていくと・・・ はみ出した領域がどんどん小さくなります &ref(integral5.png); すると区分数を増やすほど最初に三角形で求めた正確な面積の値に近づいていく事がわかります この計算は性質的に近似を求める計算になるのですが、必要数、計算を増やせば精度を向上させる事が可能です では、この区分求積法を人類の公用語である数学の数式にします この一連の計算を数式として表す為に幾つか数学的な表記や文法を知る必要があります ①積分する対象を関数で表す「\(f(x)\)」 ②微細な区分を表す「Δ(デルタ)」 ③積算を表す「\(\sum\)(シグマ)」 ④極限を表す「\(\lim\)」 この4つを利用して区分求積法を数式化します。まず分かりやすく①②③を適用して unityにコーディング後、計算動作を確認してから④を導入して積分の数学的な性質を確認します ***関数 [#bb9c345d] #jsmath <数学の関数> &font(Red){&font(130%){\(y\)が\(x\)において1通りに決まる時、\(y\)は\(x\)の関数 \(y=f(x)\) と表せる。引数と返値の関係は常に\(1:1\)};}; &ref(integral6.png); これを今までの速度の関数 \(v=9.8t\) に当てはめると、vはtの関数 \(v=f(t)=9.8t\) となります C#において関数は汎用的に制御処理(ステートメント)が扱えるものになっていますが それに比べて数学においての関数は非常に機能が制限されています(引数がひとつ、返値もひとつ、ステートメントは数式のみ) このような仕組みを採用している理由は数学の関数が微積分によって導関数や原始関数に書き換える事が出来たり(後述) あるルールに従って複数の関数を組み合わせ新しい関数を作ったり出来ることに起因しています 数学では計算操作によって関数のステートメント自体を状況や要求に合わせた形に変化させる事が可能になっています 式を変形させ整合性を保つには等号で結ばれた未知数を指す変数と値が1:1で対応している必要があります (LINQ等で利用されている式木というものを使えばプログラムでも数式やステートメントを書き換える事ができますが今はちょっと置いておきます) そういう意味でC#で扱う関数と数学の関数は同じ名前でも、少し違うものだと思っていて良いかもしれません <補足> ちなみに数学でもベクトルやマトリックスは複数要素持っていても、ひとつと数えます ***Δ(デルタ) [#q1cc3de6] 変数 dt が細かく微細になればなるほど計算精度が向上していく事が以下のコードで確認できる。理想は値が極限である事 #code(csharp){{ using UnityEngine; using System.Collections; using System; public class Sum2 : MonoBehaviour { void Start () { print (Integral (4f, 0.01f, Gravity)); print (Integral (0.5f * Mathf.PI, 0.01f, Sin)); } float Integral (float t, float dt, Func<float,float> f) { float parts = t / dt; float sum = 0; for (int n = 1; n <= parts; n++) { sum += f (dt * n) * dt; } return sum; } float Gravity (float t) { return 9.8f * t; } float Sin (float t) { return Mathf.Sin (t); } } }} **極限[#vac7435d] **積算とΣ(シグマ) [#aa635f1a] ** "" [#fe880850] #jsmath \(\displaystyle\lim _{ \Delta t\rightarrow 0 }{ \int { 9.8 } t dt } \quad \quad \rightarrow \quad \quad \lim _{ \Delta t\rightarrow 0 }{ 9.8{ \left( \Delta t \right) }^{ 2 }\sum _{ n=1 }^{ \frac { t }{ \Delta t } }{ n } } \quad \quad \rightarrow \quad \quad \lim _{ \Delta t\rightarrow 0 }{ 9.8{ \left( \Delta t \right) }^{ 2 }\left\{ \frac { \left( 1+\frac { t }{ \Delta t } \right) \frac { t }{ \Delta t } }{ 2 } \right\} \quad } \) \(\displaystyle \rightarrow \quad \quad \lim _{ \Delta t\rightarrow 0 }{ 4.9{ \left( \Delta t \right) }^{ 2 }\left( \frac { t }{ \Delta t } +\frac { { t }^{ 2 } }{ { \left( \Delta t \right) }^{ 2 } } \right) } \quad \quad \rightarrow \quad \quad \lim _{ \Delta t\rightarrow 0 }{ 4.9{ \Delta t\cdot t }+4.9{ t }^{ 2 } } \quad \quad \rightarrow \quad \quad 4.9{ t }^{ 2 }\) #navi
« Prev
Next »
微積分と物理/積分 のバックアップ一覧
微積分と物理/積分 のバックアップソース(No. All)
1: 2015-04-17 (金) 22:32:41
osinko
2: 2015-04-18 (土) 01:30:02
osinko
3: 2015-04-18 (土) 02:09:25
osinko
4: 2015-04-19 (日) 21:05:27
osinko
5: 2015-04-20 (月) 02:26:33
osinko
6: 2015-04-21 (火) 20:17:04
osinko
7: 2015-04-21 (火) 20:47:45
osinko
8: 2015-04-22 (水) 01:31:16
osinko
9: 2015-04-22 (水) 16:49:02
osinko
10: 2015-04-23 (木) 03:50:31
osinko
11: 2015-04-23 (木) 11:25:23
osinko
現: 2015-04-26 (日) 00:36:29
osinko