微積分と物理​/積分 のバックアップの現在との差分(No.9)

Unity学習帳2冊目微積分と物理 / 積分 のバックアップの現在との差分(No.9)
« Prev  Next »
9: 2015-04-22 (水) 16:49:02 osinko ソース 現: 2015-04-26 (日) 00:36:29 osinko ソース
Line 41: Line 41:
わかりやすく今回は4区分にしていますが、この区分数は自由に増やす事が出来ます。区分数を増やしていくと・・・ わかりやすく今回は4区分にしていますが、この区分数は自由に増やす事が出来ます。区分数を増やしていくと・・・
はみ出した領域がどんどん小さくなります はみ出した領域がどんどん小さくなります
 +&ref(integral5.png);
すると区分数を増やすほど最初に三角形で求めた正確な面積の値に近づいていく事がわかります すると区分数を増やすほど最初に三角形で求めた正確な面積の値に近づいていく事がわかります
-この計算は性質的に近似を求める計算になるのですが、必要数、計算を増やせば精度を上げる事が可能です+この計算は性質的に近似を求める計算になるのですが、必要数、計算を増やせば精度を向上させる事が可能です
-では、この区分求積法を数式化します +では、この区分求積法を人類の公用語である数学の数式にします 
-この一連の計算を数式として表す為に幾つか数学的な表記や表現方法を知る必要があります+この一連の計算を数式として表す為に幾つか数学的な表記や文法を知る必要があります
①積分する対象を関数で表す「\(f(x)\)」 ①積分する対象を関数で表す「\(f(x)\)」
Line 54: Line 54:
この4つを利用して区分求積法を数式化します。まず分かりやすく①②③を適用して この4つを利用して区分求積法を数式化します。まず分かりやすく①②③を適用して
-unityにコーディング後、動作を確認してから④を導入して積分の数学的な性質を確認します+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]
 +#jsmath
 +「デルタ(Δ)」これは変化量を表現した記号。変数の前につけて、その変数の微小な変化や差分(difference)を表す
 +数学記号として「d」で表されることも多い。
 +たとえばA地点とB地点があって、その間の変化の量を表現する変数の先頭に付ける
 +&ref(17cabc1ac99783cb46b97843d047862f.jpeg);
 +この変化は、どんな型であっても良い。例えば「時間」であっても良いし「距離」であっても良い
 +時間なら一般的に\(Δt\)(tはtimeの略) 、距離なら\(Δh\)や\(Δx\)(hはheight、xはx軸)、ラジアンなら\(Δ\theta\)(θはsinやcos関数などで利用できるラジアン)等がある
 +(もしくは数式内で、\(dt\)、\(dh\)、\(dx\)、\(d\theta\) 等と表されることもある)
 +
 +unityにはTime.DeltaTimeという使用頻度の高いプロパティが存在しますが、この「Delta」は微小な変化量ですよ、という事を私たちに知らせている
 +もしコードを書くときに値に微小な変化量の意味を持たせたければ変数の名前の先頭にdやDeltaをつけると他人に理解しやすいコードになります
 +
 +区分求積法ではグラフに対して区分数が多いほど精度が向上する事が判っています
 +最終的には、その一区分の"横軸の長さ"を究極的に小さくする事が求められます
 +例えば \(f(t)=9.8t\) の区分求積法の場合一つの区分の面積は以下の図のように求められます
 +&ref(integral7.png);
 +グラフの横軸は時間 \(t\) によって定まりますが、\(Δt\) と書く事により読み手に(最終的には極限的な)微小な時間を対象としている事を伝えます
 +上記の図を例に考えると \(Δt=1\)、計算範囲を表す \(t=4\)。区分の総数は \(\frac { t }{ Δt } =\frac { 4 }{ 1 } =4\) 個となり
 +4番目の区分の面積は \(9.8\times Δt\times n\times Δt\quad \rightarrow \quad 9.8\times 1\times 4\times 1\quad =\quad 39.2\) となります
 +
 +***Σ(シグマ:総和) [#v224ec0d]
Line 100: Line 141:
**極限[#vac7435d] **極限[#vac7435d]
-**積算とΣ(シグマ) [#aa635f1a]+
« Prev  Next »


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom