This function uses a non-linear interpolation (Lagrange) to estimate y given x, based on a set of observed x-y points. Coordinates will be sorted based on the x-value of the pair. The x-value provided by the user to calculate y will be estimated using two points left and two points right of the provided x-value.
While this function will allow the user to prescribe any number of observed points to be used for the interpolation, caution should be used when more than four points are used in the equation. This function will induce oscillations such that accuracy of interpolation may diverge intermittently on linear types of data.
This function is written to maximize the capabilities of Matlab both in terms of intrinsic speed of the logic written here and utilizing native Matlab functions as much as possible without overtly complicating the process. Essentially, there are 10 lines of code to perform the calculation. All the rest are more administrative in nature.
Also previously stated, the trade-off for not using any recursive logic does require more memory to be used given how arrays are manipulated in Matlab. However, unlike the trend test, this function is highly unlikely to use any excessive amounts of memory beyond what the user consumes with the data prior to being processed here. Unless, of course, the user specifies some ridiculous amount of points to be considered as part of
If an error is trapped and returned, it’s most likely caused by the user specifing an x value such that the provided x-y data does not have enough x-values to bracket the intended estimate, causing an EXTRAPOLATION.
estY = lagrange(datainXY, x, N);
datainXY = (N x 2) double, Col1 = X, Col2 = Y
x = x-value used for locating estimate of Y
N = number of points in datainXY to use for interpolation
Embedded two examples to use the function, the first one for getting just one output estimated value for a given position, the second way is for a series positions to estimate their value and plot the results with the original function on one chart. You can use a tabulated data or a function then estimate its value then rearrange it in two column matrix.