Anda di halaman 1dari 4

Almantera Tiantana Al Faruqi (15/379160/TK/43102)

LAMPIRAN
A. Source Code Program Doolittle

#include<stdio.h>
typedef float matrik[99][99];
typedef float matriks[99];
void doolittle(matrik A,matrik L,matrik U,int n);
void input(matrik A,int n,matriks H);
void persamaan (matrik A, matriks H, int n);
void solusiy(matrik A, matriks M, matriks H, int n);
void solusix(matrik U, matriks X, matriks Y, int n);
void output(matriks H, int n);
void awal();
main()
{
matrik A,L,U;
matriks H,Y,X;
int n;
awal();
printf("Tekan tombol apapun untuk lanjut...");
getchar();
printf("\nJumlah peubah (n) = ");
scanf("%d",&n);
input(A,n,H);
persamaan(A,H,n);
doolittle(A,L,U,n);
solusiy(L,Y,H,n);
solusix(U,X,Y,n);
output(X,n);
getchar();
}
void awal()
{
printf("---------------------------------------------\n");
printf("- Tugas Akhir Praktikum Pemrograman Dasar -\n");
printf("- Program Metode Doolittle -\n");
printf("- Almantera Tiantana Al Faruqi -\n");
printf("- 15/379160/TK/43102 -\n");
printf("---------------------------------------------\n");
}
void input(matrik A, int n, matriks H)
{
int i,j;
printf("Matriks A\n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("Matriks baris ke-%d kolom ke-%d= ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n");
printf("Matriks B\n");
for (i=0;i<n;i++)
{
printf("Matriks baris ke-%d kolom ke-1= ",i+1,i+1);
scanf("%f",&H[i]);
}
}
void persamaan(matrik A,matriks H, int n)
Almantera Tiantana Al Faruqi (15/379160/TK/43102)

{
int i,j;
printf("\n\nPersamaan Matriks\n");
printf(" A . X = B\n");
printf("-----------------------------\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0) printf("|");
printf("%3.0f",A[i][j]);
if(j==2 && i!=1) printf(" | | X%d | = | %.0f |",i+1, H[i]);
else if(j==2 && i==1) printf(" | . | X%d | = | %.0f |",i+1,
H[i]);
}
printf("\n\n");
}
}
void doolittle(matrik A,matrik L,matrik U,int n)
{
float sum;
int k,j,m;
for(j=0;j<n;j++)
{
L[j][j]=1;
for (m=0;m<j;m++)
{
if (m>j) L[j][m]=0;
else if (m<j) U[m][j]=0;
}
}
for (k=0;k<n;k++)
{
U[0][k]=A[0][k];
if (U[0][0]!=0)
L[k][0]=A[k][0]/U[0][0];
}
for (k=0;k<n;k++)
{
for(j=1;j<k;j++)
{
sum=0;
for (m=0;m<j;m++)
sum+=U[m][j]*L[k][m];
if ((k!=j) && (U[j][j]!=0))
L[k][j]=(A[k][j]-sum)/U[j][j];
}
if (k!=0)
for(j=k;j<n;j++)
{
sum=0;
for (m=0;m<k;m++)
sum+=U[m][j]*L[k][m];
if (j>=k)
U[k][j]=A[k][j]-sum;
}
}
}
void solusiy(matrik A,matriks M,matriks H, int n)
{
int i,j;
float sum;
Almantera Tiantana Al Faruqi (15/379160/TK/43102)

M[0]= H[0];
for (i=1;i<n;i++)
{
sum=0;
for (j=0;j<i;j++)
sum+=A[i][j]*M[j];
M[i]= H[i]-sum;
}
}
void solusix(matrik U, matriks X, matriks Y, int n)
{
int i,j;
float sum;
X[n-1]= Y[n-1]/U[n-1][n-1];
for (i=n-2;i>=0;i--)
{
sum=0;
for (j=n-1;j>i;j--)
sum+=U[i][j]*X[j];
if (U[i][i]!=0)
X[i]= (Y[i]-sum)/U[i][i];
}
}
void output(matriks X, int n)
{
int i;
printf("\nSolusi Persamaan Linier : \n");
for (i=0;i<n;i++)
{
printf("X%d = %.2f ",i+1,X[i]);
printf("\n");
}
}
Almantera Tiantana Al Faruqi (15/379160/TK/43102)

B. Hasil Eksekusi Program Doolittle

Gambar 1. Screenshot Hasil Eksekusi Program Doolittle

Anda mungkin juga menyukai