繁分数(連分数)の計算には慣れが必要。筆記で連分数の計算を行う場合は丁寧に書かないと何を計算しているのかわかり難くなるので注意
(数列計算や漸化式、複利計算、極限の計算で必要に迫られる場面も有り得る)
基本的な計算
初歩的な計算から始める、手始めに\(\frac{36}{11}\)という有理数、\(1.4142\)という実数を連分数にしてみる
\(\frac{36}{11}\)を連分数にする
連分数への変換にはユークリッドの互除法に似た手法を使う
\(\frac { 36 }{ 11 } =\quad 36\div 11\quad =\quad 3\frac { 3 }{ 11 } \quad =\quad 3\frac { 1 }{ \frac { 11 }{ 3 } } \)
この最後の逆数の分子部分を再計算する
\( \frac { 11 }{ 3 } =\quad 11\div 3\quad =\quad 3\frac { 2 }{ 3 } \quad =\quad 3\frac { 1 }{ \frac { 3 }{ 2 } }\)
同様に分子部分を計算する
\( \frac { 3 }{ 2 } =\quad 3\div 2\quad =\quad 1\frac { 1 }{ 2 } \quad =\quad 1\frac { 1 }{ \frac { 2 }{ 1 } } \)
この計算作業を割切れる状態になるまで繰り返す
\(\frac { 2 }{ 1 } =\quad 2\)
最期に、この分子部分をまとめると連分数が出来上がる
\(\displaystyle 3+\frac { 1 }{ 3+\frac { 1 }{ 1+\frac { 1 }{ 2 } } } \)
つまり
\(3+\frac { 1 }{ 3+\frac { 1 }{ 1+\frac { 1 }{ 2 } } } \quad =\quad \frac { 36 }{ 11 } \quad =\quad 3.27\dot { 2 } \dot { 7 } ...\)
左辺ふたつは有理数。右辺は実数となり、これらは表現が違うが同じ値
1.4142を連分数にする
1.4142は\(\frac { 14142 }{ 10000 } \)となる。以降、計算の仕方は同じである
\(1.4142=\frac { 14142 }{ 10000 } =\quad 14142\div 10000\quad =\quad 1\frac { 4142 }{ 10000 } \quad =\quad 1\frac { 1 }{ \frac { 10000 }{ 4142 } } \\ \frac { 10000 }{ 4142 } =\quad 10000\div 4142\quad =\quad 2\frac { 1716 }{ 4142 } \quad =\quad 2\frac { 1 }{ \frac { 4142 }{ 1716 } } \\ \frac { 4142 }{ 1716 } =\quad 4142\div 1716\quad =\quad 2\frac { 710 }{ 1716 } \quad =\quad 2\frac { 1 }{ \frac { 1716 }{ 710 } } \\ \frac { 1716 }{ 710 } =\quad 2\frac { 1 }{ \frac { 710 }{ 296 } } \quad ,\quad \frac { 710 }{ 296 } =\quad 2\frac { 1 }{ \frac { 296 }{ 118 } } \quad ,\quad \frac { 296 }{ 118 } =\quad 2\frac { 1 }{ \frac { 118 }{ 60 } } \\ \frac { 118 }{ 60 } =\quad 1\frac { 1 }{ \frac { 60 }{ 58 } } \quad ,\quad \frac { 60 }{ 58 } =1\frac { 1 }{ \frac { 58 }{ 2 } } \quad ,\quad \frac { 58 }{ 2 } =29\quad\)
分子をまとめるとこうなる
\(\displaystyle 1+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 1+\frac { 1 }{ 1+\frac { 1 }{ 29 } } } } } } } } \)
連分数を単純な有理数や実数に戻す
\(1+\frac { 1 }{ 2+\frac { 1 }{ 2 } } =1+1\div (2+\frac { 1 }{ 2 } )=1+1\div (\frac { 5 }{ 2 } )=1+1\times \frac { 2 }{ 5 } =1+\frac { 2 }{ 5 } =\frac { 7 }{ 5 } =1.4\)
\(\\ \\ 1+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2 } } } } =1+(1\div (2+(1\div (2+(1\div (2+(1\div 2)))))))\quad となる\)
こうなってくると下から(後ろから)計算したほうが速い気もしてくる
つまり\(2+\frac { 1 }{ 2 } =\frac { 5 }{ 2 } \)、割り算なので逆数にして\(2+\frac { 2 }{ 5 } =\frac { 12 }{ 5 }\)、逆数にして\(2+\frac { 5 }{ 12 } =\frac { 29 }{ 12 }\)、逆数にして\(1+\frac { 12 }{ 29 } =\frac { 41 }{ 29 } =1.4137...\)となる
(この逆数にしてというのは、どこかイプシロンデルタ論法の一連の動作に似ている?平方根を求める漸化式にもそっくり)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-
|
|
|
-
|
|
!
!
| using UnityEngine;
using System.Collections;
public class NumberC : MonoBehaviour
{
public float n;
void Start ()
{
n = 1f + (1f / (2f + (1f / (2f + (1f / (2f + (1f / 2f)))))));
print (n);
}
}
|
注意点:分数を表す横線の長さと範囲に注意
\(\frac { 1 }{ \frac { 2 }{ 5 } } \quad と\quad \frac { \frac { 1 }{ 2 } }{ 5 } \quad は違う\)
\(\frac { 1 }{ \frac { 2 }{ 5 } } =1\div \frac { 2 }{ 5 } =1\times \frac { 5 }{ 2 } =2.5\)
\(\frac { \frac { 1 }{ 2 } }{ 5 } =\frac { 1 }{ 2 } \div 5=\frac { 1 }{ 2 } \times \frac { 1 }{ 5 } =\frac { 1 }{ 10 } =0.1\)
繁分数の表し方で結果は大きく変わる
変数を使った繁分数の計算
資料:繁分数式
これとよく似た式は様々な場面で見られる。複利計算や極限の式などでも見かける。つまり繁分数がこれらと深いかかわりがあると予想できる
いくつか例を書いてみる
数直線上の\(\sqrt { 2 }\)を基準に有理数の集合を切断する
これは考えてゆくと微積分の計算でみられる「挟み撃ちの原理」となる
数直線上の\(\sqrt { 2 }\)を基準に有理数の集合を切断すると以下のようになります
前提条件は前章から引き継ぐとして
\(A:=\left\{ a\in \mathbb{Q}|{ a }^{ 2 }<2 または a<0 \right\} \quad ,\quad B:=\left\{ b\in \mathbb{Q}|{ b }^{ 2 }>2 かつ b>0\right\}\)
(補足:または、かつの部分は虚数を避けている)
\(\sqrt { 2 }\)を正確に有理数で表すと以下のような無限に続く繁分数になります
\(\displaystyle \sqrt { 2 } =1+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2+\frac { 1 }{ 2 } \\ \vdots } } } } \)
これは漸化式で\(\displaystyle { x }_{ n+1 }=\) \(\displaystyle \frac { 1 }{ 2 } \left( { x }_{ n }+\frac { 2 }{ { x }_{ n } } \right) \)と書けます
ちなみに\(\sqrt { 3 }\)を正確に有理数で表すと以下のような無限に続く繁分数になります
\(\displaystyle \sqrt { 3 } =1+\frac { 1 }{ 1+\frac { 1 }{ 2+\frac { 1 }{ 1+\frac { 1 }{ 2+\frac { 1 }{ 1+\frac { 1 }{ 2 } \\ \vdots } } } } } \)
これは漸化式で\(\displaystyle { x }_{ n+1 }=\) \(\displaystyle\frac { 1 }{ 2 } \left( { x }_{ n }+\frac { 3 }{ { x }_{ n } } \right) \)と書けます
数直線の図と論理式をみてみると有理数内に切断点は含まれていません。この時、\(a\)と\(b\)の関係は\(\displaystyle a<\frac { a+b }{ 2 } <b\)となります
つまり\(\sqrt { 2 }\)は有理数でそのものズバリを具体的に表せない数である事がわかります(無理数は有理数で表せない)
<思考メモ>
\(\displaystyle a<\frac { a+b }{ 2 } <b\)の\(a,b\)が逆数であった場合、つまり\(a=\frac{1}{a}\)、\(b=\frac{1}{b}\)であった場合
\(\displaystyle \frac { \frac { 1 }{ a } +\frac { 1 }{ b } }{ 2 }\)となる、これは式を変形していくと\(\displaystyle \frac { 1 }{ 2 } \left( \frac { 1 }{ a } +\frac { 1 }{ b } \right) =\frac { 1 }{ 2 } \left( \frac { b }{ ab } +\frac { a }{ ab } \right) =\) \(\displaystyle \frac { 1 }{ 2 } \left( \frac { a+b }{ ab } \right) =\frac { a+b }{ 2ab } \)になり
これの逆数をとると調和平均の式、\(\displaystyle \frac { 2ab }{ a+b }\)になる
ちょっと考えをまとめて行きたい・・・え~とつまり・・・
「9-3÷1/3+1」が計算できなくて大丈夫なのか?
「9-3÷1/3+1」が計算できなくて大丈夫なのか?
四則演算の優先順位はともかく1/3を有理数として扱わない場合、C#等では式が
void Start () {
print(9-3/1/3+1);
}
となってしまいます。問題はC#の言語等では有理数を扱えない部分にあります
人間が3/1/3の部分を「翻訳」して数式を書く必要があるという事です
print(9f-(3f/(1f/3f))+1f);
色々な考え方がありますが、僕は数学は言語でありメッセージなのだから意味を明記するのが一番誤解が少なくて良いと思います