/* 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