chebApprox | R Documentation |
Function approximation through Chebyshev polynomials (of the first kind).
chebApprox(x, fun, a, b, n)
x |
Numeric vector of points within interval |
fun |
Function to be approximated. |
a, b |
Endpoints of the interval. |
n |
An integer |
Return approximate y-coordinates of points at x by computing the
Chebyshev approximation of degree n for fun
on the interval
[a, b]
.
A numeric vector of the same length as x
.
TODO: Evaluate the Chebyshev approximative polynomial by using the Clenshaw recurrence formula. (Not yet vectorized, that's why we still use the Horner scheme.)
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.
polyApprox
# 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.