2.1.17.5.3 ocmath_1d_spline_evaluate
Description
Evaluates a cubic spline from its B-spline representation.
Syntax
int ocmath_1d_spline_evaluate( double dX, double * pY, ocmath_Spline * spline )
Parameters
- dX
- [input]the value of the independent variable (abscissa) x
- pY
- [output]pointer to the value of the dependent variable (ordinate) y
- spline
- [input] pointer to the structure ocmath_Spline, usually returned by function ocmath_1d_spline_fit
Return
NE_NOERROR (code 0) --- success
NE_INT_ARG_LT (error code 11) --- spline->n < 8
NE_ABSCI_OUTSIDE_KNOT_INTVL (error code 247) --- dX not satisfy spline->lamda[3] <= dX <= spline->lamda[spline->n - 4]
Examples
EX1
//Evaluate at 9 equally-spaced points in the interval [1.0, 9.0] the cubic spline with
//(augmented) knots 1.0, 1.0, 1.0, 1.0, 3.0, 6.0, 8.0, 9.0, 9.0, 9.0, 9.0 and normalised
//cubic B-spline coefficients 1.0, 2.0, 4.0, 7.0, 6.0, 4.0, 3.0.
void ocmath_1d_spline_evaluate_ex1()
{
double a, b,ncap7;
int m =9;
int ncap = 4;
int r;
double lamda[11] = {1.00, 1.00, 1.00, 1.00, 3.00, 6.00, 8.00, 9.00, 9.00, 9.00, 9.00};
double c[11] = {1.00, 2.00, 4.00, 7.00, 6.00, 4.00, 3.00};
double s;
double x;
int i, j;
ocmath_Spline spline;
ncap7 = ncap +7;
spline.n = ncap7;
spline.lamda = lamda;
spline.c = c;
a = spline.lamda[3];
printf("a = %f\n",a);
b = spline.lamda[ncap+3];
printf("b = %f\n",b);
printf("Augmented set of knots stored in spline.lamda:\n");
for(j = 0; j < ncap7-1; j++)
printf("%10.4f",lamda[j]);
printf("\nB-spline coefficients stored in spline.c\n\n");
for(j = 0; j< ncap+3; j++)
printf("%10.4f",c[j]);
printf("\n x Value of cubic spline\n\n");
for (r=1; r<=m; ++r)
{
x = 1.0*((m-r) * a + (r-1) * b) /(m-1);
s= 0;
ocmath_1d_spline_evaluate(x, &s, &spline);
printf("%10.4f%15.4f\n",x,s);
}
}
//The output:
//a = 1.000000
//b = 9.000000
//Augmented set of knots stored in spline.lamda:
// 1.0000 1.0000 1.0000 1.0000 3.0000 6.0000 8.0000 9.0000 9.0000 9.0000
//B-spline coefficients stored in spline.c
// 1.0000 2.0000 4.0000 7.0000 6.0000 4.0000 3.0000
//x Value of cubic spline
// 1.0000 1.0000
// 2.0000 2.3779
// 3.0000 3.6229
// 4.0000 4.8327
// 5.0000 5.8273
// 6.0000 6.3571
// 7.0000 6.1905
// 8.0000 5.1667
// 9.0000 3.0000
Remark
See Also
ocmath_2d_spline_eval
Header to Include
origin.h
Reference
nag_1d_spline_evaluate(e02bbc)nag_1d_spline_evaluate(e02bbc), NAG Manual
|