e02bbce.c

/* nag_fit_dim1_spline_eval (e02bbc) Example Program.
 *
 * Copyright 2025 Numerical Algorithms Group.
 *
 * Mark 31.1, 2025.
 *
 */
#include<nag.h>
#include<stdio.h>
intmain(void){
Integerexit_status=0,j,m,ncap,ncap7,r;
Nag_Splinespline;
doublea,b,s,x;
NagErrorfail;
INIT_FAIL(fail);
/* Initialize spline */
spline.lamda=0;
spline.c=0;
printf("nag_fit_dim1_spline_eval (e02bbc) Example Program Results\n");
scanf("%*[^\n]");/* Skip heading in data file */
while(scanf("%"NAG_IFMT"",&m)!=EOF)
{
if(m<=0){
printf("Invalid m.\n");
exit_status=1;
returnexit_status;
}
scanf("%"NAG_IFMT"",&ncap);
ncap7=ncap+7;
if(ncap>0){
spline.n=ncap7;
if(!(spline.c=NAG_ALLOC(ncap7,double))||
!(spline.lamda=NAG_ALLOC(ncap7,double))){
printf("Allocation failure\n");
exit_status=-1;
gotoEND;
}
}else{
printf("Invalid ncap.\n");
exit_status=1;
returnexit_status;
}
for(j=0;j<ncap7;j++)
scanf("%lf",&(spline.lamda[j]));
for(j=0;j<ncap+3;j++)
scanf("%lf",&(spline.c[j]));
a=spline.lamda[3];
b=spline.lamda[ncap+3];
printf("Augmented set of knots stored in spline.lamda:\n");
for(j=0;j<ncap7;j++)
printf("%10.4f%s",spline.lamda[j],
(j%6==5||j==ncap7-1)?"\n":" ");
printf("\nB-spline coefficients stored in spline.c\n\n");
for(j=0;j<ncap+3;j++)
printf("%10.4f%s",spline.c[j],
(j%6==5||j==ncap+2)?"\n":" ");
printf("\n x Value of cubic spline\n\n");
for(r=1;r<=m;++r){
x=((double)(m-r)*a+(double)(r-1)*b)/(double)(m-1);
/* nag_fit_dim1_spline_eval (e02bbc).
 * Evaluation of fitted cubic spline, function only
 */
nag_fit_dim1_spline_eval(x,&s,&spline,&fail);
if(fail.code!=NE_NOERROR){
printf("Error from nag_fit_dim1_spline_eval (e02bbc).\n%s\n",
fail.message);
exit_status=1;
gotoEND;
}
printf("%10.4f%15.4f\n",x,s);
}
NAG_FREE(spline.c);
NAG_FREE(spline.lamda);
}
END:
returnexit_status;
}

AltStyle によって変換されたページ (->オリジナル) /