+6 07 553 86 86 arazin@utm.my

The point interpolation method (PIM) is a meshfree method used for fitting a curve based on a set of nodal values at specified locations. The PIM uses polynomial interpolation to fit the curve, and the number of polynomial terms required increases with the number of nodes involved. When the distribution of nodes follows a polynomial curve, the PIM can accurately fit these nodes without difficulty. However, when the nodes are distributed arbitrarily, the PIM may have instability issues, especially when many nodes are involved.

To establish the PIM formulation, we begin with a polynomial representation of a function in a 1D system. We link each nodal value that we have to the fitted function using a general form, and obtain a matrix of shape functions. By multiplying the shape function matrix with the nodal values, we can obtain a fitted curve. To produce a continuous fitted curve, we create a spatial variable and obtain a shape function matrix.

The implementation codes for these steps are provided in the article, including MATLAB codes that allow us to try any number of given curve nodes and observe the performance of the PIM in fitting the curve. It’s important to note that the number of unknowns must be equal to the number of given nodes in the PIM. By solving for these unknowns, we can obtain a general fitted function that yields a continuous interpolated function along x, based on given nodal values at specified locations.

Overall, the PIM is a useful method for fitting curves based on a set of nodal values. Its simplicity and flexibility make it a popular choice in many applications. However, it’s important to be aware of the limitations of the PIM, particularly with regards to instability issues when many nodes are involved.

click here!

clear, clc

uc = [0 -0.8 4.8 2 -1 0 0 -4.7 2 1 0]' % nodal values of a curve

n = length(uc) % number of given nodes
xc = [0:(n-1)]' % x coordinates (assumed uniform)

Pc = [];
for i = 1:n
Pci = xc(i).^(0:(n-1))
Pc = cat(1,Pc,Pci) % generate the Pc matrix
end

dxc = 0.1; % step (can be changed if necessary)
x = min(xc):dxc:max(xc) % interpolation locations

px = [];
for i = 1:length(x)
pxi = x(i).^(0:(n-1));
px = cat(1,px,pxi); % generate the Pc matrix
end
phi = px/Pc

fx = phi*uc

cla
plot(xc,uc,'rx','MarkerSize',10,'LineWidth',2)
hold on
plot(x,fx,'b--')
hold off
box off