Laman

Kamis, 24 Maret 2011

menghitung eigenValue di C# (C Sharp )

Sebelumnya sudah ada postingan tentang menghitung eigenvalue, eigenvector dan operasi operasi lainnya di C#, pada postingan kali ini akan dibahas lebih detail untuk menghitung eigenValue. Perlu di ketahui, bahwa untuk menghitung eigenvalue maupun eigenvector pada sebuah matrix tergolongan rumit, diperlukan methode tersendiri untuk menghitung eigenvalue dan eigenVector. Accord merupakan salah satu library yang bisa digunakan untuk menghitung eigenValue, eigenVector maupun operasi operasi matrix lainnya. Seperti biasanya untuk membuat project silahkan siapkan project kosong terlebih dahulu, klik file new project akan muncul kotak project name, isi nama project sesuai dengan keinginan, tidak ada aturan khusus dalam penulisan. untuk langkah langkah lebih detail silahkan ikuti step demi step berikut ini. Sebelum membuat project silahkan baca terlebih dahulu artikel membuat multiForm disini dan menambahkan library disini karena ini project kali ini berkaitan dengan kedua artikel diatas

langkah 1 : tambahkan komponen openfiledialog, datagirdview, tabControl, openFileDialogdan dua buah button, atur dan tata sedemikian rupa sehingga tampilanya seperti pada gambar diatas
langkah 2 : tambahkan kelas excelReader (untuk cara meambahkan kelas dan source code kelas reader silahkan baca tutorial disini)
langkah 3 : tambhakan satu form lagi dan atur supaya bisa meload data dari file excel dan juga bisa terkoneksi dengan form satu, (tutoria nya silahkan baca disini)
langlah 4 : tambahkan library accord.math. untuk file dll nya silahkan download disni. setelah file accord.math.dll berhasil di reference ke project, tambahakn code berikut ini pada header program 
using Accord.Math;
using Accord.Math.Decompositions;

langkah 5 : pada button satu (button yang berlabelkan load data) double klik pada button tersebut untuk membangkitkan event single klik pada button tersebut. setelah muncul jendela code, tambahakan source berikut ini
if (openFileDialog1.ShowDialog(this) == DialogResult.OK){
string filename = openFileDialog1.FileName;
string extension = Path.GetExtension(filename);
if (extension == ".xls")
{
 ExcelReader db = new ExcelReader(filename, true, false);
 Form2 t = new Form2(db.GetWorksheetList());
 if (t.ShowDialog(this) == DialogResult.OK)
 {
    this.dataGridView1.DataSource = db.GetWorksheet(t.Selection);
    this.dataGridView1.DataSource = db.GetWorksheet(t.Selection);
 }
}
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++){
  dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
}}
dataMatrix = ToMatrix(dataGridView1.DataSource as DataTable,  out sourceColomns);

langlah 6 : Lakukan hal yang sama pada button dua (button yang berlabelkan prosess). source codenya seperti dibawah ini
  var evd = new EigenvalueDecomposition(dataMatrix);             
            var V = evd.Eigenvectors;                            
            var D = evd.DiagonalMatrix;                          
            tampilkanDataMatrik(D, dataGridView2);          


langkah 7 : buat function untuk menampilkan hasil matrik kedataGridView. Source code seperti dibawah ini
 grid.Rows.Clear();
 for (int i = 0; i < data.GetLength(0); i++)
 {
    DataGridViewColumn newCol = new DataGridViewColumn();
    DataGridViewCell cell = new DataGridViewTextBoxCell();
    newCol.CellTemplate = cell;
    newCol.HeaderText = (i+1).ToString();
    newCol.Visible = true;
    newCol.Width = 60;
    grid.Columns.Add(newCol);
 }
 grid.Rows.Add(data.GetLength(1));
 for (int i = 0; i < data.GetLength(1); i++)
 {          
    grid.Rows[i].HeaderCell.Value = (i + 1).ToString();
 }
 for (int i = 0; i < data.GetLength(0); i++)
 {
  for (int j = 0; j < data.GetLength(1); j++)      
    {
       grid.Rows[i].Cells[j].Value = data[i,j].ToString();
    }
 }

