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 |
fun |
Function to be approximated. |
a , b |
Endpoints of the interval. |
n |
An integer |
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
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.4.4 Index]