numapprox
remez
Remez algorithm for minimax rational approximation
Calling Sequence
Parameters
Description
Examples
remez(w, f, a, b, m, n, crit, 'maxerror')
w
-
procedure representing a weight function w(x) > 0 on [a, b]
f
procedure representing the function f(x) to be approximated
a, b
numeric values specifying the interval [a, b]
m
integer specifying the desired degree of the numerator
n
integer specifying the desired degree of the denominator
crit
Array indexed 1..m+n+2 containing an initial estimate of the critical set (i.e. the points of max/min of the error curve)
maxerror
name which will be assigned the minimax norm of w⁢f−r
This is not usually invoked as a user-level routine. See numapprox[minimax] for the standard user interface to the Remez algorithm.
This procedure computes the best minimax rational approximation of degree m,n for a given real function f(x) on the interval [a, b] with respect to the positive weight function w(x).
Specifically, it computes the rational expression r(x) such that
max⁡w⁡x⁢f⁡x−r⁡x,x∈a,b
(1)
is minimized over all rational expressions r⁡x=p⁡xq⁡x with numerator of degree m and denominator of degree n.
The value returned is an operator r such that r⁡x is the desired approximation as a quotient of polynomials in Horner (nested multiplication) form.
Note that if f(x) is nonzero on the interval of approximation then the relative error will be minimized by specifying the weight function w⁡x=1f⁡x.
If n=0 then the best minimax polynomial approximation of degree m is computed.
The last argument 'maxerror' must be a name and upon return, its value will be an estimate of the minimax norm specified by equation (1) above.
Various levels of user information will be displayed during the computation if infolevel[remez] is assigned values between 1 and 3.
The command with(numapprox,remez) allows the use of the abbreviated form of this command.
with⁡numapprox:
w := proc(x) 1.0 end proc:
f := proc(x) evalf(exp(x)) end proc:
crit≔Array⁡1..7,0,0.10,0.25,0.50,0.75,0.90,1.0:
remez⁡w,f,0,1,5,0,crit,maxerror
x↦0.9999988700+1.000079446+0.4990961949+0.1704017036+0.03480086848+0.01390361442⋅x⋅x⋅x⋅x⋅x
1.131059045×10−6
Digits≔14
g := proc(x) if x=0 then 1.0 else evalf(tan(x)/x) end if end proc:
crit≔Array⁡1..8,0,0.05,0.15,0.30,0.48,0.63,0.73,0.78:
remez⁡w,g,0,evalf⁡π4,3,3,crit,maxerror
x↦1.2864938726745+−0.50393137136308+−0.084263112185419+0.030873561129257⋅x⋅x⋅x1.2864938819561+−0.50393243320449+−0.51307429865340+0.19870614448995⋅x⋅x⋅x
7.21510×10−9
See Also
numapprox[minimax]
Download Help Document