double

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

Синтаксис

Описание

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

Примеры

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

Преобразуйте символьные числа в двойную точность при помощи 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