Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- int i , j, k ,n;
- double a[20][20],awal,xnow[20],xbef[20],temp,ep,b[20],smtr,e;
- int i,j,n,k=0,jum,konvergen=0;
- int iterasi=1;
- void input();
- void tampil();
- void gaussiedel();
- main()
- {
- char p = 'y';
- int kondisi=1;
- while(p=='y' || p=='Y')
- {
- printf("Penyelsaian Sistem Persamaan Linear\nMetode Gauss Seidel\n");
- printf("==============================================\n");
- input();
- gaussiedel();
- tampil();
- puts("=====================================");
- fflush(stdin);
- printf("Ingin ulangi??? y/n = ");
- scanf("%c",&p);
- puts("");
- }
- }
- void input()
- {
- printf("Masukkan jumlah ordo : ");
- scanf("%i",&n);
- printf("Masukkan Augmented Matrik : \n");
- for(i=0; i<n; i++)
- {
- printf("Persamaan ke-%d\n", i+1);
- for(j=0; j<n; j++)
- {
- printf("Nilai ke-%d : ",j+1);
- scanf("%lg", &a[i][j]);
- if(j==n-1)
- {
- printf("Nilai y : ");
- scanf("%lg", &a[i][j+1]);
- break;
- }
- }
- }
- printf("Masukkan nilai awal : ");
- scanf("%lg",&awal);
- printf("Masukkan jumlah iterasi : ");
- scanf("%i",&jum);
- printf("Masukkan nilai epsilon : ");
- scanf("%lg",&ep);
- puts("Augmented Matrik asal : ");
- for(i=0; i<n; i++)
- {
- for(j=0; j<=n; j++)
- {
- printf("%-5lg",a[i][j]);
- }
- puts("");
- }
- puts("");
- }
- void gaussiedel()
- {
- printf("%-3i",k);
- for(i=0; i<n; i++)
- {
- xnow[i]=awal;
- printf("%-10lg",xnow[i]);
- b[i]=a[i][3];
- }
- puts("");
- k=1;
- while(iterasi<jum && konvergen==0)
- {
- printf("%-3i",k);
- for(i=0; i<n; i++)
- {
- temp=0;
- for(j=0; j<n; j++)
- {
- if(i!=j)
- {
- temp=temp+a[i][j]*xnow[j];
- }
- }
- smtr=(b[i]-temp)/a[i][i];
- xbef[i]=xnow[i];
- xnow[i]=smtr;
- }
- for(i=0; i<n; i++)
- {
- printf("%-10lg",xnow[i]);
- }
- for(i=0; i<n; i++)
- {
- e=fabs(xnow[i]-xbef[i]);
- printf("%-10lg",e);
- if(i==0 && e<ep)
- {
- konvergen=1;
- }
- if(e>100)
- {
- printf("\nIni divergen\n");
- konvergen=2;
- break;
- }
- }
- puts("");
- k++;
- iterasi++;
- if(konvergen==2)
- break;
- }
- puts("");
- }
- void tampil()
- {
- for(i=0; i<n; i++)
- {
- printf("Akar x%d = %-10lg",i+1,xnow[i]);
- }
- puts("");
- }
Advertisement
Add Comment
Please, Sign In to add comment