exponenta event banner

дважды

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