/* file=ZEXhmms.c */
#include <stdio.h>
#include <math.h>
#define kk 6
main()
{
 FILE *fp;
 int iter,k;
  double x[kk+1],u[kk+1],ramda[kk+1],s[kk+1];
  double h,c,x0,xx,uu,tt,dt,epsil,cj;
  fp = fopen("zexhmms.txt","w");
  x0=0.; xx=0.; uu=50.; h=1.; c=1; tt=6.; dt=1;
  for(k=0;k<=kk;k++)
   s[k]=50.;
  for(k=0;k<=kk;k++)
   { x[k]=x0; u[k]=0.; ramda[k]=0.; }
  epsil=0.1;
  for(iter=1;iter<=3;iter++)
    {
     for(k=0;k<=kk-1;k++)
     u[k]=u[k]-epsil*(2.*c*(u[k]-uu)+ramda[k+1])*dt;
     for(k=0;k<=kk-1;k++)
     x[k+1]=x[k]+dt*(u[k]-s[k]);
     for(k=kk-1;k>=1;k--)
     ramda[k]=ramda[k+1]-dt*(-2*h*(x[k]-xx));
     cj=0.;
     for(k=0;k<=kk-1;k++)
     cj=cj+dt*(h*(x[k]-xx)*(x[k]-xx)+c*(u[k]-uu)*(u[k]-uu));
     printf("ITER= M J=%6.4f n", iter,cj);
     fprintf(fp,"ITER= M J=%6.4f n", iter,cj);
    }
  printf(" T X U S RAMDA ");
  for(k=0;k<=kk;k=k+5)
   printf("n %6.2f %6.2f %6.2f %6.2f %6.2f",(double)k*dt,x[k],u[k],s[k],ramda[k]);
   fprintf(fp,"n %6.2f %6.2f %6.2f %6.2f %6.2f",(double)k*dt,x[k],u[k],s[k],ramda[k]);
fclose(fp);
}



이거를 손계산으로 해야하는데요....u[k]=u[k]-epsil*(2.*c*(u[k]-uu)+ramda[k+1])*dt; 이거에서 ramda[k+1]를 어떻게 구하나요...
계산 사이클이 한번 어케 되는지 이해가 안가여~ㅜㅜ

a