Domain of continued fractions
This functionality does not run in MATLAB.
contfrac(r
, <n
>) contfrac(f
,x
, <m
>) contfrac(f
,x = x0
, <m
>)
contfrac(r)
creates a continued fraction
approximation of the real number r
.
contfrac(f, x = x0)
creates a continued fraction
approximation of the expression f
as a function
of x
around x = x0
.
The continued fraction expansion contfrac(r n )
of
a real number or numerical expression r
is an expansion
of the form
where a1
is the integer floor(r)
and a2
, a3
,
... are positive integers.
The continued fraction is computed by numlib::contfrac(r
< n >)
; the expansion returned by contfrac
is
of domain type numlib::contfrac
.
See the documentation of numlib::contfrac
for further details.
A continued fraction expansion contfrac(f, x = x0)
of
a symbolic expression f
in the indeterminate x
is
an expansion of the form
where
a_{1}, …, a_{k} are arithmetical expressions not containing powers of x  x_{0}. The coefficients a_{2}, …, a_{k} are nonzero.
e_{1} is a rational number and e_{2}, …, e_{k} are positive rational numbers. If a_{1} ≠ 0, then e_{1} is positive as well.
If
or x0
= complexInfinity
, the terms (x  x_{0})^{ei} have
to be replaced by
.
For symbolic expressions f
, contfrac(f,
x = x0)
returns an expansion of domain type contfrac
.
One may also call contfrac(f)
without specifying
an identifier x
. In this case, contfrac
extracts
the indeterminates in f
automatically via indets
. FAIL
is
returned if more than one indeterminate is found.
If m
is not specified, the default value m
= ORDER
is
used.
contfrac
uses the function Series::Puiseux::contfrac
to
compute the continued fraction in the symbolic case. If f
is
a rational function with respect to the expansion variable x
,
and the `truncation order' m
is
not specified, then contfrac
returns an exact continued
fraction expansion of f
. Cf. Example 3.
When called with an irrational numerical value r
,
the function is sensitive to the environment variable DIGITS
which
determines the numerical working precision. For symbolic expressions f
,
the function is sensitive to the environment variable ORDER
which
determines the number of terms in truncated series expansions.
We compute some continued fraction expansions of real numbers:
contfrac(27/31), contfrac(PI, 5)
They can also be computed by direct calls to numlib::contfrac
:
numlib::contfrac(27/31), numlib::contfrac(PI, 5)
We compute symbolic continued fractions of functions:
contfrac(exp(x), x = 0), contfrac(exp(3*x^2), x = 0)
If no expansion variable is specified, the symbolic expression to be expanded must be univariate:
contfrac(exp(x*y))
Error: The first argument must be a univariate expression. [contfrac::function]
Symbolic parameters are accepted if the expansion variable is specified:
contfrac(exp(x*y), x)
In the next call, we specify the expansion point x
= 1
and request a specific `number of terms' by the third
argument:
contfrac(exp(x*y), x = 1, 3);
For rational functions, exact representations are returned when
no specific `number of terms' is requested. The method "rational"
returns
the rational expression equivalent to the continued fraction:
cf := contfrac((x  y)/(x^3 + y^3), x, 2): cf, contfrac::rational(cf);
cf := contfrac((x  y)/(x^3 + y^3), x): cf, contfrac::rational(cf);
The coefficients and expansion terms of a continued fraction
can be accessed by the functions nthcoeff
and nthterm
:
cf := contfrac(sin(1/x), x = infinity, 4)
nthcoeff(cf, 1), nthcoeff(cf, 2), nthcoeff(cf, 3), nthcoeff(cf, 4);
nthterm(cf, 1), nthterm(cf, 2), nthterm(cf, 3)
delete cf:
We can compute a series expansion of a continued fraction via series
:
cf := contfrac(sin(x)/(x  PI)  1, x = PI)
If no further arguments are given in series
,
the default expansion variable is op
(cf, 3); the
default expansion point is op
(cf, 4):
op(cf, 3), op(cf, 4)
series(cf)
Both the series variable as well as the expansion point may
be passed explicitly to series
.
series(cf, x = PI)
However, the values must coincide with the values used to compute
the continued fraction: In the following call, the default expansion
point x = 0
is used by series
. This clashes with the expansion
point x = PI
of the continued fraction:
series(cf, x)
Error: The expansion point 'PI' of the continued fraction does not coincide with the requested expansion point '0' of the series. [contfrac::series]
delete cf:

A real number or a numerical expression that can be converted to a real floatingpoint number 

The number of significant decimal digits: a positive integer.
The default value is 

An arithmetical expression interpreted as a function of x 

An identifier 

The expansion point: an arithmetical expression,
or 

The `number of terms': a positive integer. The default value
is 
Call contfrac(r n )
with a numerical value r
returns
an object of type numlib::contfrac
.
The call contfrac(f, x = x0 m )
with a symbolic
expression f
returns an object of type contfrac
. FAIL
is
returned if no series expansion of f
around x0
could
be computed.