42 lines
826 B
C
42 lines
826 B
C
|
|
/* Driver for routine ratlsq */
|
|
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
#define NRANSI
|
|
#include "nr.h"
|
|
#include "nrutil.h"
|
|
|
|
#define NMAX 100
|
|
|
|
double fn(double t)
|
|
{
|
|
return atan(t);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int j,kk,mm;
|
|
double a,b,*cof,dev,eee,fit,xs;
|
|
|
|
cof=dvector(0,NMAX);
|
|
for (;;) {
|
|
printf("enter a,b,mm,kk\n");
|
|
if (scanf("%lf %lf %d %d",&a,&b,&mm,&kk) == EOF) break;
|
|
ratlsq(fn,a,b,mm,kk,cof,&dev);
|
|
for (j=0;j<=mm+kk;j++) printf("cof(%3d)=%27.15e\n",j,cof[j]);
|
|
printf("maximum absolute deviation= %12.6f\n",dev);
|
|
printf(" x error exact\n");
|
|
printf("--------- ------------ ---------\n");
|
|
for (j=1;j<=50;j++) {
|
|
xs=a+(b-a)*(j-1.0)/49.0;
|
|
fit=ratval(xs,cof,mm,kk);
|
|
eee=fn(xs);
|
|
printf("%10.5f %15.7e %15.7e\n",xs,fit-eee,eee);
|
|
}
|
|
}
|
|
free_dvector(cof,0,NMAX);
|
|
return 0;
|
|
}
|
|
#undef NRANSI
|