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
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
W | f-r |
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
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) |, 'in' (x, [a, B])
(1)
Is minimized over all rational expressions
P (x)
R (x) = ----
Q (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
1
W (x) = ------
| F (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.
Examples
With (numapprox );
W: = proc (x) 1.0 end proc:
F: = proc (x) evalf (exp (x) end proc:
Crit: = array (1 .. 7, [0,. 10,. 25,. 50,. 75,. 90, 1.0]);
Remez (W, F, 0, 1, 5, 0, crit, 'maxerror ');
X-& gt; 0.9999988705 + (1.000079457 + (0.4990960985
+ (0.1704019738 + (0.03480057115 + 0.01390372811 X) x
Maxerror;
0.000001129739955
Digits: = 14;
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.5e-1,. 15,. 30,. 48,. 63,. 73,. 78]);
Remez (W, G, 0, evalf (1/4) * PI), 3, 3, crit, 'maxerror ');
X-> (1.2864938726745 + (-0.50393137136308
+ (-0.084263112185419 + 0.030873561129257 X) x )/
(1.2864938819561 + (-0.50393243320449
+ (-0.51307429865340 + 0.19870614448995 X) x) X)
Maxerror;
-9
7.21510 10
See also
Numapprox [Minimax]
Pages that link to this page
Remez () function in maple