Rational fraction approximation
Approximate Value of π
Approximate the value of using a rational representation of the quantity
The mathematical quantity is not a rational number, but the quantity
pi that approximates it is a rational number since all floating-point numbers are rational.
Find the rational representation of
format rational pi
ans = 355/113
The resulting expression is a character vector. You also can use
rats(pi) to get the same answer.
rat to see the continued fractional expansion of
R = rat(pi)
R = '3 + 1/(7 + 1/(16))'
The result is an approximation by continued fractional expansion. If you consider the first two terms of the expansion, you get the approximation , which only agrees with
pi to 2 decimals.
However, if you consider all three terms printed by
rat, you can recover the value
355/113, which agrees with
pi to 6 decimals.
Specify a tolerance for additional accuracy in the approximation.
R = rat(pi,1e-7)
R = '3 + 1/(7 + 1/(16 + 1/(-294)))'
The resulting approximation,
104348/33215, agrees with
pi to 9 decimals.
Express Array Elements as Ratios
Create a 4-by-4 matrix.
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
Express the elements of
X as ratios of small integers using
[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
The two matrices,
View the elements of
X as ratios using
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
In this form, it is clear that
N contains the numerators of each fraction and
D contains the denominators.
X — Input array
Input array, specified as a numeric array of class
Complex Number Support: Yes
tol — Tolerance
Tolerance, specified as a scalar.
X, such that
abs(N./D - X) <=
tol. The default tolerance is
R — Continued fraction
Continued fraction, returned as a character array with
m is the number of elements in
The accuracy of the rational approximation via continued fractions
increases with the number of terms.
N — Numerator
Numerator, returned as a numeric array.
D — Denominator
Denominator, returned as a numeric array.
Even though all floating-point numbers are rational numbers, it is sometimes desirable to approximate them by simple rational numbers, which are fractions whose numerator and denominator are small integers. Rational approximations are generated by truncating continued fraction expansions.
rat function approximates each element
X by a continued fraction of the form
The Ds are obtained by repeatedly picking
off the integer part and then taking the reciprocal of the fractional
part. The accuracy of the approximation increases exponentially with
the number of terms and is worst when
X = sqrt(2).
X = sqrt(2) , the error with
2.68*(.173)^k, so each additional term
increases the accuracy by less than one decimal digit. It takes 21
terms to get full floating-point accuracy.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
For code generation, only the two output syntax is supported.
Run code in the background using MATLAB®
backgroundPool or accelerate code with Parallel Computing Toolbox™
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.