首页 > 代码库 > maple中remez()函数

maple中remez()函数

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 of 
                           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 -> 0.9999988705 + (1.000079457 + (0.4990960985


   + (0.1704019738 + (0.03480057115 + 0.01390372811 x) x) x) 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) 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

maple中remez()函数