G-S Methom.cpp
上传用户:zhdd911129
上传日期:2007-05-11
资源大小:722k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. int ReachTOL(double x1[],double x2[],double tol,int n)
  2. {
  3. int i;
  4. double error=0;
  5. for (i=0;i<n;i++)
  6. {
  7. error+=(x1[i]-x2[i])*(x1[i]-x2[i]);
  8. }
  9. if(error<tol) 
  10. return 1;
  11. else
  12. return 0;
  13. }
  14. void GSI(double a[][N],double b[],double x0[],double tol,int max,int n)
  15. {
  16. double x1[N];
  17. int k,i,j;
  18. for (i=0;i<n;i++)                     //Initialazation
  19. {
  20. x1[i]=0;
  21. }
  22. for (k=0;k<max;k++)
  23. {
  24. for (i=0;i<n;i++)
  25. {
  26. for (j=0;j<n;j++)
  27. {
  28.     if(j!=i)
  29. {
  30.     x1[i]+=a[i][j]*x0[j];
  31. }
  32.     x1[i]=((-1)*x1[i]+b[i])/a[i][i];
  33. if(i<n-1)
  34. x0[i]=x1[i];
  35. }
  36. if(ReachTOL(x0,x1,tol,n))
  37. {
  38. for (i=0;i<n;i++)
  39.         x0[i]=x1[i];
  40. return;
  41. }
  42. x00[n-1]=x1[n-1];
  43. for (i=0;i<n;i++)
  44. {
  45.     x1[i]=0;
  46. }
  47. }
  48. for (i=0;i<n;i++)
  49.          x0[i]=x1[i];
  50. }
  51. return;
  52. }