Guest User

Untitled

a guest
Jul 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. int GaussSeidel(int dimension, double** Matrice_A2, double* Matrice_B)
  2. {
  3.  
  4.     int i, k, condition = 0, cdt_roulement = 3;
  5.     double crit_arret = 0,001, sommeA, sommeB, norme1, norme2;
  6.     double** MatriceX = NULL;
  7.     MatriceX = (double**) malloc (sizeof(double*)*3);
  8.  
  9.     for (i=0; i<n; i++)
  10.     {
  11.         MatriceX[i]=(double*) malloc (sizeof(double)*3);
  12.     }
  13.     for( k = 0; k<dimension; k++)
  14.         MatriceX[k][1] = 1; // Cette boucle nous permet d'initialiser le premier tour du vecteur x(i)[0]
  15.        
  16.     do
  17.     {
  18.         for(k=0; k<dimension; k++)
  19.             MatriceX[k][0] = MatriceX[k][1]; // Le vecteur 0 est changé de plus en plus précis à chaque fois que le critere n'est pas atteint.
  20.  
  21.         for(k = 1; k<3; k++)
  22.         {
  23.             for(i = 1; i<dimension; i++)
  24.             {
  25.                 sommeA = 0;
  26.                 sommeB = 0;
  27.                 for(j = 0; j< i-1; j++)
  28.                     sommeA = sommeA + Matrice_A[i][j]*MatriceX[j][k];
  29.                 for(j = i; j<dimension; j++)
  30.                     sommeB = somme B + Matrice_A[i][j]*MatriceX[j][k];
  31.                
  32.                 MatriceX[i][k+1] = (Matrice_B[i] - sommeA - sommeB)/Matrice_A2[i][i];
  33.             }
  34.         }
  35.         norme1 = 0;
  36.         norme2 = 0;
  37.         for(i = 0; i<n; i++)
  38.         {
  39.            norme1 = norme1 + fabs(MatriceX[i][1]);
  40.            norme2 = norme2 + fabs(MatriceX[i][2]);
  41.         }
  42.         if(fabs(norme1 - norme2) < crit_arret)
  43.         {
  44.             condition = 1;
  45.         }
  46.     }while(condition != 1);
  47. return true;
  48. }
Add Comment
Please, Sign In to add comment