6: 2015-06-10 (水) 01:45:56 osinko |
現: 2015-06-10 (水) 23:24:58 osinko |
| | | |
| \(\displaystyle\ \frac { x+y }{ 2 } \ge \sqrt { xy } \quad \quad x,yは0以上の実数。x=yの時、等号が成立する\) | | \(\displaystyle\ \frac { x+y }{ 2 } \ge \sqrt { xy } \quad \quad x,yは0以上の実数。x=yの時、等号が成立する\) |
| + | |
| この関係は微分を利用して[[平方根を求める等の漸化式を作る際>微積分と物理/微分]]に非常に重要となる考え方な為、疑いもなく理解しておく必要がある | | この関係は微分を利用して[[平方根を求める等の漸化式を作る際>微積分と物理/微分]]に非常に重要となる考え方な為、疑いもなく理解しておく必要がある |
| 従って実際に、その関係が成立する事を検証して確かめておく | | 従って実際に、その関係が成立する事を検証して確かめておく |
| float a, b, left, right; | | float a, b, left, right; |
| bool success = true; | | bool success = true; |
| + | |
| for (int i = 0; i < 50; i++) { | | for (int i = 0; i < 50; i++) { |
| a = 0; | | a = 0; |
| } | | } |
| } | | } |
| + | |
| static void GenerateRandom (ref float a, ref float b) | | static void GenerateRandom (ref float a, ref float b) |
| { | | { |
| left = -2f * a * a + -2f * b * b; | | left = -2f * a * a + -2f * b * b; |
| right = -4f * a * b; | | right = -4f * a * b; |
- | print (string.Format ("a={0} : b={1} : {2} > {3}", a, b, left, right)); | + | print (string.Format ("a={0} : b={1} : {2} < {3}", a, b, left, right)); |
| if (!(left < right)) { | | if (!(left < right)) { |
| もしくは | | もしくは |
| left = -((a * a) + (b * b)) / 2; | | left = -((a * a) + (b * b)) / 2; |
| right = -a * b; | | right = -a * b; |
- | print (string.Format ("a={0} : b={1} : {2} > {3}", a, b, left, right)); | + | print (string.Format ("a={0} : b={1} : {2} < {3}", a, b, left, right)); |
| if (!(left < right)) { | | if (!(left < right)) { |
| | | |
| | | |
| ***⑧\(\frac { a+b }{ 2 } >\sqrt { ab } \quad \quad \quad aとbが0以外の実数である場合、この式は成立するか?\) [#x054ff76] | | ***⑧\(\frac { a+b }{ 2 } >\sqrt { ab } \quad \quad \quad aとbが0以外の実数である場合、この式は成立するか?\) [#x054ff76] |
| + | #jsmath |
| ここで式を少し書き換える。単純に\(a\)としていた文字を\(x\)に、\(b\)としていた文字を\(y\)にして&font(Red){"定数から変数を扱う式に切換える"}; | | ここで式を少し書き換える。単純に\(a\)としていた文字を\(x\)に、\(b\)としていた文字を\(y\)にして&font(Red){"定数から変数を扱う式に切換える"}; |
| (意味が解らなければ[[基礎/数学に関する暗黙と習慣]]を参照) | | (意味が解らなければ[[基礎/数学に関する暗黙と習慣]]を参照) |
| の部分で問題が発生している事に気が付く。原因は\(a,b\)の値と、右辺\(\sqrt { ab }\)の式にあった。この式を満たそうとする場合\(a,b\)の値はどちらも0以上の値にする必要がある。何故ならMathf.Sqrt関数は引数(パラメータ)がマイナス実数の場合、虚数として扱い計算結果にNaN(ヌル)を返す。これで計算が狂っていたのだ | | の部分で問題が発生している事に気が付く。原因は\(a,b\)の値と、右辺\(\sqrt { ab }\)の式にあった。この式を満たそうとする場合\(a,b\)の値はどちらも0以上の値にする必要がある。何故ならMathf.Sqrt関数は引数(パラメータ)がマイナス実数の場合、虚数として扱い計算結果にNaN(ヌル)を返す。これで計算が狂っていたのだ |
| | | |
- | つまり、入力は\(a\ge 0\)、\(b\ge 0\)にする必要が出てくる。式の変形により平方根の虚数を避けるために前提条件を変える必要が出てきた | + | <虚数が発生する一例> |
| + | Mathf.Sqrt ((-2 * 5)); → Mathf.Sqrt (-10); |
| + | |
| + | お互いを掛け合わせると-10になる値。2乗すると-10になる数。\(\sqrt { -10 } =?\) そんなものは、この世に存在しない。従って関数は「解なし」NaN(ヌル:からっぽのデータ)を返す。つまり、入力は\(a\ge 0\)、\(b\ge 0\)にする必要が出てくる。変数\(x,y\)に代入した定数が\(\sqrt { a },\sqrt { b }\)なのだから、これは発生して当然の不具合だったのだ。式の変形により平方根の虚数を避けるために前提条件を変える必要が出てきた |
| | | |
| memo:(機会が出てきたら調べる) | | memo:(機会が出てきたら調べる) |
| -不等号(<>)は虚数の振る舞いに対応しているの? | | -不等号(<>)は虚数の振る舞いに対応しているの? |
| | | |
- | *** [#h3207ab3] | + | ***⑨ \(\frac { a+b }{ 2 } \ge \sqrt { ab } \quad \quad \quad a\ge 0,b\ge 0の実数である場合、この式は成立するか?\) [#lb0342e2] |
| + | |
| + | これを確認してみる。条件を虚数を避ける様にする為、コードの18行目を以下に書き換える |
| + | if (!(left >= right)) { |
| + | それと31、32行目を以下に書き換える |
| + | a = Random.Range (0f, 100f); |
| + | b = Random.Range (0f, 100f); |
| + | |
| + | これを実行して結果、成立することが確認できる |
| + | |
| + | この章の冒頭にあった相加相乗平均の関係の数式は |
| + | \(\displaystyle\ \frac { x+y }{ 2 } \ge \sqrt { xy } \quad \quad x,yは0以上の実数。x=yの時、等号が成立する\) |
| + | であったので、これに沿うように\(a\)と\(b\)を\(x,y\)の変数にすることで式は完成する |
| + | |
| + | 変数になったことで値が条件を満たしていれば式は常にこの関係を恒久的に保つ事が確認できた |
| + | この右辺や左辺に似た数式を見かけたときは、この相加相乗平均の関係を思い出せるようにしておくと「数学における武器」が一つ増えるようだ |
| + | |
| + | ちなみに、この左辺右辺の数式は放物線上の2点の接線の交点の座標でも見かける |