Select Language



Followers

IT Programmer. Powered by Blogger.

10 December 2009

Program Invers Matriks 3x3 C++

"Om Swastiastu"

Pencarian invers matriks 3x3 dalam C++ lebih rumit dari pencarian invers matriks 2x2. Saya sendiri perlu mengertikan rumus rumusnya terlebih dahulu sebelum membuat coding programnya.
Dan akhirnya saya berhasil membuat program invers matriks 3x3 ini kedalam bahasa pemrograman C++.
Langkah awal yang saya gunakan adalah mencari determinan, kemudian matriks 3x3 ini kita carikan kofaktornya. Setelah mendapatkan kofaktor, kita cari Adjoint matriks 3x3, dimana Adjoint matriks 3x3 adalah transpose dari kofaktor matriks.
Nah, sekarang kita tinggal mencari nilai invers matriks 3x3. Caranya adalah dengan membagi Adjoint matriks 3x3 dengan determinannya.

Silahkan lihat coding dibawah untuk lebih jelasnya. Jika ada pertanyaan, silahkan ketikan di kolom dibawah posting..


//Determinan Matriks 3x3
#include <iostream.h>
#include <conio.h>

#define Nmaks 4

void main()
{
 typedef float matriks[Nmaks][Nmaks];
 int i,j,determinan;
 matriks A,a,C,c;
 char answer;

 do
 {
 do
 {
  clrscr();
  cout<<"DETERMINAN MATRIKS A : "<<endl<<endl;
  cout<<"Masukkan Nilai Matriks A : "<<endl;
  for(i=1;i<=3;i++)
  {
   for(j=1;j<=3;j++)
   {
    cout<<"A["<<i<<","<<j<<"] = ";
    cin>>A[i][j];
   }
  }

 clrscr();
 cout<<endl;
 //Proses Mencari Determinan Matriks A

 determinan = ((A[1][1]*A[2][2]*A[3][3])+(A[1][2]*A[2][3]*A[3][1])+(A[1][3]*A[2][1]*A[3][2])) -
              ((A[3][1]*A[2][2]*A[1][3])+(A[3][2]*A[2][3]*A[1][1])+(A[3][3]*A[2][1]*A[1][2]));
 }while (determinan == 0);

 //Setelah Mendapat Determinannya, sekarang kita cari Kofaktornya

 C[1][1] = (A[2][2]*A[3][3] - A[3][2]*A[2][3]);
 C[1][2] = -1 * (A[2][1]*A[3][3] - A[3][1]*A[2][3]);
 C[1][3] = (A[2][1]*A[3][1] - A[3][1]*A[2][2]);
 C[2][1] = -1 * (A[1][2]*A[3][3] - A[3][2]*A[1][3]);
 C[2][2] = (A[1][1]*A[3][3] - A[3][1]*A[1][3]);
 C[2][3] = -1 * (A[1][1]*A[3][2] - A[3][1]*A[1][2]);
 C[3][1] = (A[1][2]*A[2][3] - A[2][2]*A[2][3]);
 C[3][2] = -1 * (A[1][1]*A[2][3] - A[2][1]*A[1][3]);
 C[3][3] = (A[1][1]*A[2][2] - A[2][1]*A[1][2]);

 //Setelah Mendapatkan Kofaktornya, sekarang kita mencari Adjoint Matrix A
 //Dimana Adjoint Matriks A adalah Transpose dari Kofaktor Matriks A

 c[1][1] = C[1][1];   c[2][1] = C[1][2];   c[3][1] = C[1][3];
 c[1][2] = C[2][1];   c[2][2] = C[2][2];   c[3][2] = C[2][3];
 c[1][3] = C[3][1];   c[2][3] = C[3][2];   c[3][3] = C[3][3];

 //Setelah Mendapatkan Kofaktor Matriks A, sekarang kita bisa mencari nilai Invers Matrix A
 //Dimana Invers Matrix A adalah hasil bagi antara Adjoint dengan Determinan Matrix A

 a[1][1] = c[1][1]/determinan;
 a[1][2] = c[1][2]/determinan;
 a[1][3] = c[1][3]/determinan;
 a[2][1] = c[2][1]/determinan;
 a[2][2] = c[2][2]/determinan;
 a[2][3] = c[2][3]/determinan;
 a[3][1] = c[3][1]/determinan;
 a[3][2] = c[3][2]/determinan;
 a[3][3] = c[3][3]/determinan;

 clrscr();
 //Output Matriks A
 gotoxy(1,5);
 cout<<"A = ";
 for(i=1;i<=3;i++)
 {
  for(j=1;j<=3;j++)
  {
   gotoxy(2+5*j,1+2*i);
   cout<<A[i][j];
  }
 }

 gotoxy(1,8);
 cout<<"Determinan Matriks A = "<<determinan;

 //Output Kofaktor Matriks A
 gotoxy(1,10);
 cout<<"Determinan Matriks A ";
 gotoxy(1,15);
 cout<<"KoA = ";
 for(i=1;i<=3;i++)
 {
  for(j=1;j<=3;j++)
  {
   gotoxy(1+7*j,11+2*i);
   cout<<C[i][j];
  }
 }

 //Output Adjoint Matriks A
 gotoxy(1,19);
 cout<<"Adjoint Matriks A ";
 gotoxy(1,24);
 cout<<"Adj = ";
 for(i=1;i<=3;i++)
 {
  for(j=1;j<=3;j++)
  {
   gotoxy(1+7*j,20+2*i);
   cout<<c[i][j];
  }
 }

 //Output Invers Matriks A
 gotoxy(1,27);
 cout<<"Invers Matriks A ";
 gotoxy(1,32);
 cout<<"A^-1 = ";
 for(i=1;i<=3;i++)
 {
  for(j=1;j<=3;j++)
  {
   gotoxy(1+9*j,28+2*i);
   cout<<a[i][j];
  }
 }


 getch();
 clrscr();
 cout<<"== PROGRAM SELESAI =="<<endl<<endl;
 cout<<"Mau Melakukan Perhitungan Lagi?? [Y/T] "; cin>>answer;
 }
 while ((answer == 'y') || (answer == 'Y'));
}



