수치 형식에서 기호 형식으로 변환
이 항목에서는 Symbolic Math Toolbox™가 숫자를 기호 형식으로 변환하는 방법을 보여줍니다. 기호 연산방식 및 수치 연산방식에 대한 개요는 수치 연산방식 또는 기호 연산방식 선택하기 항목을 참조하십시오.
숫자형 입력값을 기호 형식으로 변환하려면 sym 명령을 사용하십시오. 기본적으로 sym은 숫자 표현식의 유리수 근삿값을 반환합니다.
t = 0.1; sym(t)
ans =
sym을 사용하면 배정밀도 값 0.1이 정확한 기호 값 으로 근사하는 것을 확인할 수 있습니다. 일반적으로 sym은 정확한 기호 형식을 반환하기 위해 부동소수점 입력값의 반올림 오차를 수정하려고 시도합니다. 특히, sym은 , , , 및 형식과 일치하는 숫자형 입력값의 반올림 오차를 수정합니다. 여기서 와 는 적당한 크기의 정수입니다.
이러한 형식에 대해, sym이 부동소수점 입력값을 정확한 기호 형식으로 변환하는 것을 확인합니다. 먼저, , 및 의 수치적 근삿값을 구합니다.
N = [1/7 pi 1/sqrt(2)]
N = 1×3
0.1429 3.1416 0.7071
수치 근삿값을 정확한 기호 형식으로 변환합니다. sym은 반올림 오차를 수정합니다.
S = sym(N)
S =
입력값을 따옴표로 묶어 sym이 입력값을 그대로 받도록 할 수 있습니다. 이전 입력값 0.142857142857143에서 이 동작을 확인합니다. sym 함수는 입력값을 1/7로 변환하지 않습니다.
sym('0.142857142857143')ans =
큰 숫자를 변환할 때는 따옴표를 사용하여 정확하게 표현합니다. sym(133333333333333333333)과 sym('133333333333333333333')을 비교하여 이 동작을 확인합니다.
sym(1333333333333333333)
ans =
sym('1333333333333333333')ans =
선택적인 두 번째 인수('f', 'r', 'e' 또는 'd')를 사용하여 sym이 부동소수점 숫자를 변환하기 위해 사용하는 기법을 지정할 수 있습니다. 유리수 형식의 경우 디폴트 플래그는 'r'입니다.
유리수 기호 형식으로 변환
'r' 플래그를 지정한 sym을 호출하여 입력값을 정확한 유리수 형식으로 변환합니다. 이는 플래그 없이 sym을 호출할 때 발생하는 디폴트 동작입니다.
t = 0.1;
sym(t,'r')ans =
부동소수점 전개를 사용한 변환
플래그 'f'를 지정하여 sym을 호출하면 sym은 을 사용하여 배정밀도 부동소수점 숫자를 숫자형 값으로 변환합니다. 여기서 과 는 각각 지수와 가수입니다.
부동소수점 전개를 사용하여 t를 변환합니다.
sym(t,'f')ans =
오차 항이 있는 유리수 기호 형식으로 변환
플래그 'e'를 지정하여 sym을 호출하면 sym은 t의 유리수 형식 및 t의 추정된 정확한 값과 해당 부동소수점 표현 사이의 오차를 반환합니다. 이 오차는 eps(부동소수점 상대 정밀도)로 표현됩니다.
t를 기호 형식으로 변환합니다. 추정된 기호 형식과 해당 부동소수점 값 사이의 오차를 반환합니다.
sym(t,'e')ans =
오차 항 eps/40는 sym('0.1')과 sym(0.1) 간의 차이입니다.
소수 형식으로 변환
플래그 'd'를 지정한 sym을 호출하면 sym은 입력값의 소수 전개를 반환합니다. digits 함수는 사용되는 유효 자릿수를 지정합니다. digits의 디폴트 값은 32입니다.
sym(t,'d')ans =
digits를 사용하여 유효 자릿수를 변경합니다.
digitsOld = digits(7);
sym(t,'d')ans =
추후 계산을 위해 digits의 이전 값을 복원합니다.
digits(digitsOld)
가변 정밀도로 변환
vpa를 사용하여 가변 정밀도 부동소수점 연산방식으로 기호 숫자를 만들 수 있습니다. 기본적으로 vpa는 32자리의 유효 자릿수로 값을 계산합니다.
piVpa = vpa(pi)
piVpa =
log(2)와 같은 숫자형 입력값에 대해 vpa를 사용하면 숫자 표현식은 먼저 32자리의 유효 자릿수 미만의 MATLAB® 디폴트 배정밀도 숫자로 계산됩니다. 그런 다음, vpa는 정확도가 떨어질 수 있는 해당 배정밀도 숫자에 적용됩니다. 보다 정확한 결과를 얻기 위해서는 sym을 사용하여 숫자 표현식을 기호 표현식으로 변환한 다음 vpa를 사용하여 가변 정밀도로 결과를 계산합니다. 예를 들어, 17자리 정밀도와 20자리 정밀도로 log(2)를 구합니다.
vpaOnDouble = vpa(log(2))
vpaOnDouble =
vpaOnSym_17 = vpa(log(sym(2)),17)
vpaOnSym_17 =
vpaOnSym_20 = vpa(log(sym(2)),20)
vpaOnSym_20 =
큰 숫자를 변환할 때는 따옴표를 사용하여 정확하게 표현합니다.
inaccurateNum = vpa(123456789012345678)
inaccurateNum =
accurateNum = vpa('123456789012345678')accurateNum =