The polynomial that fits a set of node points can also be obtained by the Lagrange interpolation:
(15) |
(16) |
(17) |
(18) |
Specially, when , i.e., , we get an important property of the Lagrange basis polynomials:
(19) |
Due to the uniqueness of the polynomial interpolation, , and they have the same error function as in Eq. (12):
(20) |
The computational complexity for calculating one of the basis polynomials is and the complexity for is for each . If there are samples for , then the total complexity is .
To reduce the computational complexity, we express the numerator of based on the (n+1)th degree polynomial defined in Eq. (7) as
(21) |
(22) |
(23) |
(24) |
Example: Approximate function by a polynomial of degree , based on the following points:
Based on these points, we construct the Lagrange polynomials as
the basis functions of the polynomial space (instead of the power
functions in the previous example):
The Matlab code that implements the Lagrange interpolation (both methods) is listed below:
function [v L]=LI(u,x,y) % Lagrange Interpolation % vectors x and y contain n+1 points and the corresponding function values % vector u contains all discrete samples of the continuous argument of f(x) n=length(x); % number of interpolating points k=length(u); % number of discrete sample points v=zeros(1,k); % Lagrange interpolation L=ones(n,k); % Lagrange basis polynomials for i=1:n for j=1:n if j~=i L(i,:)=L(i,:).*(u-x(j))/(x(i)-x(j)); end end v=v+y(i)*L(i,:); end end
function [v L]=LInew(u,x,y) % Lagrange interpolation % u: data points; (x,y) sample points n=length(x); % number of sample points m=length(u); % number of data points L=ones(n,m); % Lagrange basis polynomials v=zeros(1,m); % interpolation results w=ones(1,m); % omega(x) dw=ones(1,n); % omega'(x_i) for i=1:n w=w.*(u-x(i)); for j=1:n if j~=i dw(i)=dw(i)*(x(i)-x(j)); end end end for i=1:n L(i,:)=w./(u-x(i))/dw(i); v=v+y(i)*L(i,:); end end