ドキュメンテーション

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

double

シンボリック値を MATLAB の倍精度に変換

構文

double(s)

説明

double(s) は、シンボリック値 s を倍精度に変換します。シンボリック値の倍精度への変換は、MATLAB® 関数でシンボリック値を受け取らない場合に役立ちます。シンボリック数と倍精度数の違いについては、シンボリック演算または数値演算の選択を参照してください。

シンボリック数を倍精度に変換

double を使用してシンボリック数を倍精度に変換します。シンボリック数は厳密ですが、倍精度数には丸め誤差があります。

pi1/3 をシンボリック型から倍精度に変換します。

symN = sym([pi 1/3])
symN =
[ pi, 1/3]
doubleN = double(symN)
doubleN =
    3.1416    0.3333

丸め誤差については、丸め誤差の認識と回避を参照してください。

可変精度の倍精度への変換

vpa で作成される可変精度の数値はシンボリック値です。MATLAB 関数でシンボリック値を受け取らない場合、double を使用して可変精度を倍精度に変換します。

pi1/3 を可変精度から倍精度に変換します。

vpaN = vpa([pi 1/3])
vpaN =
[ 3.1415926535897932384626433832795, 0.33333333333333333333333333333333]
doubleN = double(vpaN)
doubleN =
    3.1416    0.3333

シンボリック行列の倍精度行列への変換

行列 symM のシンボリック数を、double を使用して倍精度数に変換します。

a = sym(sqrt(2));
b = sym(2/3);
symM = [a b; a*b b/a]
symM =
[       2^(1/2),       2/3]
[ (2*2^(1/2))/3, 2^(1/2)/3]
doubleM = double(symM)
doubleM =
    1.4142    0.6667
    0.9428    0.4714

高精度な変換

内部桁落ちや丸め誤差の影響を受けるシンボリック式を変換する場合、数値変換の前に、digits を使用して作業精度を引き上げます。

数値的に不安定な式 Ydouble を使用して変換します。次に、digits を使用して、精度を 100 桁に引き上げ、再度 Y を変換します。低い精度の変換が正確ではないのに対し、こうした高い精度の変換は正確です。

Y = ((exp(sym(200)) + 1)/(exp(sym(200)) - 1)) - 1;
lowPrecisionY = double(Y)
lowPrecisionY =
     0
digitsOld = digits(100);
highPrecisionY = double(Y) 
highPrecisionY =
   2.7678e-87

digits で使用していた古い精度に戻して、計算を続けます。

digits(digitsOld)

入力引数

すべて折りたたむ

シンボリック入力。シンボリック数、またはシンボリック数のベクトル、行列あるいは多次元配列のいずれかとして指定します。

R2006a より前に導入