Lagrange polynomial interpolation

Suppose you use a zener diode for a voltage regulator circuit (to filter out the
small sinusoidal ripple voltage and to refine the constant power signal).
You need to use the voltage - current characteristic *I = I(V)* in order to
compute the steady-state voltage drop across the electric network. However,
this function is not amenable to representation with a simple analytical expression.
Instead, measurements are available only for several data points. Plotted on a graph
"Voltage vs. Current", they look like this (click the image to enlarge):

How to connect the data values and to reproduce a simple analytical representation
of the voltage - current characteristic? This is a problem of numerical interpolation:
find a function *I(V)* that passes through each of the data points
(*V _{k},I_{k}*) for

Given *(n+1)* data points, we shall look for a polynomial of degree *n*
that has *(n+1)* undefined coefficients:

I(V) = a_{0} + a_{1} V + a_{2} V^{2}
+ a_{3} V^{3} + ... + + a_{n-1} V^{n}
+ a_{n} V^{n}

The *(n+1)* coefficients must be matched with the *(n+1)* data values.
There are two numerically accurate algorithms to find the same polynomial *I(V)*
based on Lagrange and Newton interpolating polynomials. Both the methods use
the following matching conditions:

I(V_{k}) = I_{k}, k=0,1,2,...,n,

that give *(n+1)* linear equations for *(n+1)* unknown coefficients of the
interpolating polynomial. One can think about a straightforward method to solve the
resulting linear system. However, the system is numerically ILL-conditioned and
produces inaccurate numerical results. Instead of solving the linear problem, we
follow to the Lagrange and Newton's methods to define the interpolating polynomials.

Consider the following (Lagrange interpolating) polynomial *L _{n,k}(V) * as

(V-V_{0}) (V-V_{1}) ... (V-V_{k-1})
(V-V_{k+1}) ... (V-V_{n})

---------------------------------------------------------------

(V_{k}-V_{0})
(V_{k}-V_{1}) ... (V_{k}-V_{k-1})
(V_{k}-V_{k+1}) ... (V_{k}-V_{n})

It is clear that the Lagrange interpolating polynomial *L _{n,k}(V) *

- is a polynomial of degree
*n* - vanishes at
*V=V*,_{0}*V=V*, ... ,_{1}*V=V*,_{k-1}*V=V*, ..._{k+1}*V=V*_{n} - equals to
*1*for*V=V*_{k}

Based on these three key properties, we verify that the following polynomial

I(V) = I_{0} L_{n,0}(V) + I_{1} L_{n,1}(V) ...
+ I_{n} L_{n,n}(V)

has degree *n* and passes through all *(n+1)* data points. Between the
data points, the Lagrange interpolating polynomial is expected to approximate
the unknown "exact" function *I = I _{exact}(V)* with the error bound:

| I(V) - I_{exact}(V) | < C | (V-V_{0}) (V-V_{1}) ... (V-V_{n}) |,

where *C* is a constant defined at the interval *V = [V _{0},V_{n}]*.
If the data values are equally spaced, i.e.

- Polynomial interpolation
- Discusses limitations of the polynomial interpolation for the data values above
- MATLAB codes for Lagrange interpolation
- Discusses MATLAB matrix capacities for coding the Lagrange interpolating algorithm