Преобразование символьных значений в двойную точность 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 =
0digitsOld = digits(100); highPrecisionY = double(Y)
highPrecisionY = 2.7678e-87
Восстановить старую точность, используемую digits для дальнейших расчетов.
digits(digitsOld)