Algorithma Perkalian Pangkat Matrix dengan C++


Seorang pengguna aplikasi Matrix Inverse penulis, meminta bantuan untuk menyelesaikan problem matematikanya, yaitu mengenai perpangkatan matrix.

Pengguna itu bertanya, bagaimana algorithma perkalian pangkat matrix.

Misalnya jika mempunyai matrix A dengan nilai sebagai berikut:


Bagaimana jika dipangkatkan tiga, menjadi A3.

Karena pengguna meminta menggunakan bahasa C++, berikut ini penulis tuliskan kode C++, implementasi algorithma perpangkatan matrix tersebut:

#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
    int row1, col1, n; 
 int **c,**d; 

 int a[2][2]={ 
   {3,2}, 
   {4,-2} 
 }; 
 
 n = 3; 
 col1 = 2; 
 row1=col1; 

 c = new int*[row1]; 
 d = new int*[row1]; 
 for(int i = 0; i < row1; i++) 
 { 
  c[i] = new int[col1]; 
  d[i] = new int[col1]; 
  for(int j = 0; j < col1; j++) 
  { 
   c[i][j] = a[i][j]; 
   d[i][j] = 0; 
  } 
 } 

 for(int b = 0; b < n-1; b++) 
 { 
  // Multiplication 
  for(int i = 0; i < row1; i++) 
  { 
   for(int j = 0; j < col1; j++) 
   { 
       int hsl=0; 
    for(int k = 0; k < col1; k++) 
    { 
     hsl+=c[i][k] * a[k][j]; 
    } 
    d[i][j]=hsl; 
   } 
  } 
  // Multiplication 
  for(int i = 0; i < row1; i++) 
  { 
   for(int j = 0; j < col1; j++) 
   { 
       c[i][j]=d[i][j]; 
   } 
  } 
 } 
 
 // Output matrix in StringGrid2 (SG2) 
 for(int i = 0; i < row1; i++) 
 { 
  for(int j = 0; j < col1; j++) 
  { 
     cout<<c[i][j]<<" "; 
  } 
  cout<<endl; 
 } 
 
    return 0; 
} 

Semoga bermanfaat.

Komentar