Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<math.h>
- main() {
- int n,i,j,k,imax;
- printf("Nhap co ma tran cua Ax=b\nn= "); scanf("%d",&n);
- float a[n][n+1],p;
- printf("Nhap gia tri cho ma tran:\n");
- for(i=0;i<n;i++) {
- printf("Hang thu %d: ",i+1);
- for(j=0;j<n+1;j++) scanf("%f",&a[i][j]);
- }
- /*Gauss Elimination + Interchange*/
- for(k=0;k<n-1;k++) {
- imax=k;
- for(i=k+1;i<n;i++) if(fabs(a[i][k])>fabs(a[imax][k])) imax=i;
- for(j=0;j<n+1;j++) {
- p=a[k][j];
- a[k][j]=a[imax][j];
- a[imax][j]=p;
- }
- for(i=k+1;i<n;i++) {
- p=a[i][k]/a[k][k];
- for(j=k;j<n+1;j++) a[i][j]-=p*a[k][j];
- }
- }
- /*Jordan Elimination*/
- for(k=n-1;k>0;k--) for(i=k-1;i>=0;i--) {
- p=a[i][k]/a[k][k];
- for(j=k;j<n+1;j++) a[i][j]-=p*a[k][j];
- }
- /*Show solution*/
- printf("Nghiem he phuong trinh la:\n");
- for(i=0;i<n;i++) printf("x%d= %.2f\n",i+1,a[i][n]/a[i][i]);
- }
- // 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
- // imax de luu lai vi tri hang cua phan tu lon nhat do
- // 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