
Calling Sequence


LinearTriangularInterpolation(xy,z)
f:=LinearTriangularInterpolation(xy,z)
f(x,y)
f(M)


Parameters


xy



listlist, Array, or Matrix of the form $\left[\left[{x}_{1}\,{y}_{1}\right]\,\left[{x}_{2}\,{y}_{2}\right]\,\dots \,\left[{x}_{n}\,{y}_{n}\right]\right]$; the (x,y) coordinates of the sample points

z



list, Array, or Vector of sample values corresponding to the (x,y) points

x,y



evaluate f at (x,y)

M



a k x 2 Matrix of points at which to evaluate f





Description


•

The LinearTriangularInterpolation command creates a function $f\left(x\,y\right)=z$ which can then be evaluated at arbitrary points within the convex hull of the sample points.

•

The linear triangular interpolant is defined as follows. The Delaunay triangulation on the given input points xy is determined, and the interpolant is defined on each triangle as the linear interpolant between the three zvalues at its vertices.

•

A linear triangular interpolant is ${C}^{0}$ continuous.

•

This interpolation method does not introduce local minima or maxima which are not already present in the input data.

•

Results may be poor when interpolating near the convex hull of the sample points.

•

Evaluating f at points outside of the convex hull produces $Float\left(\mathrm{undefined}\right)$.

•

As with all interpolation methods, the interpolant f always passes through all of the sample values.

•

Input sample points must not contain duplicates. The presence of duplicate points can lead to unexpected results.

•

In order to evaluate f at k points, you can put each point in a row of a Matrix M and call f(M) to obtain the k values of f in a kelement Vector. This will be most efficient if M's options are such that its datatype is float[8], its order is C_order, and its storage is rectangular.



Examples


>

XY:=[[0,0],[1,0],[2,0],[0,1],[1,1],[2,1],[0,2],[1,2],[2,2]];

${\mathrm{XY}}{\u2254}\left[\left[{0}{\,}{0}\right]{\,}\left[{1}{\,}{0}\right]{\,}\left[{2}{\,}{0}\right]{\,}\left[{0}{\,}{1}\right]{\,}\left[{1}{\,}{1}\right]{\,}\left[{2}{\,}{1}\right]{\,}\left[{0}{\,}{2}\right]{\,}\left[{1}{\,}{2}\right]{\,}\left[{2}{\,}{2}\right]\right]$
 (1) 
>

Z:=[0,0,0,0,1,0,0,0,0];

${Z}{\u2254}\left[{0}{\,}{0}{\,}{0}{\,}{0}{\,}{1}{\,}{0}{\,}{0}{\,}{0}{\,}{0}\right]$
 (2) 
>

f:=Interpolation:LinearTriangularInterpolation(XY,Z);

${f}{\u2254}\left({\mathrm{Linear\; Triangular\; interpolation\; object\; with\; 9\; sample\; points}}\right)$
 (3) 
f can be polled at specific points.
>

M := Matrix([[1.5, 0.3], [0.7, 1.4], [1.2, 1.8]], datatype = float[8], order = C_order);

${M}{\u2254}\left[\begin{array}{cc}{1.50000000000000}& {0.300000000000000}\\ {0.700000000000000}& {1.40000000000000}\\ {1.20000000000000}& {1.80000000000000}\end{array}\right]$
 (5) 
$\left[\begin{array}{c}{0.}\\ {0.300000000000000}\\ {0.}\end{array}\right]$
 (6) 
Use plot3d to plot the interpolated surface.
>

plot3d((x,y)>f(x,y),0..2,0..2,labels=[x,y,z]);



Compatibility


•

The Interpolation[LinearTriangularInterpolation] command was introduced in Maple 2018.




