このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
digits
使用する可変精度の変更
説明
例
既定の設定では、MATLAB® は 16 桁の精度を使用しています。より高い精度の場合は、vpa
を使用します。vpa
の既定の精度は 32 桁です。精度を 32 桁より上に引き上げるには、digits
を使用します。
vpa
で pi
を求めます。ここでは、既定の 32 桁の精度を使用します。digits
を使用して、現在の精度が 32 であることを確認します。
pi32 = vpa(pi)
pi32 =
currentPrecision = digits
currentPrecision = 32
digits
の現在の値を d1
に保存し、新しい精度を 70
桁に設定します。vpa
を使用して pi
を求めます。結果は 70 桁になります。
d1 = digits(70); pi100 = vpa(pi)
pi100 =
vpa
がシンボリック出力を返すことに注意してください。シンボリック値を受け取らない MATLAB 関数でシンボリック出力を使用するには、double
を使用してシンボリック値を倍精度に変換します。
最後に、digits
の古い値に戻して計算を続けます。
digits(d1)
詳細については、数値計算精度の引き上げを参照してください。
vpa
をより低い精度で使用することにより、MATLAB の計算速度を上げます。digits
を使用してより低い精度に設定します。
最初に、大きな入力の演算の実行にかかる時間を求めます。
input = 1:0.01:500; tic zeta(input); toc
Elapsed time is 19.679741 seconds.
ここで、vpa
を使用して、より低い精度で演算を繰り返します。digits
を使用して精度を 8
桁に引き下げます。次に、vpa
を使用して、input
の精度を引き下げ、同じ演算を実行します。所要時間が大幅に短縮されます。
d1 = digits(8); vpaInput = vpa(input); tic zeta(vpaInput); toc
Elapsed time is 11.104991 seconds.
最後に、digits
の古い値に戻して計算を続けます。
digits(d1)
詳細については、精度の引き下げによる速度の向上を参照してください。
関数 vpa
または関数 digits
で指定する桁数が、保証される桁数です。内部的には、ツールボックスは指定された桁数よりも少し多くの桁数を使用できます。この追加の桁数は、"ガード桁" と呼ばれます。たとえば、桁数を 4 に設定し、4 桁を使って 1/3 の浮動小数点近似値を表示します。
d1 = digits(4); a = vpa(1/3)
a =
次に、20 桁を使って a
を表示します。結果には、ツールボックスが a
を計算する際、内部的に 4 桁以上を使用したことが示されます。次の結果の後半の桁は、丸め誤差のために不正確です。
d2 = digits(20); vpa(a)
ans =
digits
の古い値に戻して計算を続けます。
digits(d1)
内部での丸め誤差が、結果を予期せぬものにする原因になっています。たとえば、既定の 32 桁の精度と 10 桁の精度で数 1/10 を計算します。
a = vpa(1/10)
a =
d1 = digits(10); b = vpa(1/10)
b =
digits(d1)
次に、差 a - b
を計算します。結果は 0 になりません。
c = a - b
c =
ツールボックスは、内部で 10 桁の数値差 b = 0.1
を 32 桁の精度にするため、a - b
は 0 と等しくありません。これは、処理で丸め誤差が発生することを意味します。ツールボックスは実際に次のように差 a - b
を計算します。
b = vpa(b)
b =
c = a - b
c =
double の数値をシンボリック オブジェクトに変換し、そのオブジェクトに vpa
関数を適用する場合を考えます。結果は、浮動小数点数をシンボリック オブジェクトに変換するのに使用する変換手法によって異なってきます。変換手法を選択するには、sym
関数で 2 番目のオプション引数に "r"
、"f"
、"d"
、"e"
のいずれかを指定します。既定値は "r"
です。たとえば、定数 をシンボリック オブジェクトに変換します。
r = sym(pi)
r =
f = sym(pi,"f")
f =
d = sym(pi,"d")
d =
e = sym(pi,"e")
e =
ツールボックスにより画面で表示されるこれらの数値は異なりますが、それらは pi
の有理近似です。vpa
を使用して、これらの pi
の有理近似を浮動小数点数値に戻します。
桁数を 4 に設定します。4 つの近似のうち、3 つの結果は同じになります。
d1 = digits(4); rvpa = vpa(r)
rvpa =
fvpa = vpa(f)
fvpa =
dvpa = vpa(d)
dvpa =
evpa = vpa(e)
evpa =
次に、桁数を 40 に設定します。pi
のシンボリックな近似の差がよりはっきりします。
d2 = digits(40); rvpa = vpa(r)
rvpa =
fvpa = vpa(f)
fvpa =
dvpa = vpa(d)
dvpa =
evpa = vpa(e)
evpa =
digits
の古い値に戻して計算を続けます。
digits(d1)
入力引数
新しい精度の設定。正の整数スカラーとして指定します。この設定は、可変精度の演算を行うために使用する有効小数桁数を指定します。d
は 1 より大きく、 より小さくなければなりません。値 d
が整数でない場合、digits
によって最も近い整数に丸められます。
出力引数
現在の精度の設定。倍精度数として指定します。この設定は、可変精度の演算を行うために使用する現在の有効小数桁数を指定します。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)