Advertisement
lpuarmy

Gauss | Numerik

Apr 30th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. float A[100][100];
  6. float x[100];
  7. int n;
  8.  
  9. void tampil()
  10. {
  11.     static int i,j;
  12.     for(i=0;i<n;i++)
  13.     {
  14.         for(j=0;j<n+1;j++)
  15.         {
  16.             printf("%3g",A[i][j]);
  17.         }
  18.         printf("\n");
  19.     }
  20.     printf("\n");
  21. }
  22.  
  23. void masukkan()
  24. {
  25.     int i,j;
  26.     float v[100],temp,tempa[100][100];
  27.  
  28.     printf(" Masukkan ukuran matriks : "); scanf("%d",&n);
  29.     puts("----------------------------------------");
  30.  
  31.     for(i=0;i<n;i++){
  32.         for(j=0;j<n;j++) {
  33.             printf(" matrik A[%d][%d] = ",i+1,j+1);
  34.             scanf("%f",&A[i][j]);
  35.             A[i][j] = A[i][j];
  36.         }
  37.     }
  38.    
  39.     puts("----------------------------------------");
  40.     printf(" Masukkan vektor matriks : \n");
  41.     puts("----------------------------------------");
  42.    
  43.     for(i=0;i<j;i++) {
  44.         printf(" vektor [%d] = ",i+1);
  45.         scanf("%f",&v[i]);
  46.         A[i][j] = v[i];
  47.     }
  48.  
  49.     /* pengecekan tukar baris */
  50.     for(i=0;i<n;i++) {
  51.         temp = i;
  52.         if(A[0][0] == 0) {
  53.             for(j=0;j<=n;j++){
  54.                 tempa[i][j] = A[0][j];
  55.             }
  56.             for(j=0;j<=n;j++){
  57.                 A[0][j] = A[i+1][j];
  58.             }
  59.             for(j=0;j<=n;j++){
  60.                 A[i+1][j] = tempa[i][j];
  61.             }
  62.         }
  63.         i = temp;
  64.     }
  65.     /* pengecekan tukar baris */
  66.  
  67.     printf("\n Matriks awal:\n");
  68.     puts("----------------------------------------");
  69.     tampil();
  70. }
  71.  
  72. void main()
  73. {
  74.     int i,j,k;
  75.     float sigma,c,b[100];
  76.    
  77.     puts("========================================");
  78.     puts(" METODE ELIMINASI GAUSS");
  79.     puts("========================================");
  80.  
  81.     masukkan();
  82.  
  83.     for(i=0;i<n-1;i++) {
  84.         for(j=i+1;j < n;j++){
  85.             c = A[j][i] / A[i][i];
  86.             for(k=0;k<n+1;k++) {
  87.                 A[j][k] = A[j][k] - c * A[i][k];
  88.             }
  89.         }
  90.     }
  91.    
  92.     for(i=0;i<n;i++){
  93.         b[i] = A[i][n];
  94.     }
  95.  
  96.     x[n-1] = b[n-1]/A[n-1][n-1];
  97.    
  98.     for(k=n-2;k >= 0;k--) {
  99.         sigma = 0;
  100.         for(j=k+1;j < n ;j++) {
  101.             sigma = sigma + A[k][j] * x[j];
  102.         }
  103.         x[k] = (b[k] - sigma) / A[k][k];
  104.     }
  105.  
  106.     printf(" Matriks setalah dilakukan OBE\n");
  107.     puts("----------------------------------------");
  108.     tampil();
  109.  
  110.     printf(" Hasil Penyelesaian persamaan simultan\n");
  111.     puts("----------------------------------------");
  112.     for(i=0;i<n;i++) {
  113.         printf("  x%d : %g\n",i+1,x[i]);
  114.     }
  115. }
  116. /**** lpuarmy.blogspot.com *****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement