Main Content

수치 형식에서 기호 형식으로 변환

이 항목에서는 Symbolic Math Toolbox™가 숫자를 기호 형식으로 변환하는 방법을 보여줍니다. 기호 연산방식 및 수치 연산방식에 대한 개요는 수치 연산방식 또는 기호 연산방식 선택하기 항목을 참조하십시오.

숫자형 입력값을 기호 형식으로 변환하려면 sym 명령을 사용하십시오. 기본적으로 sym은 숫자 표현식의 유리수 근삿값을 반환합니다.

t = 0.1;
sym(t)
ans =
1/10

sym을 사용하면 배정밀도 값 0.1이 정확한 기호 값 1/10로 근사하는 것을 확인할 수 있습니다. 일반적으로 sym은 정확한 기호 형식을 반환하기 위해 부동소수점 입력값의 반올림 오차를 수정하려고 시도합니다. 특히, symp/q, pπ/q, (p/q)1/2, 2q10q 형식과 일치하는 숫자형 입력값의 반올림 오차를 수정합니다. 여기서 p와 q는 적당한 크기의 정수입니다.

이러한 형식에 대해, sym이 부동소수점 입력값을 정확한 기호 형식으로 변환하는 것을 확인합니다. 먼저, 1/7, pi1/2의 수치적 근삿값을 구합니다.

N1 = 1/7
N2 = pi
N3 = 1/sqrt(2)
N1 =
    0.1429
N2 =
    3.1416
N3 =
    0.7071

수치 근삿값을 정확한 기호 형식으로 변환합니다. sym은 반올림 오차를 수정합니다.

S1 = sym(N1)
S2 = sym(N2)
S3 = sym(N3)
S1 =
1/7
S2 =
pi
S3 =
2^(1/2)/2

입력값과 추정된 정확한 형식 사이의 오차를 반환하려면 구문 sym(num,'e')를 사용하십시오. 오차 항이 있는 유리수 기호 형식으로 변환 항목을 참조하십시오.

입력값을 따옴표로 묶어 sym이 입력값을 그대로 받도록 할 수 있습니다. 이전 입력값 0.142857142857143에서 이 동작을 확인합니다. sym 함수는 입력값을 1/7로 변환하지 않습니다.

sym('0.142857142857143')
ans =
0.142857142857143

큰 숫자를 변환할 때는 따옴표를 사용하여 정확하게 표현합니다. sym(133333333333333333333)sym('133333333333333333333')을 비교하여 이 동작을 확인합니다.

sym(1333333333333333333)
sym('1333333333333333333')
ans =
1333333333333333248
ans =
1333333333333333333

선택적인 두 번째 인수('f', 'r', 'e' 또는 'd')를 사용하여 sym이 부동소수점 숫자를 변환하기 위해 사용하는 기법을 지정할 수 있습니다. 유리수 형식의 경우 디폴트 플래그는 'r'입니다.

유리수 기호 형식으로 변환

'r' 플래그를 지정하여 sym을 호출하여 입력값을 정확한 유리수 형식으로 변환합니다. 이는 플래그 없이 sym을 호출할 때 발생하는 디폴트 동작입니다.

sym(t, 'r')
ans =
1/10

부동소수점 전개를 사용한 변환

플래그 'f'를 지정하여 sym을 호출하면 symN*2^e을 사용하여 배정밀도 부동소수점 숫자를 숫자형 값으로 변환합니다. 여기서 Ne는 각각 지수와 가수입니다.

부동소수점 전개를 사용하여 t를 변환합니다.

sym(t, 'f')
ans =
3602879701896397/36028797018963968

오차 항이 있는 유리수 기호 형식으로 변환

플래그 'e'를 지정하여 sym을 호출하면 symt의 유리수 형식 및 t의 추정된 정확한 값과 해당 부동소수점 표현 사이의 오차를 반환합니다. 이 오차는 eps(부동소수점 상대 정밀도)로 표현됩니다.

t를 기호 형식으로 변환합니다. 추정된 기호 형식과 해당 부동소수점 값 사이의 오차를 반환합니다.

sym(t, 'e')
ans =
eps/40 + 1/10

오차 항 eps/40sym('0.1')sym(0.1) 간의 차이입니다.

소수 형식으로 변환

플래그 'd'를 지정하여 sym을 호출하면 sym은 입력값의 소수 전개를 반환합니다. digits 함수는 사용되는 유효 자릿수를 지정합니다. digits의 디폴트 값은 32입니다.

sym(t,'d')
ans =
0.10000000000000000555111512312578

digits를 사용하여 유효 자릿수를 변경합니다.

digitsOld = digits(7);
sym(t,'d')
ans =
0.1

추후 계산을 위해 digits의 이전 값을 복원합니다.

digits(digitsOld)