このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
double
シンボリック値を MATLAB の倍精度に変換
説明
は、シンボリック値 d
= double(s
)s
を倍精度に変換します。シンボリック値の倍精度への変換は、MATLAB® 関数でシンボリック値を受け取らない場合に役立ちます。シンボリック数と倍精度数の違いについては、数値演算またはシンボリック演算の選択を参照してください。
例
シンボリック数を倍精度に変換
double
を使用してシンボリック数を倍精度に変換します。シンボリック数は厳密ですが、倍精度数には丸め誤差があります。
と をシンボリック型から倍精度に変換します。
symN = sym([pi 1/3])
symN =
doubleN = double(symN)
doubleN = 1×2
3.1416 0.3333
丸め誤差については、丸め誤差の認識と回避を参照してください。
可変精度の倍精度への変換
vpa
で作成される可変精度の数値はシンボリック値です。MATLAB 関数でシンボリック値を受け取らない場合、double
を使用して可変精度を倍精度に変換します。
と を可変精度から倍精度に変換します。
vpaN = vpa([pi 1/3])
vpaN =
doubleN = double(vpaN)
doubleN = 1×2
3.1416 0.3333
シンボリック行列の倍精度行列への変換
行列 symM
のシンボリック数を、double
を使用して倍精度数に変換します。
a = sym(sqrt(2)); b = sym(2/3); symM = [a b; a*b b/a]
symM =
doubleM = double(symM)
doubleM = 2×2
1.4142 0.6667
0.9428 0.4714
高精度な変換
内部桁落ちや丸め誤差の影響を受けるシンボリック式を変換する場合、数値変換の前に、digits
を使用して作業精度を引き上げます。
数値的に不安定な式 Y
を double
を使用して変換します。次に、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)
シンボリックな結果から倍精度への変換
solve
を使用して三角関数方程式 を解きます。完全解、解で使用されているパラメーター、およびそれらのパラメーターの条件を返すように、ReturnConditions
オプションを true
に設定します。
syms x
eqn = sin(2*x) + cos(x) == 0;
[solx,params,conds] = solve(eqn,x,ReturnConditions=true)
solx =
params =
conds =
ソルバーは、このパラメーターの変数 を MATLAB® ワークスペースに作成しません。この変数を作成します。subs
を使用して の解を求めます。
syms k
sols_k2 = subs(solx,k,2)
sols_k2 =
正確なシンボリック数が解として得られます。これらの数値を倍精度の数値に変換します。
doublesols_k2 = double(sols_k2)
doublesols_k2 = 3×1
7.8540
12.0428
16.2316
数値のシンボリック行列変数から倍精度への変換
を表すシンボリック式 S
を作成します。ここで、 は 2 行 2 列のシンボリック行列変数です。
syms A 2 matrix S = A*A - 2*A + eye(2)
S =
にシンボリック数 を代入します。
Aval = [cos(sym(pi)/5) sin(pi/4); -1 0]; symS = subs(S,A,Aval)
symS =
結果を倍精度の行列に変換します。
doubleS = double(symS)
doubleS = 2×2
-0.6706 -0.8422
1.1910 0.2929
入力引数
バージョン履歴
R2006a より前に導入R2022b: 数値のシンボリック行列変数から倍精度への変換
数値のシンボリック行列変数 (symmatrix
型) を double
型の倍精度行列に変換できます。例については、数値のシンボリック行列変数から倍精度への変換を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)