Sekian yang dapat saya berikan mengenai invers matriks 3x3.

"Om Santhi, Santhi, Santhi, Om"



Comments:

Ada 4 comments pada “Program Invers Matriks 3x3 C++”
Anonymous said...
pada hari 

mas, saya tadi coba execute programnya ga bisa? ada 5 errors & 4 warnings..
oia mas bisa bantu saya untuk bikin program invers matriks untuk orde yang bisa tentukan sendiri ga? (misal 4x4, 5x5, 100x100 dsb)
makasih

IT Programmer said...
pada hari 

@ANONIM: setelah kamu bilang programnya gmw di execute, langsung saya coba compile bisa kok, saya run juga berhasil,, saya pake Borland C++ 5.02,, kamu pake apa??

kalau invers sampe 100x100 itu belum bisa saya,, karena sulit menjabarkan rumusnya, kcuali dibuat satu per satu..

caiank said...
pada hari 

bukan cuma error tapi ada yg salah di kofaktornya,,, ^^

ester srikandini said...
pada hari 

admin, mau nanya, syntax dari program matrix ordo 100x100 yang angkanya di random ,, trus outputnya adalah mencari nilai yang sama di samping kiri dan kanan dari angka tersebut dan angka yang sama 45 derajat dari angka tersebut..

Social Media


Facebook Page

Traffic

feeds  Powered by  MyPagerank.Net PR Programming Blogs - Blog Catalog Blog Directory    Yahoo bot last visit powered by MyPagerank.Net bl srvce Y! Msn bot last visit powered by MyPagerank.Net Add to Google Reader or Homepage  backlink-clever  Programming Blogs - BlogCatalog Blog Directory

Programming Tutorial


Info


Tips
Downloads
Friends
Sponsor
Visitor
 
This Blog is proudly powered by Blogger.com | Template by Bali Web Development | Privacy Policy | Rise Up!!