## Name:

chebyshevform computes a rigorous polynomial approximation

## Library name:

sollya_obj_t sollya_lib_chebyshevform(sollya_obj_t, sollya_obj_t,                                       sollya_obj_t);

## Usage:

chebyshevform(f, n, I) : (function, integer, range) -> list

## Parameters:

• f is the function to be approximated.
• n is the degree of the polynomial that must approximate f.
• I is the interval over which the function is to be approximated. This interval cannot be a point interval, i.e. its endpoints have to be different.

## Description:

• WARNING: chebyshevform is a certified command, not difficult to use but not completely straightforward to use either. In order to be sure to use it correctly, the reader is invited to carefully read this documentation entirely.
• chebyshevform computes an approximation polynomial and an interval error bound for a given function f.
More precisely, it returns a list L=[p, coeffErrors, Delta, chebCoeffs] where:
• p is an approximation polynomial of degree n which is roughly speaking a numerical Chebyshev interpolation polynomial of f over I represented in monomial basis.
• coeffsErrors is a list of n+1 intervals. Each interval coeffsErrors[i] contains an enclosure of all the errors accumulated when computing the i-th coefficient of p.
• Delta is an interval that provides a bound for the approximation error between p and f. See details below.
• chebCoeffs is a list of n+1 intervals. These are the interval coefficients obtained for the representation of interpolation polynomial considered in Chebyshev basis. See details below.
• The polynomial p and the bound Delta are obtained using Chebyshev Models principles.
• More formally, the mathematical property ensured by the algorithm may be stated as follows:
Using monomial basis representation given by p: there exist (small) values eps[i] in coeffsErrors[i] such that: for all x in I, there exists delta in Delta such that f(x) - p(x) = sum{i=0...n} eps[i]*x^i + delta.
Using Chebyshev basis representation given by chebCoeffs: there exist values alpha[i] in chebCoeffs[i] such that: for all x in I, there exists delta in Delta such that f(x) - sum{i=0...n} alpha[i]*T_i(y) = delta, where [a,b]=I, y=(2*x-b-a)/(b-a) and T_i(y) is the i-th Chebyshev polynomial over [-1,1].
• The algorithm does not guarantee that by increasing the degree of the approximation, the remainder bound will become smaller. Moreover, it may even become larger due to the dependency phenomenon present with interval arithmetic. In order to reduce this phenomenon, a possible solution is to split the definition domain I into several smaller intervals.

## Example 1:

> TL=chebyshevform(exp(x), 10, [-1,1]);
> p=TL[0];
> Delta=TL[2];
> p; Delta;
1.00000000000000000000000000000000000000000000000017 + x * (1.0000000002738981919773953471453626764777115166417 + x * (0.50000000002276754368023326882542097365411870042312 + x * (0.166666661190450656168988993421371510533693281444003 + x * (4.1666666211440433973188799509591566161569698904644e-2 + x * (8.3333639749825520034240517636254576844423981913793e-3 + x * (1.38889143636148090706862105537216777944219976325265e-3 + x * (1.98342776066472142284727329700227389403558111865906e-4 + x * (2.47957727598277888282218067965324267955768146489014e-5 + x * (2.8254033440982477266316370012542019511804700836066e-6 + x * 2.8136983333718843135828091163040197490633045592362e-7)))))))))
[-2.71406412827174505775085010461449926572460824320373e-11;2.71406412827174505775085010461449926572460824320373e-11]