微積分と物理​/微分2 のバックアップ差分(No.5)

Unity学習帳2冊目微積分と物理 / 微分2 のバックアップ差分(No.5)
« Prev  Next »
4: 2015-06-13 (土) 16:55:09 osinko ソース 5: 2015-06-14 (日) 00:09:02 osinko ソース
Line 67: Line 67:
累乗根や対数など計算機に任せられる部分があるなら積分して位置の関数から値を計算する方が良い 累乗根や対数など計算機に任せられる部分があるなら積分して位置の関数から値を計算する方が良い
-・・もう少しゲーム制作技術に役立ちそうな具体的な例を考えてみる+・・もう少し具体的な例を考えてみる
**物理的な値を求める漸化式を作ってみる [#xb9cf616] **物理的な値を求める漸化式を作ってみる [#xb9cf616]
 +#jsmath
 +思考実験として物理的な値を求める漸化式を作る
-思考実験として物理的な値を求める漸化式を作る。+<問題> 
 +&font(150%){速度\(v=9.8t\) で移動する物体がある。この物体が700m先の位置を通過する時間を知りたい}; 
 + 
 +この問題を解くため微分積分にあてはめると \(v=9.8t\) を形式的積分の式である  \(a{ x }^{ n }\quad \mapsto \quad a\frac { 1 }{ n+1 } { x }^{ n+1 }\)  に通すと 
 +\(v=9.8{ t }^{ 1 }\quad \mapsto \quad y=9.8\frac { 1 }{ 1+1 } { x }^{ 1+1 }\quad \rightarrow \quad y=4.9{ t }^{ 2 }\) となる 
 +\(y=4.9{t}^{2}\) は距離の関数なので\(y=700\)との連立方程式を解けばよい 
 + 
 +\(\begin{cases} y=4.9{ t }^{ 2 } \\ y=700 \end{cases}\quad \rightarrow \quad 4.9{ t }^{ 2 }=700\quad \rightarrow \quad { t }=\sqrt { \frac { 700 }{ 4.9 }  } =11.952...\)・・・① 
 + 
 +11.952秒後に通り過ぎる。この計算をする時、電卓に\(\sqrt { }\)キーや\(\log {  } \)キーがない。対数表も持ってない 
 +「&font(Red){微積分が無限、極限回数の計算を繰り返してたどり着く答えを得ている事を実感できない};」時は以下のようにする 
 + 
 +\(f'(a)=\lim _{ b\rightarrow a }{ \frac { f(b)-f(a) }{ b-a }  } \quad \mapsto \quad 9.8{ t }_{ 0 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 4.9{ t }_{ 0 }^{ 2 }-700 }{ { t }_{ 0 }-{ t }_{ 1 } }  } \) 
 + 
 +\(9.8{ t }_{ 0 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 4.9{ t }_{ 0 }^{ 2 }-700 }{ { t }_{ 0 }-{ t }_{ 1 } }  } \quad \rightarrow \quad 9.8{ t }_{ 0 }\left( { t }_{ 0 }-{ t }_{ 1 } \right) =\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ 4.9{ t }_{ 0 }^{ 2 }-700 } \quad \rightarrow \quad 9.8{ t }_{ 0 }^{ 2 }-9.8{ t }_{ 0 }\cdot { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ 4.9{ t }_{ 0 }^{ 2 }-700 } \\ \) 
 + 
 +\(\rightarrow \quad -9.8{ t }_{ 0 }\cdot { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ -4.9{ t }_{ 0 }^{ 2 }-700 } \quad \rightarrow \quad 9.8{ t }_{ 0 }\cdot { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ 4.9{ t }_{ 0 }^{ 2 }+700 } \quad \rightarrow \quad { t }_{ 0 }\cdot { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 4.9 }{ 9.8 } { t }_{ 0 }^{ 2 }+\frac { 700 }{ 9.8 }  } \\ \) 
 + 
 +\(\rightarrow \quad { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 4.9 }{ 9.8 } { t }_{ 0 }+\frac { 700 }{ 9.8{ t }_{ 0 } }  } \quad \rightarrow \quad { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 1 }{ 2 } { t }_{ 0 }+\frac { 700 }{ 9.8{ t }_{ 0 } }  } \quad \rightarrow \quad { t }_{ 1 }=\lim _{ { t }_{ 0 } \rightarrow { t }_{ 1 } }{ \frac { 1 }{ 2 } \left( { t }_{ 0 }+\frac { 700 }{ 4.9{ t }_{ 0 } }  \right)  } \\ \) 
 + 
 +\(\rightarrow \quad { t }_{ n+1 }=\frac { 1 }{ 2 } \left( { t }_{ n }+\frac { 700 }{ 4.9{ t }_{ n } }  \right) \\ \)・・・② 
 + 
 +この最期の漸化式をコードにすると以下になる 
 +#code(csharp){{ 
 +using UnityEngine; 
 +using System.Collections; 
 + 
 +public class Numbers6 : MonoBehaviour 
 +
 +    void Start () 
 +    { 
 +     float t0 = 15f; 
 +     float c = 700f; 
 + 
 +     float t1 = 0; 
 + 
 +     for (int i = 0; i < 5000; i++) { 
 +     t0 = (1f / 2f) * (t0 + (c / (4.9f * t0))); 
 +     t1 = t0; 
 +     } 
 +     print (t0); 
 +    } 
 +
 +}} 
 + 
 +おわかり頂けただろうか。t0の値はどんな値を入れても良い。このコードでは5000回計算を繰り返しているが、微分も積分も無限回数この計算を繰り返している事になる。その答えは必ず、\(11.952...\)へと収束する。微分積分はこの仕組みを利用してコンパクトに値を求めているらしい
#navi #navi
« Prev  Next »


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