Dew MtxVec NET
Linear1D Routines
Summary
Linear interpolation.

Unit
Polynoms

Declaration
Procedure Linear1D(X, Y: TVec; PiecePoly: TPiecePoly);

Description
The Linear1D procedure interpolates lines between consecutive (X,Y) pairs. Linear1D does not return interpolated points. It constructs piece-wise polynomial, which can be used to evaluate ( by using the PiecePoly.Evaluate method) the linear functions. To directly obtain interpolated values, use the Interpolate routine. X values must be monotonic or the result will not be valid.
Declaration
Procedure Linear1D(Y: TVec; PiecePoly: TPiecePoly);

Description
Assumes that Y is evaluated at [0,1,2,...] i.e. X values are [0,1,2,...]
 See Also 
Interpolate 
Spline1D 
PolyFit 
TPiecePoly 

Example 1

uses MtxExpr, Math387, MtxVec, MtxVecEdit, MtxVecTee,Polynoms; procedure TForm1.Button1Click(Sender: TObject); var X,Y,Y2: Vector; PP : TPiecePoly; i : Integer; YVal : TSample; begin PP := TPiecePoly.Create; try // generate function - note that X values are monotonical X := Ramp(100,0,1); Y := RandUniform(100,0,50) + Ramp(100,100,0.25); // construct cubic splines, but do not evaluate them Linear1D(X,Y,PP); X := Ramp(800,0,0.125); //get interpolation points PP.Evaluate(X,Y2); // evaluate DrawIt(Y,'Original'); DrawIt(Y2,'Interpolated'); finally PP.Destroy; end; end;
#include "MtxVecCPP.h" //MtxVecCPP.cpp must be included in the project #include "Polynoms.hpp" #include "MtxVecTee.hpp" #include "MtxVecEdit.hpp" void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Vector X,Y,Y2; TPiecePoly *PP; int i; double YVal; PP = new TPiecePoly(); try { // generate function - note that X values are monotonical X->Size(100); Y->Size(100); Y2->Size(100); X->Ramp(0,1); Y->RandUniform(0,50); Y2->Ramp(100,0.25); Y += Y2; // construct cubic splines, but do not evaluate them Linear1D(X,Y,PP); X->Size(800); X->Ramp(0,0.125); //get interpolation points PP->Evaluate(X,Y2); // evaluate DrawIt(Y,"Original",false); DrawIt(Y2,"Interpolated",false); } __finally { delete PP; } }
using Dew.Math; using Dew.Math.Units; using Dew.Math.Tee; namespace Dew.Examples { private void Example() { Vector X = new Vector(0); Vector Y = new Vector(0); Vector Y2 = new Vector(0); TPiecePoly PP = new TPiecePoly(); int i; double YVal; // generate function - note that X values are monotonical X.Size(100); Y.Size(100); Y2.Size(100); X.Ramp(0,1); Y.RandUniform(0,50); Y2-Ramp(100,0.25); Y += Y2; // construct cubic splines, but do not evaluate them Polynoms.Linear1D(X,Y,PP); X.Size(800); X.Ramp(0,0.125); //get interpolation points PP.Evaluate(X,Y2); // evaluate TeeChart.DrawIt(Y,"Original",false); TeeChart.DrawIt(Y2,"Interpolated",false); } }

Copyright 2008 Dew Research
http://www.dewresearch.com