Advertisement
lpuarmy

Gauss Jordan | Numerik

Apr 30th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.87 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #define maks 100
  5.  
  6. float A[maks][maks];
  7. float ep;
  8. int n;
  9.  
  10. void tukar_baris(int i, int besar)
  11. {
  12.     float temp[100];
  13.     int j;
  14.     for(j=0;j<=n;j++) {
  15.         temp[j] = A[i][j];
  16.         A[i][j] = A[besar][j];
  17.         A[besar][j] = temp[j];
  18.     }
  19. }
  20.  
  21. void tampil()
  22. {
  23.     int i,j;
  24.     for(i=0;i<n;i++) {
  25.         for(j=0;j<n+1;j++) {
  26.             printf("%5g",A[i][j]);
  27.         }
  28.         printf("\n");
  29.     }
  30.     printf("\n");
  31. }
  32.  
  33. void masukkan()
  34. {
  35.     int i,j;
  36.     float v[100],temp,tempa[100][100];
  37.  
  38.     printf(" Masukkan toleransi error : "); scanf("%d", &ep);
  39.  
  40.     fflush(stdin);
  41.     printf(" Masukkan ukuran matriks  : "); scanf("%d",&n);
  42.     puts("----------------------------------------");
  43.    
  44.     for(i=0;i<n;i++) {
  45.         for(j=0;j<n;j++) {
  46.             printf(" Matrik A[%d][%d] = ",i+1,j+1);
  47.             scanf("%f",&A[i][j]);
  48.             A[i][j] = A[i][j];
  49.         }
  50.     }
  51.  
  52.     puts("----------------------------------------");
  53.     printf(" Masukkan vektor matriks : \n");
  54.     puts("----------------------------------------");
  55.  
  56.     for(i=0;i<j;i++) {
  57.         printf(" vektor [%d] = ",i+1);
  58.         scanf("%f",&v[i]);
  59.         A[i][j] = v[i];
  60.     }
  61.  
  62.     /* pengecekan tukar baris */
  63.     for(i=0;i<n;i++) {
  64.         temp = i;
  65.         if(A[0][0] == 0) {
  66.             for(j=0;j<=n;j++){
  67.                 tempa[i][j] = A[0][j];
  68.             }
  69.             for(j=0;j<=n;j++){
  70.                 A[0][j] = A[i+1][j];
  71.             }
  72.             for(j=0;j<=n;j++){
  73.                 A[i+1][j] = tempa[i][j];
  74.             }
  75.         }
  76.         i = temp;
  77.     }
  78.     /* pengecekan tukar baris */
  79.  
  80.     printf("\n Matriks awal:\n");
  81.     puts("----------------------------------------");
  82.     tampil();
  83. }
  84.  
  85. void main()
  86. {
  87.     int j, i, p, k, besar;
  88.     float x[maks],temp, c, pivot;
  89.  
  90.     puts("========================================");
  91.     puts(" METODE ELIMINASI GAUSS JORDAN");
  92.     puts("========================================");
  93.  
  94.     masukkan();
  95.  
  96.     for(i=0;i<n;i++) {
  97.         pivot = A[i][i];
  98.         besar = i;
  99.         if(fabs(pivot) < ep) {
  100.             for(p=i+1;p<n;p++) {
  101.                 if(fabs(pivot) < fabs(A[p][i])) {
  102.                     pivot = A[p][i];
  103.                     besar = p;
  104.                 }
  105.             }
  106.             tukar_baris(i,besar);
  107.         }
  108.     }
  109.     printf(" Matriks A setelah pertukaran baris : \n");
  110.     puts("----------------------------------------");
  111.     tampil();
  112.  
  113.     for(i=0;i < n-1;i++) {
  114.         printf(" Matriks A setelah OBE pada kolom ke-%d : \n",i+1);
  115.         puts("----------------------------------------");
  116.         for(j=i+1;j < n;j++) {
  117.             c = A[j][i] / A[i][i];
  118.                 for(k=0;k < n+1;k++) {
  119.                     temp = c * A[i][k];
  120.                     A[j][k] = A[j][k] - temp;
  121.                 }
  122.         }
  123.         tampil();
  124.     }
  125.  
  126.     printf(" Ubah elemen jadi 1 \n");
  127.     puts("----------------------------------------");
  128.     for(j=0;j<n;j++) {
  129.         pivot = A[j][j];
  130.         for(k=0;k <= n;k++) {
  131.             A[j][k] = A[j][k] / pivot;
  132.         }
  133.     }
  134.     tampil();
  135.  
  136.  
  137.     for(i=0;i < n;i++) {
  138.         for(j=i-1;j >= 0 ;j--) {
  139.             c = A[j][i];
  140.             for(k=0;k <= n+1;k++) {
  141.                 temp = c * A[i][k];
  142.                 A[j][k] = A[j][k] - temp;
  143.             }
  144.         }
  145.        
  146.     }
  147.  
  148.     tampil();
  149.  
  150.     for(i=0;i < n;i++) {
  151.         x[i]=A[i][n];
  152.         printf("   x[%d] = %g\n",i+1,x[i]);
  153.     }
  154. }
  155. /**** lpuarmy.blogspot.com *****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement