digits
사용하는 가변 정밀도 변경
설명
예제
기본적으로 MATLAB®은 16자리의 정밀도를 사용합니다. 더 높은 정밀도를 사용하려면 vpa
를 사용하십시오. vpa
의 디폴트 정밀도는 32자리입니다. digits
를 사용하여 정밀도를 32자리가 넘도록 늘립니다.
디폴트로 32자리의 정밀도를 사용하는 vpa
를 사용하여 pi
를 구합니다. digits
를 사용하여 현재 정밀도가 32인지 확인합니다.
pi32 = vpa(pi)
pi32 =
currentPrecision = digits
currentPrecision = 32
digits
의 현재 값을 d1
에 저장하고 새 정밀도를 70
으로 설정합니다. vpa
를 사용하여 pi
를 구합니다. 결과는 70자리가 됩니다.
d1 = digits(70); pi100 = vpa(pi)
pi100 =
vpa
는 기호 출력값을 반환합니다. 기호 값을 받지 않는 MATLAB 함수에 기호 출력값을 사용하려면 double
을 사용하여 기호 값을 배정밀도로 변환하십시오.
마지막으로, 추후 계산을 위해 digits
의 이전 값을 복원합니다.
digits(d1)
자세한 내용은 수치 계산의 정밀도 향상시키기 항목을 참조하십시오.
낮은 정밀도로 vpa
를 사용하여 MATLAB 계산의 속도를 향상시킵니다. digits
를 사용하여 낮은 정밀도를 설정합니다.
먼저 큰 입력값에 대해 작업을 수행하는 데 걸리는 시간을 확인합니다.
input = 1:0.01:500; tic zeta(input); toc
Elapsed time is 21.361450 seconds.
이제 vpa
를 사용하여 낮은 정밀도로 연산을 반복합니다. digits
를 사용하여 정밀도를 8
자리로 낮춥니다. 그런 다음 vpa
를 사용하여 input
의 정밀도를 낮추고 동일한 연산을 수행합니다. 소요 시간이 현저히 줄어듭니다.
d1 = digits(8); vpaInput = vpa(input); tic zeta(vpaInput); toc
Elapsed time is 10.423610 seconds.
마지막으로, 추후 계산을 위해 digits
의 이전 값을 복원합니다.
digits(d1)
자세한 내용은 정밀도를 낮춰 속도 향상시키기 항목을 참조하십시오.
vpa
함수 또는 digits
함수를 사용하여 지정한 자릿수는 보장된 자릿수입니다. 내부적으로, 툴박스는 사용자가 지정한 것보다 더 많은 자릿수를 사용할 수 있습니다. 이러한 추가 자릿수를 보호 자릿수라고 합니다. 예를 들어, 자릿수를 4로 설정한 다음 4자리를 사용하여 1/3의 부동소수점 근삿값을 표시해 보십시오.
d1 = digits(4); a = vpa(1/3)
a =
이제 20자리를 사용하여 a
를 표시합니다. 결과를 보면 이 툴박스에서 a
를 계산할 때 내부적으로 4자리 이상을 사용했다는 것을 알 수 있습니다. 다음 결과의 마지막 자릿수들은 반올림 오차로 인해 정확하지 않습니다.
d2 = digits(20); vpa(a)
ans =
추후 계산을 위해 digits
의 이전 값을 복원합니다.
digits(d1)
숨겨진 반올림 오차는 예상치 못한 결과를 초래할 수 있습니다. 예를 들어, 숫자 1/10을 디폴트 값인 32자리 정확도와 10자리 정확도로 계산해 보십시오.
a = vpa(1/10)
a =
d1 = digits(10); b = vpa(1/10)
b =
digits(d1)
이제 차이 a - b
를 계산합니다. 결과는 0이 아닙니다.
c = a - b
c =
툴박스에서 내부적으로 10자리 숫자 b = 0.1
을 32자리 정확도로 향상시키므로 차이 a - b
는 0이 아니게 됩니다. 이 과정은 반올림 오차가 있음을 암시합니다. 툴박스는 실제로 다음과 같이 차이 a - b
를 계산합니다.
b = vpa(b)
b =
c = a - b
c =
double형 숫자를 기호 객체로 변환한 다음 해당 객체에 대해 vpa
함수를 적용한다고 가정하겠습니다. 결과는 부동소수점 숫자를 기호 객체로 변환하는 데 사용한 변환 기법에 따라 달라질 수 있습니다. sym
함수를 사용하면 두 번째 선택적 인수("r"
, "f"
, "d"
또는 "e"
)를 지정하여 변환 기법을 선택할 수 있습니다. 디폴트 값은 "r"
입니다. 예를 들어, 상수 을 기호 객체로 변환해 보겠습니다.
r = sym(pi)
r =
f = sym(pi,"f")
f =
d = sym(pi,"d")
d =
e = sym(pi,"e")
e =
툴박스는 이러한 숫자를 화면에 다르게 표시하지만 이들은 pi
의 유리수 근삿값입니다. vpa
를 사용하여 pi
의 이러한 유리수 근삿값을 다시 부동소수점 값으로 변환합니다.
자릿수는 4로 설정합니다. 4개의 근삿값 중 3개가 동일한 결과를 제공합니다.
d1 = digits(4); rvpa = vpa(r)
rvpa =
fvpa = vpa(f)
fvpa =
dvpa = vpa(d)
dvpa =
evpa = vpa(e)
evpa =
이제 자릿수를 40으로 설정해 봅시다. pi
에 대한 기호 근삿값 간의 차이가 더 두드러져 보입니다.
d2 = digits(40); rvpa = vpa(r)
rvpa =
fvpa = vpa(f)
fvpa =
dvpa = vpa(d)
dvpa =
evpa = vpa(e)
evpa =
추후 계산을 위해 digits
의 이전 값을 복원합니다.
digits(d1)
입력 인수
새로운 정확도 설정 값으로, 양의 정수 스칼라로 지정됩니다. 이 설정 값은 가변 정밀도 계산에 사용될 십진 유효 자릿수를 지정합니다. d
는 1보다 크고 보다 작아야 합니다. 값 d
가 정수가 아닌 경우 digits
는 이 값을 가장 가까운 정수로 반올림합니다.
출력 인수
현재 정확도 설정 값으로, 배정밀도 숫자로 반환됩니다. 이 설정 값은 가변 정밀도 계산에 현재 사용되는 십진 유효 자릿수를 지정합니다.
버전 내역
R2006a 이전에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)