R: Rational Approximation

fractions {MASS} | R Documentation

## Rational Approximation

### Description

Find rational approximations to the components of a real numeric object using a standard continued fraction method.

### Usage

    fractions(x, cycles = 10, max.denominator = 2000, ...)

### Arguments

`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.

### Details

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.

The numerators and denominators are then combined into a character vector that becomes the `"fracs"` attribute and used in printed representations.

Arithmetic operations on `"fractions"` objects have full floating point accuracy, but the character representation printed out may not.

### Value

An object of class `"fractions"`. A structure with `.Data` component the same as the input numeric `x`, but with the rational approximations held as a character vector attribute, `"fracs"`. Arithmetic operations on `"fractions"` objects are possible.

### References

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth Edition. Springer.

### See Also

`rational`

### Examples

    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

    fractions(solve(X, X/5))
    ##      [,1] [,2] [,3] [,4] [,5]
    ## [1,] 1/5    0    0    0    0
    ## [2,]   0  1/5    0    0    0
    ## [3,]   0    0  1/5    0    0
    ## [4,]   0    0    0  1/5    0
    ## [5,]   0    0    0    0  1/5

    fractions(solve(X, X/5)) + 1
    ##      [,1] [,2] [,3] [,4] [,5]
    ## [1,] 6/5    1    1    1    1
    ## [2,]   1  6/5    1    1    1
    ## [3,]   1    1  6/5    1    1
    ## [4,]   1    1    1  6/5    1
    ## [5,]   1    1    1    1  6/5

[Package MASS version 7.2-45 Index]