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