Rabu, 06 April 2011

tugas materi teknik komputasi matriks

berikut ini merupakan program c++ Contoh soal Penyelesaian Persamaan Linear Serentak (PLS) menggunakan Metode Matriks untuk mata kuliah teknik komputasi yang diajarkan di perkuliahan. semoga bisa bermanfaat.


/* Contoh soal Penyelesaian Persamaan Linear Serentak (PLS) menggunakan Metode Matriks
/* Nama Program : m_augmented.cpp */
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define baris 10
#define kolom 10
main()
{
FILE *m_augmented;
double A[baris][kolom],/* Matriks Persamaan (A) */
AH[baris][kolom], /*Matriks Augmented (AH) */
x[baris],/* Matriks Solusi (x) */
H[baris],/* Matriks Persamaan(H) */
m,temp;
int i,j,k,n,p,q,r;
char lagi;
do
{

m_augmented=fopen("m_augmented.txt","w+");
cout<<"\n\nMetode Invers-Determinan Matriks untuk PLS\n";
cout<<"=======================================================\n\n";
/*******************************\
\* Algoritma */
/* --------- 8\
\* */
/* 1. Masukkan Matriks A *\
\* 2. masukkan Matriks H */
/* 3. Ubah ke Bentuk Matriks AH *\
\* 4. Buat matriks Segitiga Bawah */
/* 5. Hitung Solusi Matriks *\
\* */
/*******************************************/
/***************************************************************/
/*Pengisian Matriks A(3x3) dan H(3x1)*/
/***************************************************************/
cout<<"\nMasukkan Nilai Matriks A (umumnya (3x3))\n";
cout<<"---------------------------------\n";
cout<<"\nMasukkan Jumlah Baris ?";
cin>>p;
cout<<"\nMasukkan Jumlah Kolom ?";
cin>>q;
/***************************************************************/
/*Matriks A(3X3)*/
/**************************************************************/
printf("\n");
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
{
printf("A[%d][%d]=",i+1,j+1);
cin>>A[i][j];
}
printf("\n");
}
/*Pengisian Data Matriks H(umumnya(3x1))*/
cout<<"\n Masukan nilai matriks H(umumnya(3x1))\n";
cout<<"-------------------------------------------\n";
cout<<"\n Masukan Jumlah baris?";
cin>>r;
/************************************************************/
/*Matriks H(3X1)*/
/***********************************************************/
printf("\n");
for(i=0;i<r;i++)
{
printf("H[%d]=",i+1);
cin>>H[i];
}
/*********************************************************/
/*Tampilkan Matriks A(3X3)dan Matriks(3X1)*/
/********************************************************/
/*Cetak Matriks A*/
printf("\nA=");
fprintf(m_augmented,"\n\nA=");
for(i=0;i<p;i++)
{
printf("\n=");
fprintf(m_augmented,"\n");
for(j=0;j<q;j++)
{
printf("\t.2f",A[i][j]);
fprintf(m_augmented,"\t.3f",A[i][j]);
}
}
/* Cetak Matriks H*/
printf("\n\nH=\n");
fprintf(m_augmented,"\n\nH=\n");
for(i=0;i<r;i++)
{
printf("\n\t%.2f",H[i]);
fprintf(m_augmented,"\t%.3f\n",H[i]);
}
/********************************************************/
/*Inisialisasi Matriks x (3x1)*/
/********************************************************/
/*Inisialisasi x[i]=0*/
for(i=0; i<r; i++)
{
x[i]=0;
}
/********************************************************/
/*Proses membentuk Matriks Augmented AH*/
/********************************************************/
cout<<"\n\n\nMatriks AH sebelum proses Segitiga Bawah\n";
cout<<"-------------------------------";
/*Augmented Matriks*/
printf("\n\nAH=");
fprintf(m_augmented,"\n\nAH=\n");
for(i=0; i<p; i++)
{
printf("\n");
fprintf(m_augmented,"\n");
for(j=0; j<q; j++)
{
if(j!=q)
{
AH[i][j]=A[i][j];
printf("\t%.2f",AH[i][j]);
fprintf(m_augmented,"\t%.3f",AH[i][j]);
}
else
{
AH[i][j]=H[i];
printf("\t%.2f",AH[i][j]);
fprintf(m_augmented,"\t%.3f",AH[i][j]);
}
}
}
/***************************************************/
/*Proses Membuat Matriks Segitiga Bawah AH*/
/***************************************************/
for(k=0; k<p-1; k++)
{
for(i=k+1; i<q+1; i++)
{
m=AH[i][k]/AH[k][k];
for(j=k; j<q+1; j++)
{
AH[i][j]=AH[i][j]-m*AH[k][j];
}
}
}
cout<<"\n\n\n Matriks AH setelah proses segitiga bawah\n";
cout<<"-------------------------------------------------";
/*Cetak Matriks AH*/
printf("\n\nAH=");
fprintf(m_augmented,"\n\nAH=\n");
for(i=0; i<p; i++)
{
printf("\n");
fprintf(m_augmented,"\n");
{
if(j!=q)
{
A[i][j]=AH[i][j];
printf("\t%.2f",A[i][j]);
fprintf(m_augmented,"\t%.3f",A[i][j]);
}
else
{
H[i]=AH[i][j];
fprintf(m_augmented,"\t%.3f",H[i]);
}
}
}
/* Cetak Matriks H*/
printf("\n\nH=");
fprintf(m_augmented,"\n\nH=\n");
for(i=0; i<r; i++)
{
printf("\t%.2f",H[i]);
fprintf(m_augmented,"\t%.3f",H[i]);
}
/**************************************************/
/*Matriks x(3x1)Hasil perhitungan */
/**************************************************/
/*Solusi*/
for(k=p-1;k>=0;k--);
{
x[k]=(H[k]-temp)/A[k][k];
}
/*Cetak Matriks x hasil Perhitungan*/
cout<<"\n\nx=\n";
cout<<"--------";
printf("\n\nx=\n");
fprintf(m_augmented,"\n\nSolusi x\n");
for(n=r-1;n>=0;n--)
{
printf("\tx[%d]=%.3f\n",n+1,x[n]);
fprintf(m_augmented,"\tx[%d]=%.3f\n",n+1,x[n]);
}
fclose(m_augmented);
cout<<"\n\n\nCoba lagi dengan data yang berbeda (y/t)?";
cin>>lagi;
}while(lagi!='t');
return 0;
}

Tidak ada komentar:

Posting Komentar