compute a rational interpolating function - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Mathematics : Numerical Computations : Interpolation and Curve Fitting : CurveFitting Package : CurveFitting/RationalInterpolation

CurveFitting[RationalInterpolation] - compute a rational interpolating function

Calling Sequence

RationalInterpolation(xydata, z, opts)

RationalInterpolation(xdata, ydata, z, opts)




list, Array, or Matrix of the form [[x0,y0], [x1,y1], ... , [xn,yn]] ; data points



list, Array, or Vector of the form [x0, x1, ..., xn]; independent values



list, Array, or Vector of the form [y0, y1, ..., yn]; dependent values



name or numeric value



(optional) equation of the form method=methodtype or degrees=[d1, d2]



The RationalInterpolation routine computes a rational function uv, where u and v are polynomials in variable z having degrees at most d1 and d2, respectively. The degrees d1 and d2 can be provided by using the degrees option.  Otherwise, default values of d1=floor12n and d2=floor12n+12 are used, where n is one less than the total number of data points. If z is a numerical value, then the value of the function at this point is returned.  The polynomials u and v satisfy ykvxkuxk=0 for k=0,1,...,d1+d2, where {x0,y0,x1,y1,...,xn,yn}, d1+d2n, are the input points.  In most (but not all) cases, this is equivalent to finding a rational function in z having certain degree constraints that interpolate the given points.


The RationalInterpolation function can be called in two ways.


The first form accepts a list, Array, or Matrix, [[x0,y0],[x1,y1],...,[xn,yn]], of data points.


The second form accepts this input data as two lists, two Arrays, or two Vectors. In this form, the first set of data contains the independent values, [x0,x1,...,xn], and the second set of data contains the dependent values, [y0,y1,...,yn].  Each element must be of type algebraic and not of type float, as the routine requires exact data.  All the independent values must be distinct.


Sometimes the linearized equation gives polynomials u and v that satisfy it, but with at least one of the xk a common zero. In this case, the resulting rational function does not interpolate the point xk (called an "unattainable" point), since common factors are removed from the rational function.  In such cases, the routine finds the rational function that interpolates a maximum number of points with the given degree constraints.  The case where there are unattainable points is recognizable by the fact that the degrees of both the numerator and the denominator are less than the degree constraints.


Two methods are available: one that avoids singularities in the corresponding table of interpolants by a "look-around" procedure, and another that jumps singularities by a "look-ahead" procedure.  The second procedure uses a recursion similar to that used for subresultant computation.  Both algorithms are fraction-free. The method can be specified by including the method=methodtype option, where methodtype is either lookaround (the default "look-around" procedure) or subresultant (the "look-ahead" procedure).


This function is part of the CurveFitting package, and so it can be used in the form RationalInterpolation(..) only after executing the command with(CurveFitting).  However, it can always be accessed through the long form of the command by using CurveFitting[RationalInterpolation](..).






It can be verified that, in the previous example, the result interpolates the given points.  In the next example, x=4 is an unattainable point.








See Also

CurveFitting, type/algebraic



Beckermann, B., and Labahn, G. "Fraction-free Computation of Matrix Rational Interpolants and Matrix GCDs." SIAM Journal on Matrix Analysis and Applications, Vol. 22, No. 1. (2000): 114-144.


Beckermann, B., and Labahn, G. "Numeric and Symbolic Computation of Problems Defined by Structured Linear Systems." Reliable Computing, Vol. 6, No. 4. (2000): 365-390.

Download Help Document

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam