4: 2015-08-15 (土) 23:44:49 osinko |
現: 2015-08-21 (金) 20:27:43 osinko |
| TITLE:メモ | | TITLE:メモ |
| #jsmath | | #jsmath |
| + | |
| + | (εδ論法自体はあまりゲーム作りには必要ない知識かも。厳密な数の動きを知る、証明の為の物であってunityでゲームを作るには重要度が低い可能性があります。自分は帰納に興味があるので少し続けます) |
| | | |
| ***εδ論法とは何者か? [#i36c18cc] | | ***εδ論法とは何者か? [#i36c18cc] |
| | | |
| εδ論法(イプシロン・デルタ論法)とは何者か? | | εδ論法(イプシロン・デルタ論法)とは何者か? |
- | εδ論法とは対応する、ふたつの変数の関係を解析する為に使う道具である | + | εδ論法とは対応する、ふたつの変数の関係を解析する為に使う道具である。基本的に証明のためのもの |
| 実体のA点(\(n\),\({ a }_{ n }\))、仮定のB点(\(\delta\),\(\varepsilon \))のふたつの点をグラフ上に作りその関係を論理的に調べる | | 実体のA点(\(n\),\({ a }_{ n }\))、仮定のB点(\(\delta\),\(\varepsilon \))のふたつの点をグラフ上に作りその関係を論理的に調べる |
| &ref(epsdel2.png); | | &ref(epsdel2.png); |
| このA点とB点の差を利用して「関数の性質」や「数列の性質」「数の性質」を調べる事が出来る | | このA点とB点の差を利用して「関数の性質」や「数列の性質」「数の性質」を調べる事が出来る |
| lim等の利用により「片方の変数が無限に減ったり増えたりする際の関数の性質を知る」事も出来る | | lim等の利用により「片方の変数が無限に減ったり増えたりする際の関数の性質を知る」事も出来る |
- | C#という言語仕様も数学の性質を利用して設計されている。その為「数の性質」を利用して「帰納的なコード」を組む等も可能となる | + | //C#という言語仕様も数学の性質を利用して設計されている。その為「数の性質」を利用して「帰納的なコード」を組む等も可能となる |
- | また微積分との相性が非常に良いので「関数の性質」の理解が進めば「漸化式」を作成する事が可能となる | + | //また微積分との相性が非常に良いので「関数の性質」の理解が進めば「漸化式」を作成する事が可能となる |
| | | |
| ***アルキメデスの公理 [#te060291] | | ***アルキメデスの公理 [#te060291] |
| | | |
- | アルキメデスの公理、もしくはアルキメデスの性質、原則と呼ばれる自明のものがある。εδ論法では、この公理が利用される機会が多い(つまり基本) | + | アルキメデスの公理、もしくはアルキメデスの性質、原則と呼ばれる自明のものがある。εδ論法では、この公理が利用される機会が多い |
| 公理は証明が必要ない公然とした事実として扱われる。その内容は以下になっている | | 公理は証明が必要ない公然とした事実として扱われる。その内容は以下になっている |
| | | |
| &font(Navy){''任意の正の実数 \(\varepsilon>0\)、\(a>0\)に対して\(n\varepsilon>a\)をみたす自然数 \(n\in \mathbb{ N }\) が必ず存在する''}; | | &font(Navy){''任意の正の実数 \(\varepsilon>0\)、\(a>0\)に対して\(n\varepsilon>a\)をみたす自然数 \(n\in \mathbb{ N }\) が必ず存在する''}; |
| | | |
- | 基本的な部分を確認しておく。自然数、整数、実数等、代表的な数の分類とは、どんな数か以下参照。細かい数の分類は[[数学記号の表:https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E8%A8%98%E5%8F%B7%E3%81%AE%E8%A1%A8]]を参照 | + | 基本的な部分を確認しておく。自然数、整数、実数等、代表的な数の分類とは、どんな数か以下参照 |
| + | 細かい数の分類は資料:[[数学-数の種類: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| | | |自然数|0,1,2,3,4...|\(\mathbb{N}\)|uint| |
| |整数|...-2,-1,0,1,2,3...|\(\mathbb{Z}\)|int| | | |整数|...-2,-1,0,1,2,3...|\(\mathbb{Z}\)|int| |
| |実数|+-、0、整数、分数、小数、有理数、ルート、円周率、無理数等を含めた数|\(\mathbb{R}\)|float,double,Mathf.Pi| | | |実数|+-、0、整数、分数、小数、有理数、ルート、円周率、無理数等を含めた数|\(\mathbb{R}\)|float,double,Mathf.Pi| |
| | | |
- | 自然数は中学教育の間までは0含めていないが高校以降では含める事となっている。nはnatural_numberの頭文字であるが、数学では0を含めた場合iとするのが慣習である。つまり0まで含めた数列の場合\({a}_{i}\)と書く。(C#のforループでi=0を使う慣習は、この数学的慣習にならっての事だと予想される。つまり1から始めるループならnを使う、マイナスまで含めたforループならzを使うのが良い?) | + | 自然数は中学教育の間までは0を含めていないが高校以降では含める事となっている。nはnatural_numberの頭文字であるが、数学では0を含めた場合iとするのが慣習である。つまり0まで含めた数列の場合\({a}_{i}\)と書く(個人メモ:C#のforループでi=0を使う慣習は、この数学的慣習にならっての事だと予想される。つまり1から始めるループならnを使う、マイナスまで含めたforループならzを使うのが良い?) |
| | | |
| <計算例> | | <計算例> |
| \(n>6393.94...\quad \rightarrow \quad n=6394\) | | \(n>6393.94...\quad \rightarrow \quad n=6394\) |
| | | |
- | 教本によっては\(\varepsilon<a\)も前提中に含まれている場合があるが公理自体は、\(\varepsilon<a\)等を要求していない。これは\(n\)を\(0\)に出来るからだ | + | //教本によっては\(\varepsilon<a\)も前提中に含まれている場合があるが公理自体は、\(\varepsilon<a\)を要求していない。これは\(n\)を\(0\)に出来るからだ |
- | | + | |
- | ***float→intの型変換はアルキメデスの原則に従っている [#d18fd9f8] | + | |
- | | + | |
- | //アルキメデスの原則をεδ論法で解析する事により実数と自然数との関係を分析できる | + | |
- | //これによりC#が数学を元に仕様を決定しているかわかる。同時に帰納的なコードにどう利用すればいいかもわかる | + | |
- | | + | |
- | 任意の実数\(x\in { \mathbb{R} }\)に対して、ある整数\(n\in{\mathbb{Z}}\)が存在して\(\\ n\le x<n+1\)が成り立つ | + | |
- | | + | |
- | ***カウンタブルとは? [#g0c39628] | + | |
- | | + | |
- | データーとそのデーターを指す数列(アドレス、ポインター)とが1対1で対応している状態をカウンタブルと言う | + | |
- | | + | |
- | ***アルキメデスの公理をεδ論法で解析してみる [#m4bfc74e] | + | |
| | | |
- | \(\begin{cases} { a }_{ n }=f(n)=\frac { 1 }{ n } \\ \displaystyle \lim _{ n\rightarrow \infty }{ { a }_{ n } } =0 \end{cases}\) | + | ***アルキメデスの公理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 |