Postingan kali ini membahas tentang mata kuliah Metode Numerik tentang Metode Eliminasi Gauss Seidel dengan menggunakan pemrograman bahasa C. Berikut ini adalah listing codenya:
#include
#include
double A[50][50], nilai_awal[50], hasil[50], e;
void inisial(int n);
int input();
void tampil(int n);
void gauss_seidel(int n,int *val);
void iterasi_proses(int n);
void main()
{
int n;
puts(" -------- Metode Gauss Seidel --------\n");
n = input();
puts("\n");
tampil(n);
puts("\n");
iterasi_proses(n);
puts("\n\t\t =======> |*| END |*| <=======\n");
}
void inisial(int n)
{
int i;
double nilai;
printf("Input nilai awal\t: ");
scanf("%lf",&nilai);
for(i=0;i
nilai_awal[i] = nilai;
}
int input()
{
int i,j,n;
printf("Masukkan toleransi error\t: ");
scanf("%lf",&e);
printf("Masukkan ordo matriks\t: ");
scanf("%d",&n);
puts("\nMasukkan matriks + vektor\t:");
for(i=0;i
{
for(j=0;j<=n;j++)
{
printf("Matriks A[%d][%d] : ",i+1,j+1);
scanf("%lf",&A[i][j]);
}
}
return(n);
}
void tampil(int n)
{
int i,j;
puts("Matriks mula-mula -->");
puts("=================================");
for(i=0;i
{
for(j=0;j<=n;j++)
{
printf("%.4f\t",A[i][j]);
}
puts("");
}
puts("=================================\n");
}
void iterasi_proses(int n)
{
int iterasi, i=0, val=0;
printf("Masukkan jumlah iterasi : ");
scanf("%d",&iterasi);
inisial(n);
puts("=============================================================");
printf("i\t");
for(i=0;i
printf("x[%d]\t",i+1);
for(i=0;i
printf("e[%d]\t",i+1);
printf("\n");
puts("=============================================================");
i=0;
printf("%d",i);
for(i=0;i
printf("\t%.4f",nilai_awal[i]);
puts("");
for(i=1;i<=iterasi;i++)
{
printf("%d",i);
gauss_seidel(n, &val);
puts("");
if(val==1)
break;
}
puts("=====================================================");
puts("\nhasil\t: ");
for(i=0;i
{
printf("x[%d] : %f\n",i+1,nilai_awal[i]);
}
}
void gauss_seidel(int n,int *val)
{
int i,j;
double sigma=0,temp[50];
for(i=0;i
{
sigma = 0;
for(j=0;j
{
if(i!=j)
{
sigma = sigma + nilai_awal[j] * A[i][j];
}
}
hasil[i] = (A[i][n] - sigma)/A[i][i];
temp[i] = nilai_awal[i];
nilai_awal[i] = hasil[i];
printf("\t%.4f",nilai_awal[i]);
}
for(i=0;i
{
if(fabs(fabs(temp[i]-hasil[i]))>100)
{
printf("\n\nHasil Divergen!!! :-( \n");
puts("\n\t\t =======> |*| END |*| <=======\n");
exit(1);
}
printf("\t%.4f",fabs(temp[i]-hasil[i]));
if(fabs(temp[i]-hasil[i])<=e)
{
*val=1;
}
}
}
Output:
Untuk source code bisa didownload di sini: