1: 2015-06-11 (木) 16:11:50 osinko |
2: 2015-06-11 (木) 19:06:06 osinko |
| TITLE:微分2 | | TITLE:微分2 |
| **微分を利用して漸化式を作る例 [#rc60f063] | | **微分を利用して漸化式を作る例 [#rc60f063] |
| + | #jsmath |
| ここでは微分連立方程式を利用して望む値を求める漸化式を作る方法を考えてみる | | ここでは微分連立方程式を利用して望む値を求める漸化式を作る方法を考えてみる |
| | | |
| ***4乗根の実数値を求める漸化式を作る [#f58e44d4] | | ***4乗根の実数値を求める漸化式を作る [#f58e44d4] |
| | | |
- | 4次方程式の関数のグラフは以下のようになる。2次方程式の放物線のグラフと似ているが若干頂点付近の曲線が潰れたような形になる | + | \({ x }^{ 4 }-C\)のような4次方程式の関数のグラフは以下のようになる。このグラフの\(C\)には\(10\)を代入している。この式のグラフは2次方程式の放物線のグラフと似ているが若干頂点付近の曲線が潰れたような形になっている |
| + | |
| + | |
| + | グラフの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\)を表しているので漸化式が正常に機能している事がわかる |
| + | |
| + | memo: |
| + | ある特定の横x縦yのグラフがあったとして、ある関数が描くグラフのyの位置時のxの値を知りたい時に |
| + | 導関数と微分の式で連立方程式を組んで逆算できる。つまりyになるであろうxを速度(導関数)から逆算して計算できる |
| + | |
| + | ただ、計算機で計算するなら元の関数(元の関数は導関数を積分したものだから)から逆算した方が早い |
| + | 位置の関数があって、位置の値から時間を求めたいなら位置の関数を利用する方がやりやすい |
| + | もし手元に速度の関数しかないなら、それを積分して位置の関数にして逆算した方が早い |
| + | |
| + | 漸化式のメリットは「直接計算できる」という部分?根号や対数など計算機に任せられる部分があるなら |
| + | 位置の関数から値を計算する方が良いという考え方もある? |
| + | |
| + | #navi |