Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Approximate a function with a polynomial
ResourceFunction["PolynomialApproximation"][f,{x,xmin,xmax},n, "type"] finds an nth order polynomial of a given type that approximates the function f for x∈[xmin,xmax]. |
| "Taylor" | Taylor expansion around (xmin+xmax)/2 |
| "Equispaced" | Polynomial going through n+1 points equispaced between xmin and xmax |
| "Chebyshev" | Polynomial going through n+1 Chebyshev nodes |
| "Remez" | Iteratively optimize the nodes starting with Chebyshev nodes |
| {“Remez”, m} | Remez with m iterations |
Find the second-order Taylor polynomial approximating the sine function:
| In[1]:= |
| Out[1]= |
Compare with the original function:
| In[2]:= |
| Out[2]= | ![]() |
Use equispaced points to get a better approximation:
| In[3]:= | ![]() |
| Out[5]= | ![]() |
Use Chebyshev points to get an even better approximation:
| In[6]:= | ![]() |
| Out[8]= | ![]() |
The polynomial produced by the Remez method yields a nearly-optimal approximation:
| In[9]:= | ![]() |
| Out[11]= | ![]() |
Perform 6 iterations for the Remez method, and then compare the error:
| In[12]:= | ![]() |
| Out[14]= | ![]() |
Find a function that can approximate the cosine function for angles up to
:
| In[15]:= |
| Out[16]= | ![]() |
Calculate several orders and compare the maximum absolute error:
| In[17]:= | ![]() |
| Out[18]= | ![]() |
The Remez method does not always converge:
| In[19]:= | ![]() |
| Out[21]= | ![]() |
Higher order Remez might not converge to a good solution:
| In[22]:= | ![]() |
| Out[24]= | ![]() |
Higher order Remez might be prone to numerical errors:
| In[25]:= |
| Out[25]= | ![]() |
Functions that are not continuous can not be approximated very well:
| In[26]:= | ![]() |
| Out[28]= | ![]() |
Find a function that approximates a normal distribution:
| In[29]:= | ![]() |
| Out[31]= | ![]() |
Find the maximum error:
| In[32]:= |
| Out[32]= |
Compare that to the Chebyshev case:
| In[33]:= | ![]() |
| Out[34]= | ![]() |
| In[35]:= |
| Out[35]= |
Wolfram Language 13.2 (December 2022) or above
This work is licensed under a Creative Commons Attribution 4.0 International License