数について
数の種類
<数の種類>
実数 float double |
有理数 | 自然数 | 1,24,55,100 | 人が自然に対して数える事が出来る数 |
整数 int | 0,1,24,55,100,-98 | 0と負の数を含む | ||
有限小数 | 0.125 , 0.1 | 分母が2,2*2=4,5,2*2*2=8,10に素因数分解できる | ||
純循環小数 | 1/3=0.3333....、1/7=0.142857142857.... | 分母が3,7,3*3=9に素因数分解できる | ||
混循環小数 | 1/6=0.16666...、等 ループの開始位置が1桁目とは限らない |
分母が10の素因数とそれ以外の因数が混成している 例えば6は2と3の混成 |
||
有限連分数 | (別記) | 割切れた終わりのある連分数 | ||
無理数 | 非循環小数 | PI や √2 等 | ||
無限連分数 | (別記) | 無限に続く連分数(無理数をあえて有理数表現したもの) |
<濃度>
実数内の有理数と無理数の濃度を比べると無理数の方が濃い。有理数はもともと誤訳(意訳)であり単語の意味としては「有比数」がより近い
つまり数を分数で比(傾き)として表現している。数はこれ以外に指数、平方根、累乗根、対数、n進数で表現拡張される
実数は連続的に存在し、その中の整数や様々な種類の数は離散的に存在する
- 循環小数とは小数部の中に繰り返し現れる数字のパターンを持つ数の事
- 有理数は必ず「割り切れた小数(有限小数)」「純循環小数」、「混循環小数」のどれかになる
- 有限小数になる条件は有理数に変換した際、分母が10^nで表せる事(10は約分すると2と5なので、これらを掛けたり割ったりして出来上がった数とも言える
- 有理数(rational number)。'ratio'つまり整数で表した比。ratioには理(ことわり)の意味もある
- 無理数は通常の方法では有理数化、分数にできない(無限連分数は有理数とは言えない)
有理数、無理数と傾き(比)の関係
有理数は二つの整数の比による分数で表される。比は傾きの関数として扱え、同じ数をふたつの実数表現と無数の有理数で表現できる
例えば1/2というふたつの整数の比で表された有理数は0.5と0.49999...の二つの実数で表現できる
同時に2/4、5/10、512/1024等、無数の有理数で表現出来る。また傾きの関数で表現すればy(x)=(1/2)*xとなりxが2進めばyが1進む一次関数となる
<無理数=傾きとして正確に表現できない数>
√2等の無理数を傾きとして捉えた場合、無理数を有理数、比として正確に表現できない為、近似値の傾きとなり必ず誤差を産む表現となる
漸化式内で無理数の傾きを扱う場合、この誤差は蓄積されていく事に注意が必要
小数と有理数
循環小数を有理数(分数)へと変換する例
<循環小数の場合>
(尚、4.33333...等の場合は一端、4+0.33333と分離して変換する)
<分数→循環小数→分数 を試してみる>
実数
1と0.9999999999999999999999~(無限小数)は実数の体系の中では表現が違うだけで実は同じ数字(コンピュータの中ではそうはならない)
つまり本当は誤差ではなく・・・位取りに基づく記数法による仕様であり実数は常に同じ数をふたつの方法で表現できる
<同じ数をふたつの方法で表現した例>
実数では左辺、右辺を同じ数として扱います。unityではキャスト(型)に合わせ「同じものとして扱う」動作をコーディングする必要があります
<分数(有理数)を使った証明>
<代数を使った証明>
<資料>
特殊な分数
やや特殊な分数の表現に、分数の中に分数が入り込んだ数「繁分数」(はんぶんすう)がある
繁分数のさらに繁分数になるような数を連分数(れんぶんすう)と呼ぶ(この式は漸化的である点に留意)
上記のような連分数を[1;2,2,2,2,2,2]と表記できる。そしてこの連分数には有限連分数と無理数となる無限連分数の2種類が存在する
無限練分数とは上記の2が無限に続く数であり、下記のように表現される
このように無限連分数を利用する事により無理数である√2を分数で表現可能となる。同様に他の無理数も以下のように表現できる
とても不思議な感じ…この数字の並びに何か規則はあるのか今後調べていくつもりです
二進小数
<10進小数→二進小数>
<二進小数→10進小数>
もう一度練習で計算してみる
ここで注目しなければならないのは0.7071という10進数では割り切れていた数字が2進数に変換すると0.7070....という数字になってしまった事
つまり10進数の小数表現と2進数の小数表現では元になる桁上がりの単位が変わるので「割り切れる数」が変わる
(2で割り切れる数字と3で割り切れる数字は違う事と同じ理屈)
これは10進数では割り切れていたはずなのに2進数にすると循環小数や無理数になる場合があるという事を表す
PCが内部で数を10進数から2進数に変換して扱っている以上、小数点演算には必ず誤差が出る原因の元はこれによる
tips
簡単に希望の循環小数を作りたい時は桁数を合わせた9の分母で割ると良い
たとえば12345の循環節を持った循環小数を作りたければ99999で割る
987の循環節なら999で割ると希望する数が作れる
資料
メニュー
- 最終更新:2014-10-24 15:32:26