numapprox[remez] - Remez algorithm for minimax rational approximation
|
Calling Sequence
|
|
remez(w, f, a, b, m, n, crit, 'maxerror')
|
|
Parameters
|
|
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 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
|
|
|
|
|
Description
|
|
•
|
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 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
|
|
(1)
|
|
|
|
is minimized over all rational expressions with numerator of degree m and denominator of degree n.
|
•
|
The value returned is an operator r such that 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 .
|
•
|
If 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.
|
|
|
Examples
|
|
>
|
|
>
|
w := proc(x) 1.0 end proc:
|
>
|
f := proc(x) evalf(exp(x)) end proc:
|
>
|
|
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
| (3) |
>
|
g := proc(x) if x=0 then 1.0 else evalf(tan(x)/x) end if end proc:
|
>
|
|
>
|
|
| (4) |
>
|
|
| (5) |
|
|
Download Help Document
Was this information helpful?