rational {MASS} | R Documentation |
Find rational approximations to the components of a real numeric object using a standard continued fraction method.
rational(x, cycles = 10, max.denominator = 2000, ...)
x |
Any object of mode numeric. Missing values are now allowed. |
cycles |
The maximum number of steps to be used in the continued fraction approximation process. |
max.denominator |
An early termination criterion. If any partial denominator
exceeds max.denominator the continued fraction stops at that point.
|
... |
arguments passed to or from other methods. |
Each component is first expanded in a continued fraction of the form
x = floor(x) + 1/(p1 + 1/(p2 + ...)))
where p1
, p2
, ... are positive integers, terminating either
at cycles
terms or when a pj > max.denominator
. The
continued fraction is then re-arranged to retrieve the numerator
and denominator as integers and the ratio returned as the value.
A numeric object with the same attributes as x
but with entries
rational approximations to the values. This effectively rounds
relative to the size of the object and replaces very small
entries by zero.
X <- matrix(runif(25), 5, 5) solve(X, X/5) ## [,1] [,2] [,3] [,4] [,5] ## [1,] 2.0000e-01 3.7199e-17 1.2214e-16 5.7887e-17 -8.7841e-17 ## [2,] -1.1473e-16 2.0000e-01 7.0955e-17 2.0300e-17 -1.0566e-16 ## [3,] 2.7975e-16 1.3653e-17 2.0000e-01 -1.3397e-16 1.5577e-16 ## [4,] -2.9196e-16 2.0412e-17 1.5618e-16 2.0000e-01 -2.1921e-16 ## [5,] -3.6476e-17 -3.6430e-17 3.6432e-17 4.7690e-17 2.0000e-01 ## rational(solve(X, X/5)) ## [,1] [,2] [,3] [,4] [,5] ## [1,] 0.2 0.0 0.0 0.0 0.0 ## [2,] 0.0 0.2 0.0 0.0 0.0 ## [3,] 0.0 0.0 0.2 0.0 0.0 ## [4,] 0.0 0.0 0.0 0.2 0.0 ## [5,] 0.0 0.0 0.0 0.0 0.2