add numerical recipes library
This commit is contained in:
54
lib/nr/ansi/examples/xcyclic.c
Normal file
54
lib/nr/ansi/examples/xcyclic.c
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
/* Driver for routine cyclic */
|
||||
|
||||
#include <stdio.h>
|
||||
#define NRANSI
|
||||
#include "nr.h"
|
||||
#include "nrutil.h"
|
||||
|
||||
#define N 20
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float alpha,beta,d,*a,*b,*c,*r,*x,**aa;
|
||||
int i,j,*indx;
|
||||
long idum=(-23);
|
||||
|
||||
indx=ivector(1,N);
|
||||
a=vector(1,N);
|
||||
b=vector(1,N);
|
||||
c=vector(1,N);
|
||||
r=vector(1,N);
|
||||
x=vector(1,N);
|
||||
aa=matrix(1,N,1,N);
|
||||
for (i=1;i<=N;i++)
|
||||
for (j=1;j<=N;j++) aa[i][j]=0.0;
|
||||
for (i=1;i<=N;i++) {
|
||||
b[i]=ran2(&idum);
|
||||
aa[i][i]=b[i];
|
||||
r[i]=ran2(&idum);
|
||||
}
|
||||
for (i=1;i<N;i++) {
|
||||
a[i+1]=ran2(&idum);
|
||||
aa[i+1][i]=a[i+1];
|
||||
c[i]=ran2(&idum);
|
||||
aa[i][i+1]=c[i];
|
||||
}
|
||||
alpha=ran2(&idum);
|
||||
aa[N][1]=alpha;
|
||||
beta=ran2(&idum);
|
||||
aa[1][N]=beta;
|
||||
cyclic(a,b,c,alpha,beta,r,x,N);
|
||||
ludcmp(aa,N,indx,&d);
|
||||
lubksb(aa,N,indx,r);
|
||||
for (i=1;i<=N;i++) printf("%4d %12.6e\n",i,(x[i]-r[i])/(x[i]+r[i]));
|
||||
free_matrix(aa,1,N,1,N);
|
||||
free_vector(x,1,N);
|
||||
free_vector(r,1,N);
|
||||
free_vector(c,1,N);
|
||||
free_vector(b,1,N);
|
||||
free_vector(a,1,N);
|
||||
free_ivector(indx,1,N);
|
||||
return 0;
|
||||
}
|
||||
#undef NRANSI
|
||||
Reference in New Issue
Block a user