ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

rat, rats

構文

[N,D] = rat(X)
[N,D] = rat(X,tol)
rat(X)

説明

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

[N,D] = rat(X) は、既定の許容誤差 1.e-6*norm(X(:),1) の範囲で、N./DX を近似するような配列 ND を返します。

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

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

通常、ステートメント

 s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7

は、以下の結果を出力します。

 s =
    0.7595

しかし、

 format rat

または

 rats(s)

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

 s = 
    319/420

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

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

 1 + 1/(-4 + 1/(-6 + 1/(-3 + 1/(-5))))

また、次のステートメント

 [n,d] = rat(s)

は、以下の結果を出力します。

n = 319, d = 420

数学で π の値は、有理数ではありませんが、MATLAB®pi はπを有理数に近似しています。pi は、次のように大きな整数値と 252 との比になります。

 14148475504056880/4503599627370496

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

 355/113

この近似は、ユークリッド時間として知られるものです。この 10 進表現は、

 3.14159292035398

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

 rat(pi)

は、以下の結果を出力します。

 3 + 1/(7 + 1/(16))

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

詳細

すべて展開する

アルゴリズム

関数 rat(X) は、次の形式

の連分数で、X の各要素を近似します。

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

参考

|

この情報は役に立ちましたか?