Selasa, 30 April 2013

Metode Numerik - Eliminasi Gauss Seidel dengan Bahasa C

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:

2 komentar: