'double'

Преобразуйте символьные значения в двойную точность MATLAB

Синтаксис

double(s)

Описание

double(s) преобразовывает символьное значение s в двойную точность. Преобразование символьных значений к двойной точности полезно, когда функция MATLAB® не принимает символьные значения. Для различий между символьными и числами с двойной точностью смотрите, Выбирают Symbolic or Numeric Arithmetic.

Примеры

Преобразуйте символьное число в двойную точность

Преобразуйте символьные числа в двойную точность при помощи double. Символьные числа точны, в то время как числа с двойной точностью имеют ошибки округления.

Преобразуйте pi и 1/3 от символьной формы до двойной точности.

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

Для получения информации об ошибках округления смотрите, Распознают и Избегают Ошибок Округления.

Преобразуйте переменную точность в двойную точность

Числа переменной точности, созданные vpa, являются символьными значениями. Когда функция MATLAB не примет символьные значения, преобразуйте переменную точность в двойную точность при помощи double.

Преобразуйте pi и 1/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 прежде, чем преобразовать номер.

Преобразуйте численно нестабильное выражение Y с double. Затем точность увеличения к цифрам 100 при помощи digits и преобразовывает 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