Main Content

rat

유리 분수 근삿값

설명

R = rat(X)는 디폴트 허용오차 1e-6*norm(X(:),1) 이내로 X유리 분수 근삿값을 반환합니다. 근삿값은 잘려진 연분수 전개를 포함하는 문자형 배열입니다.

예제

R = rat(X,tol)은 허용오차 tol 이내로 X의 근삿값을 구합니다.

예제

[N,D] = rat(___)는 위에 열거된 구문을 사용해 N./DX의 근삿값이 됨을 만족하는 두 배열 ND를 반환합니다.

예제

예제

모두 축소

수량 pi의 유리수 표현을 사용하여 π 값의 근삿값을 계산합니다.

수학적 수량 π는 유리수가 아니지만, 모든 부동소수점 수는 유리수이므로 이 수량의 근삿값을 계산하는 수량 pi유리수입니다.

pi의 유리수 표현을 구합니다.

format rational
pi
ans = 
     355/113   

이 결과는 문자형 벡터로 표현됩니다. rats(pi)를 사용해도 같은 답을 얻을 수 있습니다.

pi의 연분수 전개를 보려면 rat를 사용하십시오.

R = rat(pi)
R = 
'3 + 1/(7 + 1/(16))'

결과는 연분수 전개에 의한 근삿값입니다. 전개의 처음 두 항을 고려할 경우, 근삿값 3+17=227를 얻습니다. 이는 소수 자릿수 2자리까지만 pi와 일치합니다.

하지만, rat에서 출력하는 세 개 항을 모두 고려할 경우, 값 355/113를 복구할 수 있으며, 이 값은 소수 자릿수 6자리까지 pi와 일치합니다.

3+17+116=355113

근삿값의 정확도를 높일 수 있도록 허용오차를 지정합니다.

R = rat(pi,1e-7)
R = 
'3 + 1/(7 + 1/(16 + 1/(-294)))'

결과로 나타나는 근삿값 104348/33215은 소수 자릿수 9자리까지 pi와 일치합니다.

4×4 행렬을 만듭니다.

format short;
X = hilb(4)
X = 4×4

    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

rat를 사용하여 X의 요소를 작은 정수의 비로 표현합니다.

[N,D] = rat(X)
N = 4×4

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

D = 4×4

     1     2     3     4
     2     3     4     5
     3     4     5     6
     4     5     6     7

두 행렬 NDN./D를 통해 X의 근삿값을 계산합니다.

format rational을 사용하여 X의 요소를 비율로 봅니다.

format rational
X
X = 
       1              1/2            1/3            1/4     
       1/2            1/3            1/4            1/5     
       1/3            1/4            1/5            1/6     
       1/4            1/5            1/6            1/7     

이 형태를 보면 N에는 각 분수의 분자가 포함되고 D에는 분모가 포함됨이 명확하게 보입니다.

입력 인수

모두 축소

입력 배열로, 클래스 single 또는 double형으로 구성된 숫자형 배열로 지정됩니다.

데이터형: single | double
복소수 지원 여부:

허용오차로, 스칼라로 지정됩니다. NDabs(N./D - X) <= tol이 성립되도록 X의 근삿값을 계산합니다. 디폴트 허용오차는 1e-6*norm(X(:),1)입니다.

출력 인수

모두 축소

연분수로, m개 행을 갖는 문자형 배열로 반환됩니다. 여기서 mX에 있는 요소의 개수입니다. 연분수를 통한 유리수 근삿값의 정확도는 항 개수와 함께 높아집니다.

분자로, 숫자형 배열로 반환됩니다. N./DX의 근삿값을 계산합니다.

분모로, 숫자형 배열로 반환됩니다. N./DX의 근삿값을 계산합니다.

알고리즘

모든 부동소수점 수가 유리수이더라도, 때로는 분자와 분모가 작은 정수로 이루어진 분수인 간단한 유리수를 사용해 근삿값을 계산하는 것이 낫습니다. 유리수 근삿값은 연분수 전개를 잘라서 생성할 수 있습니다.

rat 함수는 다음 형식의 연분수로 X의 각 요소 근사치를 계산합니다.

ND=D1+1D2+1+1Dk.

D는 반복적으로 정수부를 골라내고 소수부의 역수를 취해 얻을 수 있습니다. 근삿값의 정확도는 항의 개수와 더불어 기하급수적으로 높아지고 X = sqrt(2)일 때 가장 떨어집니다. X = sqrt(2)인 경우, k개 항을 사용한 경우의 오차는 약 2.68*(.173)^k이므로, 각각의 항이 추가될 때마다 한 자리 미만의 소수점 자릿수만큼 정확도가 올라갑니다. 완전한 부동소수점 정확도를 얻으려면 21개 항이 필요합니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

|