Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3. main() {
  4.   int n,i,j,k,imax;
  5.   printf("Nhap co ma tran cua Ax=b\nn= "); scanf("%d",&n);
  6.   float a[n][n+1],p;
  7.   printf("Nhap gia tri cho ma tran:\n");
  8.   for(i=0;i<n;i++) {
  9.     printf("Hang thu %d: ",i+1);
  10.     for(j=0;j<n+1;j++) scanf("%f",&a[i][j]);
  11.   }
  12.   /*Gauss Elimination + Interchange*/
  13.   for(k=0;k<n-1;k++) {
  14.     imax=k;
  15.     for(i=k+1;i<n;i++) if(fabs(a[i][k])>fabs(a[imax][k])) imax=i;
  16.     for(j=0;j<n+1;j++) {
  17.       p=a[k][j];
  18.       a[k][j]=a[imax][j];
  19.       a[imax][j]=p;
  20.     }
  21.     for(i=k+1;i<n;i++) {
  22.       p=a[i][k]/a[k][k];
  23.       for(j=k;j<n+1;j++) a[i][j]-=p*a[k][j];
  24.     }
  25.   }
  26.   /*Jordan Elimination*/
  27.   for(k=n-1;k>0;k--) for(i=k-1;i>=0;i--) {
  28.     p=a[i][k]/a[k][k];
  29.     for(j=k;j<n+1;j++) a[i][j]-=p*a[k][j];
  30.   }
  31.   /*Show solution*/
  32.   printf("Nghiem he phuong trinh la:\n");
  33.   for(i=0;i<n;i++) printf("x%d= %.2f\n",i+1,a[i][n]/a[i][i]);
  34. }
  35. // Interchange: tim so co abs lon nhat de trao hang tu do, nham de phep chia cho a[k][k] it sai so do so qua gan 0
  36. // imax de luu lai vi tri hang cua phan tu lon nhat do
  37. // p vua la bien trung gian de trao doi hang, vua la bien trung gian trong phep khu Gauss va Jordan (tan dung bien p de lam nhieu viec)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement