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