主要内容

double

将符号值转换为 MATLAB 双精度值

说明

d = double(s) 将符号值 s 转换为双精度值。当 MATLAB® 函数不接受符号值时,将符号值转换为双精度值非常有用。有关符号数和双精度数之间的差异,请参阅Choose Numeric or Symbolic Arithmetic

示例

示例

全部折叠

使用 double 将符号数转换为双精度数。符号数是精确的,而双精度数存在舍入误差。

π13 从符号形式转换为双精度形式。

symN = sym([pi 1/3])
symN = 

(π13)

doubleN = double(symN)
doubleN = 1×2

    3.1416    0.3333

有关舍入误差的信息,请参阅Recognize and Avoid Round-Off Errors

vpa 创建的可变精度数字是符号值。当 MATLAB 函数不接受符号值时,使用 double 将可变精度转换为双精度。

π13 从可变精度形式转换为双精度形式。

vpaN = vpa([pi 1/3])
vpaN = (3.14159265358979323846264338327950.33333333333333333333333333333333)
doubleN = double(vpaN)
doubleN = 1×2

    3.1416    0.3333

使用 double 将矩阵 symM 中的符号数转换为双精度数。

a = sym(sqrt(2));
b = sym(2/3);
symM = [a b; a*b b/a]
symM = 

(22322323)

doubleM = double(symM)
doubleM = 2×2

    1.4142    0.6667
    0.9428    0.4714

在转换存在内部抵消或舍入误差的符号表达式时,在转换数字之前使用 digits 来提高工作精度。

使用 double 转换数值不稳定的表达式 Y。然后,使用 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 求解三角方程 sin(2x)+cos(x)=0。将 ReturnConditions 选项设置为 true,以返回完整的解、解中使用的参数以及这些参数的条件。

syms x
eqn = sin(2*x) + cos(x) == 0;
[solx,params,conds] = solve(eqn,x,ReturnConditions=true)
solx = 

(π2+πk2πk-π67π6+2πk)

params = k
conds = 

(kZkZkZ)

求解器不会在 MATLAB® 工作区中为参数创建变量 k。创建此变量。使用 subsk=2 时的解。

syms k
sols_k2 = subs(solx,k,2)
sols_k2 = 

(5π223π631π6)

这些解是精确的符号数。将这些符号数转换为双精度数。

doublesols_k2 = double(sols_k2)
doublesols_k2 = 3×1

    7.8540
   12.0428
   16.2316

创建一个符号表达式 S 来表示 A2-2A+I2,其中 A 是一个 2×2 的符号矩阵变量。

syms A 2 matrix
S = A*A - 2*A + eye(2)
S = I2-2A+A2

将符号数 [cos( π5)sin(π4)-10] 代入 A

Aval = [cos(sym(pi)/5) sin(pi/4); -1 0];
symS = subs(S,A,Aval)
symS = 

-2Σ1+Σ12+I2where  Σ1=(54+1422-10)

将结果转换为双精度矩阵。

doubleS = double(symS)
doubleS = 2×2

   -0.6706   -0.8422
    1.1910    0.2929

输入参数

全部折叠

符号输入,指定为符号数、符号数数组或数字符号矩阵变量。如果输入仅包含数值(不包含符号数),则调用 MATLAB double 函数。

数据类型: sym | symmatrix

版本历史记录

在 R2006a 之前推出

全部展开