add numerical recipes library
This commit is contained in:
62
lib/nr/ansi/examples/xfitexy.c
Normal file
62
lib/nr/ansi/examples/xfitexy.c
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
/* Driver for routine fitexy */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#define NRANSI
|
||||
#include "nr.h"
|
||||
#include "nrutil.h"
|
||||
|
||||
#define NPT 30
|
||||
|
||||
int main(void)
|
||||
{
|
||||
long idum=(-1);
|
||||
int j;
|
||||
float a,b,chi2,q,sa,sb,siga,sigb;
|
||||
float *x,*y,*dx,*dy,*dz;
|
||||
|
||||
x=vector(1,NPT);
|
||||
y=vector(1,NPT);
|
||||
dx=vector(1,NPT);
|
||||
dy=vector(1,NPT);
|
||||
dz=vector(1,NPT);
|
||||
for (j=1;j<=NPT;j++) {
|
||||
dx[j]=0.1+ran1(&idum);
|
||||
dy[j]=0.1+ran1(&idum);
|
||||
dz[j]=0.0;
|
||||
x[j]=10.0+10.0*gasdev(&idum);
|
||||
y[j]=2.0*x[j]-5.0+dy[j]*gasdev(&idum);
|
||||
x[j] += dx[j]*gasdev(&idum);
|
||||
}
|
||||
printf("Values of a,b,siga,sigb,chi2,q:\n");
|
||||
printf("Fit with x and y errors gives:\n");
|
||||
fitexy(x,y,NPT,dx,dy,&a,&b,&siga,&sigb,&chi2,&q);
|
||||
printf("%11.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n\n",
|
||||
a,b,siga,sigb,chi2,q);
|
||||
printf("Setting x errors to zero gives:\n");
|
||||
fitexy(x,y,NPT,dz,dy,&a,&b,&siga,&sigb,&chi2,&q);
|
||||
printf("%11.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n",
|
||||
a,b,siga,sigb,chi2,q);
|
||||
printf("...to be compared with fit result:\n");
|
||||
fit(x,y,NPT,dy,1,&a,&b,&siga,&sigb,&chi2,&q);
|
||||
printf("%11.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n\n",
|
||||
a,b,siga,sigb,chi2,q);
|
||||
printf("Setting y errors to zero gives:\n");
|
||||
fitexy(x,y,NPT,dx,dz,&a,&b,&siga,&sigb,&chi2,&q);
|
||||
printf("%11.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n",
|
||||
a,b,siga,sigb,chi2,q);
|
||||
printf("...to be compared with fit result:\n");
|
||||
fit(y,x,NPT,dx,1,&a,&b,&siga,&sigb,&chi2,&q);
|
||||
sa=sqrt(siga*siga+SQR(sigb*(a/b)))/b;
|
||||
sb=sigb/(b*b);
|
||||
printf("%11.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n",
|
||||
-a/b,1.0/b,sa,sb,chi2,q);
|
||||
free_vector(dz,1,NPT);
|
||||
free_vector(dy,1,NPT);
|
||||
free_vector(dx,1,NPT);
|
||||
free_vector(y,1,NPT);
|
||||
free_vector(x,1,NPT);
|
||||
return 0;
|
||||
}
|
||||
#undef NRANSI
|
||||
Reference in New Issue
Block a user