3: 2015-08-15 (土) 15:00:26 osinko |
現: 2015-08-21 (金) 20:27:43 osinko |
| TITLE:メモ | | TITLE:メモ |
| #jsmath | | #jsmath |
| + | |
| + | (εδ論法自体はあまりゲーム作りには必要ない知識かも。厳密な数の動きを知る、証明の為の物であってunityでゲームを作るには重要度が低い可能性があります。自分は帰納に興味があるので少し続けます) |
| | | |
| ***εδ論法とは何者か? [#i36c18cc] | | ***εδ論法とは何者か? [#i36c18cc] |
| | | |
- | εδ論法とは何者か? | + | εδ論法(イプシロン・デルタ論法)とは何者か? |
- | 解析に利用する道具。εδ論法とは対応し合うふたつの変数の関係を解析するために使う道具である | + | εδ論法とは対応する、ふたつの変数の関係を解析する為に使う道具である。基本的に証明のためのもの |
- | 実体のA点(\(n\),\(an\))、仮定のB点(\(\delta\),\(\varepsilon \))のふたつの点をグラフ上に作りその関係を論理的に調べる | + | 実体のA点(\(n\),\({ a }_{ n }\))、仮定のB点(\(\delta\),\(\varepsilon \))のふたつの点をグラフ上に作りその関係を論理的に調べる |
- | | + | &ref(epsdel2.png); |
- | \(y=f(x)={x}^{2}\)の場合、関数によって対応し合う\(x\)と\(y\)という変数の関係を解析できる | + | \(y=f(x)={x}^{2}\)の場合、関数によって対応する\(x\)と\(y\)という変数の関係を解析できる |
- | \({a}_{n}=f(n)=\frac{1}{n}\)の場合、関数によって対応し合う数列\({a}_{n}\)と\(n\)という変数の関係を解析できる | + | \({ a }_{ n }=f(n)=\frac{1}{n}\)の場合、関数によって対応する&font(Red){数列};\({a}_{n}\)と\(n\)という変数の関係を解析できる |
- | | + | (この「対応する」と言う言葉は\(x\)と\(y\)が互いに関数の関係にあり、\(x\)が変化すれば\(y\)が、\(y\)が変化すれば\(x\)が変化することを表している) |
- | | + | |
- | これにより数の性質を調べれたり、関数の性質を調べる事が出来る | + | |
- | 「関数の性質」を知る事で「片方の変数が無限に減ったり増えたりする際の関数の性質を知る」事も出来たりする | + | |
- | C#という言語仕様も数学の性質を利用して設計されているので「数の性質」を利用して「帰納的なコード」を組むなども可能となる | + | |
- | また微分積分との相性が非常に良いので「漸化式」が作れたりする | + | |
- | | + | |
- | ***アルキメデスの原則 [#te060291] | + | |
| | | |
- | ***アルキメデスの原則をεδ論法で解析してみる [#m4bfc74e] | + | 仮定のB点はA点の関数の性質を継承している。従って\(\delta\)も\(\varepsilon\)に対応している(慣習的にグラフ縦軸の変数を\(\varepsilon\)、横軸側を\(\delta\)とする) |
| + | このA点とB点の差を利用して「関数の性質」や「数列の性質」「数の性質」を調べる事が出来る |
| + | lim等の利用により「片方の変数が無限に減ったり増えたりする際の関数の性質を知る」事も出来る |
| + | //C#という言語仕様も数学の性質を利用して設計されている。その為「数の性質」を利用して「帰納的なコード」を組む等も可能となる |
| + | //また微積分との相性が非常に良いので「関数の性質」の理解が進めば「漸化式」を作成する事が可能となる |
| | | |
| + | ***アルキメデスの公理 [#te060291] |
| | | |
| + | アルキメデスの公理、もしくはアルキメデスの性質、原則と呼ばれる自明のものがある。εδ論法では、この公理が利用される機会が多い |
| + | 公理は証明が必要ない公然とした事実として扱われる。その内容は以下になっている |
| | | |
| + | &font(Navy){''任意の正の実数 \(\varepsilon>0\)、\(a>0\)に対して\(n\varepsilon>a\)をみたす自然数 \(n\in \mathbb{ N }\) が必ず存在する''}; |
| | | |
- | ***float→intの型変換はアルキメデスの原則に従っている [#d18fd9f8] | + | 基本的な部分を確認しておく。自然数、整数、実数等、代表的な数の分類とは、どんな数か以下参照 |
| + | 細かい数の分類は資料:[[数学-数の種類:http://capm-network.com/?tag=%E6%95%B0%E5%AD%A6-%E6%95%B0%E3%81%AE%E7%A8%AE%E9%A1%9E]]を参照 |
| + | |自然数|0,1,2,3,4...|\(\mathbb{N}\)|uint| |
| + | |整数|...-2,-1,0,1,2,3...|\(\mathbb{Z}\)|int| |
| + | |実数|+-、0、整数、分数、小数、有理数、ルート、円周率、無理数等を含めた数|\(\mathbb{R}\)|float,double,Mathf.Pi| |
| | | |
- | アルキメデスの原則をεδ論法で解析する事により実数と自然数との関係を分析できる | + | 自然数は中学教育の間までは0を含めていないが高校以降では含める事となっている。nはnatural_numberの頭文字であるが、数学では0を含めた場合iとするのが慣習である。つまり0まで含めた数列の場合\({a}_{i}\)と書く(個人メモ:C#のforループでi=0を使う慣習は、この数学的慣習にならっての事だと予想される。つまり1から始めるループならnを使う、マイナスまで含めたforループならzを使うのが良い?) |
- | これによりC#が数学を元に仕様を決定しているかわかる。同時に帰納的なコードにどう利用すればいいかもわかる | + | |
| | | |
- | 任意の実数\(x\in { \mathbb{R} }\)に対して、ある自然数\(n\in{\mathbb{Z}}\)が存在して\(\\ n\le x<n+1\)が成り立つ | + | <計算例> |
| + | \(\varepsilon=0.1234,a=789.0123\quad \rightarrow \quad n\varepsilon>a\quad \rightarrow \quad 0.1234n>789.0123\quad \rightarrow \quad n>\frac { 789.0123 }{ 0.1234 } =6393.94...\) |
| + | \(n>6393.94...\quad \rightarrow \quad n=6394\) |
| | | |
- | ***カウンタブルとは? [#g0c39628] | + | //教本によっては\(\varepsilon<a\)も前提中に含まれている場合があるが公理自体は、\(\varepsilon<a\)を要求していない。これは\(n\)を\(0\)に出来るからだ |
| | | |
- | データーとそのデーターを指す数列(アドレス、ポインター)とが1対1で対応している状態をカウンタブルと言う | + | ***アルキメデスの公理2 [#n2bdd0a9] |
| | | |
- | ***εδ論法の教本で正の数であればいい変数に対し自然数を使うのは何故か? [#z6b732c7] | + | ***実数と数列の関係 [#g0c39628] |
- | 数学の教本で\(\delta\)を「\(\forall \delta\in { \mathbb{ N }}\)」として自然数にしたり、\(n\)を「\(\forall n\in { \mathbb{ N }}\)」としているのは実数である変数とカウンタブルな\(\delta\)や\(n\)は1対1に対応している事を説明する為だと思われます(数列の\({a}_{n}\)の\(n\)は自然数である事が高校数学では求められるが、これは本当は実数でも良いという事らしい(おそらくlogが数列の進化版となっている)。コンピューター言語のC#等では配列のインデックスに自然数を使う。そういう意味で数学の教本がδやnを自然数に指定しているのは老婆心であるのだろう | + | こんな感じのものではないか?という仮定を幾つか立てる |
| | | |
- | εδに沿って考えれば関係する変数にカウンタブルなインデックスとなる変数を仕込める。そのインデックスからコンピューターに解析手順を知らせれる | + | #hr |
| + | <実数と有理数の関係> |
| + | 実数\(\mathbb{R}\)に含まれる無理数、超越数は有理数\(\mathbb{Q}\)の集合から代数的操作で得る事は出来ず、極限操作によってはじめて定義できる |
| + | 従って有理数\(\mathbb{Q}\)と実数\(\mathbb{R}\)は四則演算について閉じている |
| | | |
- | 実数と実数が1対1で対応している場合C#ではDictionaryクラスが必要 | + | 例: |
- | Dictionaryクラスはforループでインデックス変数に+1していくようなカウンタブルな参照は出来ない | + | \(\pi\)≠有理数 や \(\sqrt { 2 }\)≠有理数 のように無理数や超越数は有理数に出来ない。だから四則演算については閉じている。「閉じている」とは何か?この場合同じ集合同士の四則演算が同じ集合に収まる様を指している。無理数同士の足算や掛算は無理数に、超越数同士は超越数になる |
- | (こういう処理には本当はlogを使うのが良い) | + | |
| | | |
- | 実数と自然数が1対1で対応している場合C#では配列クラスが使える | + | #hr |
- | また自然数はカウンタとして利用出来るのでforループでカウンタブルに参照して行ける | + | |
| | | |
| **メモ [#la320adc] | | **メモ [#la320adc] |
| 上に有界ならsup | | 上に有界ならsup |
| 下に有界ならinf | | 下に有界ならinf |