기호 값을 MATLAB 배정밀도 값으로 변환
double(
는 기호 값 s
)s
를 배정밀도 값으로 변환합니다. MATLAB® 함수가 기호 값을 허용하지 않는 경우, 기호 값을 배정밀도 값으로 변환하는 것이 유용합니다. 기호 숫자와 배정밀도 숫자와의 차이점에 대해서는 Choose Numeric or Symbolic Arithmetic 항목을 참조하십시오.
double
을 사용하여 기호 숫자를 배정밀도 값으로 변환합니다. 배정밀도 숫자는 반올림 오차가 있는 반면 기호 숫자는 정확합니다.
pi
및 1/3
을 기호 형식에서 배정밀도 형식으로 변환합니다.
symN = sym([pi 1/3])
symN = [ pi, 1/3]
doubleN = double(symN)
doubleN = 3.1416 0.3333
반올림 오차에 대한 자세한 내용은 Recognize and Avoid Round-Off Errors 항목을 참조하십시오.
vpa
에 의해 생성된 가변 정밀도 수치는 기호 값입니다. MATLAB 함수에서 기호 값을 허용하지 않는 경우 double
을 사용하여 가변 정밀도를 배정밀도로 변환하십시오.
pi
및 1/3
을 가변 정밀도 형식에서 배정밀도로 변환합니다.
vpaN = vpa([pi 1/3])
vpaN = [ 3.1415926535897932384626433832795, 0.33333333333333333333333333333333]
doubleN = double(vpaN)
doubleN = 3.1416 0.3333
double
을 사용하여 행렬 symM
의 기호 숫자를 배정밀도 숫자로 변환합니다.
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
을 사용하여 변환합니다. 그런 다음 digits
를 사용하여 정밀도를 100
자리로 늘리고 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)