langkah 8 : done, program selesai dibuat. Jika langkha langkah diatas dilakukan dengan benar, maka program pada waktu dijalankan akan muncul form dimana user diminta untuk meload data dari file excel. Setelah data berhasil diload ke dataGrid selanjutnya dilakukan proses untuk menghitung eigenValue maupun EigenVector. Hasil perhitungan dari eigenValue dan eigenVector akan ditampilkan pada tab proses. Berikut ini beberapa hasil preview saat program dijalankan


Gambar 1. Tampilan program saat meload data dari file excel

Gambar 2. Hasil perhitungan Eigen value menggunakan Accord.Math

Coba bandingkan hasil perhitungan program yang telah dibuat dengan hasil perhitungan eigenvalue yang dihitung menggunakan program matlan 7. Bila diperhatikan secara cermat tidak ada berbedaan angka, jadi kesimpulannya hasil perhitungan library accord.math sangat akurat

Gambar 3. Preview perhitungan eigenValue dengan tool matlab 7

Untuk lebih memudahkan dalam memahami turorial ini silahkan download contoh programnya disini dan download juga projectnya disini. Sedangkan file file pelengkap bisa di download link dibawah ini
Download program disini
Download project disni
Download library accord (accord.math) disini
Download file data excelnya disini
For more information contact on informasi@csharp-indonesia.com

pandauan download : klik link download yang disediaan diatas, setelah itu akan muncul halaman adf.ly, tunggu beberapa detik sampai pada pojok kanan atas muncul tulisan skip ad. klik tombol tersebut ,setelah itu akan muncul halaman ziddu, silahkan klik pada button download yang muncul pada halaman ziddu
NB : Semua program dalam tutorial ini ditulisa menggunakan IDE Visual studio 2010. dengan target framework 3.5.Sehingga minimal komputer harus terinstal windows vista untuk bisa menjalankan program *.exe nya, Atau windows xp yang sudah di instal netFrameWork 3.5. Sedangkan untuk membuka projectnya mau tidak mau harus menginstal microsoft visual studio 2010
Artikel Terkait

16 komentar:

  1. salam kenal admin, apakah ini bisa di implementasikan pada VB.? terimakasih. mohon bantuannya ya..

    BalasHapus
  2. @Anonim:DLL ini didesain untuk framework .NET dan saya rasa ini bisa diimplementasikan pada VB.NET tapi saya belum pernah mencobanya

    BalasHapus
  3. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  4. kalo penghitungan eigenvalue langsung di C# bisa ga ya? tanpa melibatkan matlab nya...
    skalian donk request mengubah matriks menjadi vector dan menampilkan nya didatagridview
    CP: wew@dugem.com

    BalasHapus
  5. semangatUntukBelajarC10 Desember 2011 pukul 19.10

    kalau di C# nya sendiri tidak disediakan function untuk melakukan solve eigen, baik itu eigen Vector maupun Eigen Value, sehingga harus membutuhkan sebuah Library untuk melakukan solve tersebut, dan Library yang paling sering digunakan adalah Accord dan Aforge dimana kedua Library ini sudah sangat teruji dalam hal akurasi dan kecepatannya.
    semoga bisa bermanfaat..

    oia saya masih bingung dengan yang dimaksud mengubah matrix menjadi vector.?
    bisa dijelaskan sedikit?

    terimakasih banyak

    BalasHapus
  6. semangatUntukBelajarC10 Desember 2011 pukul 19.14

    tambahan...
    jika ingin menggunakan Bahasa .NET tetapi mempunyai kemampuan dan fitur yang mirip dengan MATLAB, silahkan coba dengan bahasa Pemrograman F#. Kalau C# adalah Javanya Microsoft maka F# adalah MATLABnya Microsoft...

    patut dicoba.. heheheh
    terimakasih dan semoga bisa bermanfaat....
    amin..

    BalasHapus
  7. gimana caranya supaya bisa download projectnya ya... soalnya data projectnya sudah di hapus dari ziddu.... kalau masih masih ada file projectnya tolong dikirimin dong ... ke : mait_ern@ymail.com

    BalasHapus