Metode Doolittle dengan bahasa C/C++

Kali ini saya akan posting listing program metode doolittle dalam bahasa C atau C++. Metode doolittle adalah suatu metode untuk menyelesaikan beberapa persamaan linear. Pada dasarnya metode ini adalah memasukkan koefisien-koefisien persamannya dalam bentuk matriks, kemudian di faktorkan menjadi matriks L dan U. Oleh karena itu, metode ini juga akrab di sebut metode LU, dimana matriks L adalah matriks segitiga bawah dan matriks U adalah matriks segitiga atas. Dari situ bila dioperasikan akan didapatkan nilai dari variabel persamaannya.. Oke.. Inilah code-nya :

#include
#include

int main()
{
float matriks[100][100], nilai[100], hasil[100], jumlah_kurang, sementara[100];
int n, i, j, k, l, m, p, q, x, tambah1=0, tambah2=1;

printf(“Masukkan jumlah persamaannya : \n”);
scanf(“%d”, &n);
for( i=0 ; i
{
printf(“————————————————————–\n”);
printf(“Masukkan variabel persamanan ke-%d \n”, i+1);
for(j=0; j
{
scanf(“%f”, &matriks[i][j]);
}
printf(“Masukkan nilai persamaan : \n”);
scanf(“%f”, &nilai[i]);
}

// Untuk mencetak hasil inputan dalam bentuk matriks
printf(“————————————————————–\n”);
printf(“Hasil inputan Anda dalam bentuk matriks\n”);
printf(“————————————————————–\n\n”);
for(i=0 ; i
{
printf(“| “);
for(j=0; j
{
printf(“%0.6f\t”, matriks[i][j]);
}
printf(“\b\b\b\b\b\b\b\b\b | | X %d | = | %f |\n”, i+1, nilai[i]);
}
printf(“\n”);

for(j=0, p=0 ; j<(n-1), p
{ //Metode doolittle untuk yang operasi baris
for(q=tambah1; q
{ jumlah_kurang=0;
if(j!=0)
{
for(k=0; k
{
jumlah_kurang=jumlah_kurang+matriks[p][k]matriks[k][q];
}
}
matriks[p][q]=(matriks[p][q]-jumlah_kurang);
}
tambah1++;
// Metode doolittle untuk yang operasi kolom
for(i=tambah2; i
{ jumlah_kurang=0;
if(j!=0)
{ for(k=0; k
{
jumlah_kurang=jumlah_kurang+matriks[i][k]
matriks[k][j];
}
}
matriks[i][j]=(matriks[i][j]-jumlah_kurang)/matriks[j][j];
}
tambah2++;
// Untuk mencetak hasil iterasi
printf(“————————————————————–\n”);
printf(“Ini iterasi ke- %d \n”, p+1);
printf(“————————————————————–\n”);
for(l=0; l
{
for( m=0 ; m
{
printf(“%0.6f\t”, matriks[l][m]);
}
printf(“\n”);
}
}
//Mencari nilai variabel tahap operasi matriks L (segitiga bawah)
for( i=0 ; i
{
jumlah_kurang=0;
if(i!=0)
{
for( j=0 ; j
{
jumlah_kurang=jumlah_kurang+(matriks[i][j]sementara[j]);
}
}
sementara[i]=nilai[i]-jumlah_kurang;
}
printf(“**************************************************************\n”);
printf(“*********** Ini hasil dari persamaan linearnya ***************\n”);
printf(“**************************************************************\n”);
//Mencari nilai variabel tahap operasi matriks U (segitiga atas)
for( i=(n-1), x=n ; i>=0, x>0 ; i–, x–)
{
jumlah_kurang=0;
if(i!=(n-1))
{
for( j=(n-1) ; j>i ; j– )
{
jumlah_kurang=jumlah_kurang+(matriks[i][j]
hasil[j]);
}
}
hasil[i]=(sementara[i]-jumlah_kurang)/matriks[i][i];
printf(“Nilai X%d = %f \n”, x, hasil[i]);
}

getch();
printf(“\n”);
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s