微積分と物理/微分2
のバックアップソース(No.6)
Unity学習帳2冊目
微積分と物理
/
微分2
のバックアップソース(No.6)
[
トップ
] [
差分
|
バックアップ
|
リロード
] [
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
[ ]
差分
を表示
現在との差分
を表示
微積分と物理/微分2
へ行く。
« Prev
Next »
TITLE:微分2 **微分を利用して漸化式を作る例 [#rc60f063] #jsmath #contents ここでは微分連立方程式を利用して望む値を求める漸化式を作る方法を考えてみる ***4乗根の実数値を求める漸化式を作る [#f58e44d4] \({ x }^{ 4 }-C\)のような4次方程式の関数のグラフは以下のようになる。このグラフの\(C\)には\(10\)を代入している。この式のグラフは2次方程式の放物線のグラフと似ているが若干頂点付近の曲線が潰れたような形になっている &ref(srqt4_2.png); グラフのY軸\(0\)のヨコ線と、この4次方程式の描くグラフの交点が\(\sqrt [ 4 ]{ C }\)、つまり\({ C }^{ \frac { 1 }{ 4 } }\)となる \(\begin{cases} { y=f(x)=x }^{ 4 }-C \\ f'(a)=\lim _{ b\rightarrow a }{ \frac { f(b)-f(a) }{ b-a } } \\ f(a)=0 \end{cases}\) この式を\(b={x}_{0}\)、\(a={x}_{1}\)として定数から変数にして連立させてまとめると \(f'({ x }_{ 0 })=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ \frac { f({ x }_{ 0 })-0 }{ { x }_{ 0 }-{ x }_{ 1 } } } \) となり、これに関数を適用すると \(4{ x }_{ 0 }^{ 3 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ \frac { { x }_{ 0 }^{ 4 }-C-0 }{ { x }_{ 0 }-{ x }_{ 1 } } } \) になる。この式を変形させて漸化式にしていく \( \rightarrow \quad \quad 4{ x }_{ 0 }^{ 3 }({ x }_{ 0 }-{ x }_{ 1 })=\lim _{ { x }_{ 0 } \rightarrow { x }_{ 1 } }{ { x }_{ 0 }^{ 4 }-C } \\ \rightarrow \quad \quad 4{ x }_{ 0 }^{ 4 }-4{ x }_{ 0 }^{ 3 }\cdot { x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ { x }_{ 0 }^{ 4 }-C } \\ \rightarrow \quad \quad -4{ x }_{ 0 }^{ 3 }\cdot { x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ -3{ x }_{ 0 }^{ 4 }-C } \\ \rightarrow \quad \quad 4{ x }_{ 0 }^{ 3 }\cdot { x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ 3{ x }_{ 0 }^{ 4 }+C } \\ \rightarrow \quad \quad 4{ x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ \frac { 3{ x }_{ 0 }^{ 4 }+C }{ { x }_{ 0 }^{ 3 } } } \\ \rightarrow \quad \quad 4{ x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ 3{ x }_{ 0 }+\frac { C }{ { x }_{ 0 }^{ 3 } } } \\ \rightarrow \quad \quad { x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ \frac { 3 }{ 4 } { x }_{ 0 }+\frac { C }{ 4{ x }_{ 0 }^{ 3 } } } \\ \rightarrow \quad \quad { x }_{ 1 }=\lim _{ { x }_{ 0 }\rightarrow { x }_{ 1 } }{ \frac { 1 }{ 4 } \left( { 3x }_{ 0 }+\frac { C }{ { x }_{ 0 }^{ 3 } } \right) } \\ \rightarrow \quad \quad { x }_{ n+1 }=\frac { 1 }{ 4 } \left( { 3x }_{ n }+\frac { C }{ { x }_{ n }^{ 3 } } \right) \) これをC#のコードにすると以下になる(このコードではCに10を代入して4乗根を計算している) #code(csharp){{ using UnityEngine; using System.Collections; public class Numbers5 : MonoBehaviour { void Start () { float x0 = 3f; float c = 10f; float x1 = 0; for (int i = 0; i < 7; i++) { x1 = (1f / 4f) * ((3f * x0) + (c / Mathf.Pow (x0, 3f))); x0 = x1; } print (x1); } } }} 結果出力された値は 1.778279 となり、これは\(\sqrt [ 4 ]{ 10 } \simeq 1.778279\)を表しているので漸化式が正常に機能している事がわかる \(1.778279\times 1.778279\times 1.778279\times 1.778279\simeq 10\) memo: ある特定の横x縦yのグラフがあったとして、ある関数が描くグラフのyの位置時のxの値を知りたい時に 導関数と微分の式で連立方程式を組んで逆算できる。つまりyになるであろうxを導関数から逆算して計算できる 本来、計算機で計算するなら元の関数(元の関数は導関数を積分したものだから)から逆算した方が早い 物理的に考えるなら位置の関数があって、位置の値から時間を求めたいなら位置の関数を利用する方が手っ取り早い もし手元に速度の関数しかないなら、それを積分して位置の関数にして逆算する 微積分のメリットは例えるなら「速度の情報しかない時に位置を想定して時間を計算できる」という部分にある そこに、このような漸化式は「有限回の直接計算をして無限、極限回計算の近似を計算する」という機能を加える 漸化式の計算は複数回繰り返す必要があるので重い処理となる 累乗根や対数など計算機に任せられる部分があるなら積分して位置の関数から値を計算する方が良い ・・もう少し具体的な例を考えてみる **物理的な値を求める漸化式を作ってみる [#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
« Prev
Next »
微積分と物理/微分2 のバックアップ一覧
微積分と物理/微分2 のバックアップソース(No. All)
1: 2015-06-11 (木) 16:11:50
osinko
2: 2015-06-11 (木) 19:06:06
osinko
3: 2015-06-13 (土) 12:23:02
osinko
4: 2015-06-13 (土) 16:55:09
osinko
5: 2015-06-14 (日) 00:09:02
osinko
6: 2015-06-14 (日) 00:13:05
osinko
7: 2015-06-14 (日) 16:48:42
osinko
8: 2015-07-04 (土) 22:07:17
osinko
現: 2015-07-09 (木) 21:57:02
osinko