PERKALIAN MATRIK DENGAN VEKTOR C++
Selamat malam, artikel ini akan dibahas program perkalian matrik dengan vektor menggunakan C++, disini saya akan memberikan bukan hanya c++ nya saja, tetapi terdapat juga algoritma/flowchart, mengidentifikasi input/output, memahami masalah, test menggunakan data, implementasi menggunakan bahasa c++, debug(hasil eksekusi ) . Berikut :
Analisis kasus :
Perkalian matrik berordo 2x3 dengan vektor nya :
- Syarat dua matriks dapat dikalikan adalah ukuran kolom matriks pertama haruslah sama
dengan ukuran baris matriks kedua. Misalnya matiks A berukuran 2 x 3 dan matriks B berukuran 3 x 1 (vektor) dan akan menghasilkan matriks C berukuran 1 x 2. Untuk memperoleh elemen c[i,j] maka suku perkalian dari elemen a dengan baris i dan b dengan kolom j. Sedangkan kolom elemen a dan baris elemen b harus mempunyai perulangan tersendiri.
Menentukan input dan output :
m,n,p, matriks1, matriks2, baris, kolom, i, j, hasil : integer {input}
matriks1, matriks2, hasil : integer {output}
Membuat flowchart/Algoritma :
- Algoritma :
for i <-- 1 to baris do
for j <-- 1 to kolom do
mat_kali[i,j] <-- 0;
for k <-- 1 to barkol do
mat_kali[i,j] <-- mat_kali[i,j] + matriks1[i,k] * matriks2[k,j]
endfor
endfor
endfor
- Raptor/flowchart :
main
baca_matriks
baca_matriks2
void baca_matriks (int mat[10][10], int baris, int kolom){
int i,j;
for (i=0; i<baris; i++)
for (j=0; j<kolom; j++){
cout << "Data [" << i+1 << "," << j+1 << "] : ";
cin >> mat[i][j];
}
}
void kali_matriks(int matriks1[10][10], int matriks2[10][10], int baris, int kolom, int barkol, int mat_kali[10][10]){
for (int i=0; i<baris; i++)
for (int j=0; j<kolom; j++){
mat_kali[i][j] = 0;
for (int k=0; k<barkol; k++)
mat_kali[i][j] = mat_kali[i][j] + matriks1[i][k] * matriks2[k][j];
}
}
void cetak_matriks (int A[10][10], int baris, int kolom){
for (int i=0; i<baris; i++){
for (int j=0; j<kolom; j++)
cout << A[i][j];
cout << endl;
}
}
main() {
int m, n, p;
int matriks1[10][10], matriks2[10][10];
int hasil[10][10];
m = 2;
p=3;
n=1;
cout<<"Data matriks ke-1"<<endl;
baca_matriks(matriks1,m,p);
cetak_matriks(matriks1,m,p);
cout<<"Data matriks ke-2"<<endl;
baca_matriks(matriks2,p,n);
cetak_matriks(matriks2,p,n);
kali_matriks(matriks1,matriks2,m,n,p,hasil);
cout<<"Hasil perkalian : "<<endl;
cetak_matriks(hasil,m,n);
}
Analisis kasus :
Perkalian matrik berordo 2x3 dengan vektor nya :
- Syarat dua matriks dapat dikalikan adalah ukuran kolom matriks pertama haruslah sama
dengan ukuran baris matriks kedua. Misalnya matiks A berukuran 2 x 3 dan matriks B berukuran 3 x 1 (vektor) dan akan menghasilkan matriks C berukuran 1 x 2. Untuk memperoleh elemen c[i,j] maka suku perkalian dari elemen a dengan baris i dan b dengan kolom j. Sedangkan kolom elemen a dan baris elemen b harus mempunyai perulangan tersendiri.
Menentukan input dan output :
m,n,p, matriks1, matriks2, baris, kolom, i, j, hasil : integer {input}
matriks1, matriks2, hasil : integer {output}
Membuat flowchart/Algoritma :
- Algoritma :
for i <-- 1 to baris do
for j <-- 1 to kolom do
mat_kali[i,j] <-- 0;
for k <-- 1 to barkol do
mat_kali[i,j] <-- mat_kali[i,j] + matriks1[i,k] * matriks2[k,j]
endfor
endfor
endfor
- Raptor/flowchart :
main
baca_matriks
baca_matriks2
kali_matriks
cetak_matriks
TEST MENGGUNAKAN DATA :
Misalkan data matriks ke-1 :
Data[1,1] diisi 1
Data[1,2] diisi 2
Data[1,3] diisi 3
Data[2,1] diisi 4
Data[2,2] diisi 5
Data[2,3] diisi 6
Maka akan tampil matrik seperti dibawah
1 2 3
4 5 6
Misalkan data matriks ke-2 :
Data[1,1] diisi 7
Data[2,1] diisi 8
Data[3,1] diisi 9
Maka akan tampil matriks ke-2 seperti dibawah :
7
8
9
dan akan mencetak dari hasil perkaliannya matriknya menjadi berordo 1x2 , yaitu :
50
122
IMPLEMENTASI BAHASA C++ :
#include <iostream>
using namespace std;void baca_matriks (int mat[10][10], int baris, int kolom){
int i,j;
for (i=0; i<baris; i++)
for (j=0; j<kolom; j++){
cout << "Data [" << i+1 << "," << j+1 << "] : ";
cin >> mat[i][j];
}
}
void kali_matriks(int matriks1[10][10], int matriks2[10][10], int baris, int kolom, int barkol, int mat_kali[10][10]){
for (int i=0; i<baris; i++)
for (int j=0; j<kolom; j++){
mat_kali[i][j] = 0;
for (int k=0; k<barkol; k++)
mat_kali[i][j] = mat_kali[i][j] + matriks1[i][k] * matriks2[k][j];
}
}
void cetak_matriks (int A[10][10], int baris, int kolom){
for (int i=0; i<baris; i++){
for (int j=0; j<kolom; j++)
cout << A[i][j];
cout << endl;
}
}
main() {
int m, n, p;
int matriks1[10][10], matriks2[10][10];
int hasil[10][10];
m = 2;
p=3;
n=1;
cout<<"Data matriks ke-1"<<endl;
baca_matriks(matriks1,m,p);
cetak_matriks(matriks1,m,p);
cout<<"Data matriks ke-2"<<endl;
baca_matriks(matriks2,p,n);
cetak_matriks(matriks2,p,n);
kali_matriks(matriks1,matriks2,m,n,p,hasil);
cout<<"Hasil perkalian : "<<endl;
cetak_matriks(hasil,m,n);
}
DEBUG(hasil eksekusi) :
dari kertas nya :