R: Chebyshev Approximation

chebApprox {pracma} | R Documentation

## Chebyshev Approximation

### Description

Function approximation through Chebyshev polynomials (of the first kind).

### Usage

    chebApprox(x, fun, a, b, n)

### Arguments

`x` | Numeric vector of points within interval `[a, b]`.
`fun` | Function to be approximated.
`a, b` | Endpoints of the interval.
`n` | An integer `>= 0`.

### Details

Return approximate y-coordinates of points at x by computing the Chebyshev approximation of degree n for `fun` on the interval `[a, b]`.

### Value

A numeric vector of the same length as `x`.

### Note

TODO: Evaluate the Chebyshev approximative polynomial by using the Clenshaw recurrence formula. (Not yet vectorized, that's why we still use the Horner scheme.)

### References

Press, W. H., S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery (1992). Numerical Recipes in C: The Art of Scientific Computing. Second Edition, Cambridge University Press.

### See Also

`polyApprox`

### Examples

    # Approximate sin(x) on [-pi, pi] with a polynomial of degree 9 !
    # This polynomial has to be beaten:
    # P(x) = x - 1/6*x^3 + 1/120*x^5 - 1/5040*x^7 + 1/362880*x^9

    # Compare these polynomials
    p1 <- rev(c(0, 1, 0, -1/6, 0, 1/120, 0, -1/5040, 0, 1/362880))
    p2 <- chebCoeff(sin, -pi, pi, 9)

    # Estimate the maximal distance
    x  <- seq(-pi, pi, length.out = 101)
    ys <- sin(x)
    yp <- polyval(p1, x)
    yc <- chebApprox(x, sin, -pi, pi, 9)
    max(abs(ys-yp))                       # 0.006925271
    max(abs(ys-yc))                       # 1.151207e-05

    ## Not run:
    # Plot the corresponding curves
    plot(x, ys, type = "l", col = "gray", lwd = 5)
    lines(x, yp, col = "navy")
    lines(x, yc, col = "red")
    grid()
    ## End(Not run)

[Package pracma version 2.0.4 Index]