MATLAB Function Reference    
rat, rats

有理数近似

表示

詳細

すべての浮動小数点数が有理数であっても、それを分母と分子が共に小さな整数である分数を使って単純な有理数に近似したほうが良い場合があります。rat は、これを行う関数です。有理数近似は、連分数展開で作られます。rats rat をコールし、文字列を出力します。

[N,D] = rat(X) は、デフォルトの許容値 1.e-6*norm(X(:),1) の範囲で、N./D が、X を近似するような配列 N D を出力します。

[N,D] = rat(X,tol) は、tol の範囲で、N./D X を近似するような N D を出力します。

rat(X) は、出力引数がなければ、単純に連分数を表示します。

S = rats(X,strlen) は、X の要素の単純な有理数近似を含む文字列を出力します。割り当てられたスペースに出力できず、X の他の要素と比較して無視できない要素には、アスタリスクが使われます。strlenは、rats が出力する文字列の要素の長さです。デフォルトは、strlen = 13 で、78 カラムに、6 要素を表示することができます。

S = rats(X) は、MATLAB の format rat で出力する結果と同じ結果を出力します。

例題

通常、ステートメント

で、つぎの結果を得ます。

しかし、

または、

で出力される結果は、つぎのようになります。

これは、簡単な有理数です。この分母は 420 で、オリジナルの式の分母の項の最小公倍数になっています。s の値が2進浮動小数点数として内部に保存されても、求めたい有理数の形式に復元できます。

有理数近似がどのように作られるのかを見るために、ステートメント rat(s) を実行します。

すぎのステートメントは、

の結果を得ます。

数学での の値は、明らかに有理数ではありません。しかし、MATLABの を近似した pi の値は有理数です。IEEE 浮動小数点演算では、pi は、つぎのように大きな整数値と 252との比になります。

しかし、これは簡単な有理数ではありません。format rat 、または、rats(pi) を使って、pi を出力した値は、つぎのようになります。

この近似は、Euclid's time として知られているものです。この10進表現は、

となり、有効数字7桁で pi と一致します。ステートメント

で、つぎの結果を得ます。

この結果で、355/113 がどのようにして得られたものかわかります。精度が悪くなりますが、よく知られたπの近似として、22/7 があります。これは、この連分数の最初の2項から得られたものです。

アルゴリズム

rat(X) は、つぎの形式の連分数で、X の各要素を近似します。

d は、繰り返して整数部を取り出して、分数部分の逆数を取ることで求められます。近似の精度は、項数に応じて指数的に良くなり、X = sqrt(2) の場合に最悪になります。 x = sqrt(2) に対する誤差は、項数が k 個で、およそ 2.68*(.173)^k となります。近似の精度は項を 1 つ追加するごとに、10 進数の 1 桁より小さい程度良くなります。浮動小数点数の全精度を得るためには、項数は、21 個必要となります。

参考

format


 rank rbbox