Sabtu, 17 Juni 2017

Workshop 9 All

Assalamualaikum wr.wb

1. Buatlah algoritma dan program untuk mengalikan matriks dengan vektor. Vektor adalah matriks berdimensi satu (bisa matriks baris maupun matriks kolom). Implementasikan matriks dengan array berdimensi dua, dan vektor dengan menggunakan matriks berdimensi satu.

       1.    Identifikasi masalah
→ mengalikan matriks dengan vector
       2.   Menentukan input dan output
→ input                    :baris
                                :kolom
                                :A[max]
                                : m[baris]
                                :n
→output                  :perkalian matriks dan vektor=
      3. Membuat Algoritma/flowchart
Deklarasi:
A[maks][maks], baris, kolom, m[baris] ,n              :integer

Deskripsi:
for i ←0 to baris do then i++
for j←0 to kolom do then j++
write(‘Masukan data ke ["<<i<<"] ["<<j<<"]’)                  
end for
end for
              
              
write(‘Isi Matriks A ‘)
for i ←0 to baris do then i++
for j←0 to kolom do then j++
write(‘A[i][j]’)

end for
end for

write(‘penghitungan vektor ‘)
for z←0 to kolom do then z++
write(‘Masukan data ke ["<<z<<"] ‘)                     
end for

write(‘ vektor ‘)
for z←0 to kolom do then z++
write(‘m[z]’)
end for

write(‘perkalian matrik dan vektor ‘)
for i ←0 to baris do then i++
for j←0 to kolom do then j++
for z←0 to kolom do then z++
n←A[i][j]*m[z]
end for
end for
end for

            4. Test menggunakan data
inputin→             :baris[2]=|1|
                                          |2|
                           Kolom[2]=|1|
                                             |2|
                           Isi matrik A=|1| |2|
                                               |1| |2|
                           Berapa variable=2
                           Vektor b=|1|
                                           |2|

output→             :perkalian matrik dan vektor= 1 2 2 4 1 2 2 4



         5.  Implementasi dengan c++
 
#include <iostream>
#define maks 10
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
int A[maks][maks], baris, kolom;
cout<<"input baris :"; cin>>baris;
cout<<"input kolom :"; cin>>kolom;    
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<"Masukan data ke ["<<i<<"] ["<<j<<"] : "; cin>>A[i][j];                
}          
}          
cout<<"Isi Matriks A :\n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
cout<<A[i][j]<<" ";
}
cout<<endl;
}
int m[baris],n;
cout<<"penghitungan vektor \n";
cout<<"berapa variabel : ";
                cin>>m[kolom];
                for(int z=0; z<kolom; z++){
                cout<<"Masukan data ke ["<<z<<"] "" : "; cin>>m[z];                  
}
cout<<endl;

cout<<" vektor b : \n";
                for(int z=0; z<kolom; z++){
cout<<m[z]<<"\n";
}
cout<<"perkalian matrik dan vektor \n";
for(int i=0; i<baris; i++){
for(int j=0; j<kolom; j++){
for(int z=0; z<kolom; z++){
n=A[i][j]*m[z];
cout<<n<<" ";
}
}
}
                return 0;
}
  
      
6. Eksekusi





2. Diberikan suatu matriks berordo n. Buatlah algoritma dan program untuk mencetak matriks identitas berodo n.


1.       Identifikasi masalah
→ program untuk mencetak matriks identitas berodo n

2.       Menetukan Input Output:
→ input               :i, j, n

→output             :masukkan ordo matriks

3.       Membuat Algoritma/flowchart
 Algoritma:
Deklarasi:
i, j, n      :integer
Deklarasi:
Write(‘masukkan ordo matriks ‘)
For i←1 to n do i++ then
For j←1 to n do then j++
if(i==j)
write(‘1’)
else
write(‘0’)
end for
end for
end if

Raptor:



4.       Test menggunakan data
→inputin             :masukkan ordo matriks=4

→ouputi              :        1  0  0  0
                                    0    1  0  0
1     0  1  0
0  0  0  1

5.       Implementasi dengan c++


#include"iostream"
using namespace std;
main(){ int i,j,n;
                cout<<"masukkan ordo matriks : "; cin>>n;
                for(i=1;i<=n;i++){
                                for(j=1;j<=n;j++){
                                                if(i==j) cout<<"1 ";
                                                else cout<<"0 ";
                                }
                                cout<<endl;
                }
}


6.       Eksekusi

 



3. Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks.

1.       Identifikasi masalah
→menghasilkan transpose suatu matriks.

2.       Menentukan input dan output
→ input               :i, j, m, n ,o, mat [m][n]
           
→output             :transpose matriksnya adalah

3.       Membuat algoritma/flowchart
 Deklarasi:
 i,j,m,n,o,mat[m][n]        :integer

Deskripsi:
write(‘Program transpose matriks C(m,n)’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘nilai C("<<i+1<<","<<j+1<<")’)
end for
end for
                                           
write(‘matriks diatas diilustrasikan seperti gambaran dibawah ini’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

o→m
m→n
n→o;
write(‘Transpose matriksnya adalah seperti gambar dibawah ini\’)
for i←0 to m do then i++
for j←0 to n do then j++
write(‘mat[i][j]’)
end for
end for

Raptor:








4.       Test menggunakan data
→inputin             :nilai m=3
                            Nilain n=3
                             
→ouput               :matriks dapat di ilustrasikan seperti gambar di bawah ini
                                1 2 3
                                4 5 6
                                2 4 5
                                transpose matriksnya adalah
                                1 4 2
                                2 5 4
                                3 6 5

5.       Implementasikan dengan c++
#include"iostream"
using namespace std;
main(){ int i,j,m,n,o;
                cout<<"Program transpose matriks C(m,n)\nMasukkan nilai m : ";
                cin>>m; cout<<"masukkan nilai n : "; cin>>n;
                int mat[m][n];
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<"nilai C("<<i+1<<","<<j+1<<")=";
                                                cin>>mat[i][j];
                                }
                                cout<<endl;
                }
                system("cls");
                cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
                for(i=0;i<m;i++){
                                for(j=0;j<n;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                o=m; m=n; n=o;
                cout<<"\nTranspose matriksnya adalah seperti gambar dibawah ini\n\n";
                for(j=0;j<m;j++){
                                for(i=0;i<n;i++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
}

6.       Eksekusi







4. Buatlah algoritma dan program mengalikan matriks dengan suatu skalar (konstanta).


1.       Identifikasi masalah
→ mengalikan matriks dengan suatu skalar (konstanta)

2.       Menentukan input dan output
→input                 : q,  brs, klm, i, j ,k        

→output             :matriks a=
                           Matriks b=
                           Matriks a x b=

3.       Membuat algoritma/flowchart
Deklarasi:
q,  brs, klm , i, j,k              :integer
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write(‘ Elemen (i + 1), (j + 1)’)
end for
end for
       
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write((‘q + i * klm + j) ‘)
end for
end for

for i  ←0 to bA do then i++
for j ←0 to kB to then  j++
(z + i * bB + j) ← 0;
For k ← 0 to kA do then  k++
(z + i * bB + j) +=← (p + i * kA + k) * (*(q + k * kB + j))
End for
End for
End for

4.       Test menggunakan data
→input                 :jumlah baris dan kolom matriks A=[2][3]
                             jumlah baris dan kolom matriks B=[3][2]
                             koordinat inputan misalkan berordo=[2][2]

→output             :matriks A x B=|12           12|
                                                    -1            12          

5.       Implementasikan dengan c++


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void Masukan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        for(j = 0; j < klm; j++) {
            cout << " Elemen [" << (i + 1) << "][" << (j + 1) << "]? ";
            scanf("%d", (q + i * klm + j));
        }
    }
}

void Tampilkan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        cout << endl;
        for(j = 0; j < klm; j++) {
            cout <<" ";
            cout << *(q + i * klm + j) << "\t";
        }
    }
    cout << endl;
}

void Kali(int *p, int *q, int *z, int bA, int kA, int bB, int kB) {
    int i, j, k;
    for(i = 0; i < bA; i++) {
        for(j = 0; j < kB; j++) {
            *(z + i * bB + j) = 0;
            for(k = 0; k < kA; k++) {
                *(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j));
            }
        }
    }
}

int main() {
cout<<"\t\t\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n";
awal:
    int *a, *b, *c, brsA, klmA, brsB, klmB;
    cout<<"\n SYARAT...!!!\n";
    cout<<" Jumlah Kolom A HARUS SAMA dengan Baris B\n\n";
    cout << " Jumlah Baris Matriks A? ";
    cin >> brsA;
    cout << " Jumlah Kolom Matriks A? ";
    cin >> klmA;
    cout << " Jumlah Baris Matriks B? ";
    cin >> brsB;
    cout << " Jumlah Kolom Matriks B? ";
    cin >> klmB;
    if(klmA != brsB) {
        cout << " Perkalian TIDAK Dapat Dilakukan." << endl;
        cout << " Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B." << endl;
    } else {
        a = (int *) malloc(brsA * klmA * 4);
        b = (int *) malloc(brsB * klmB * 4);
        c = (int *) malloc(brsA * klmB * 4);

        cout << "\n Kordinat Inputan [y][x]" ;
        cout << "\n Contoh: ordo 2x2" ;
        cout << "\n [1][1]\t[1][2]\t" ;
        cout << "\n [2][1]\t[2][2]\t" ;
        cout << "\n\n Input Matriks A:\n" ;
        cout << " ----------------\n";
        Masukan(a, brsA, klmA);
        cout << "\n Input Matriks B:\n" ;
        cout << " ----------------\n";
        Masukan(b, brsB, klmB);

        cout << "\n Matriks A:" << endl;
        Tampilkan(a, brsA, klmA);
        cout << "\n Matriks B:" << endl;
        Tampilkan(b, brsB, klmB);
        Kali(a, b, c, brsA, klmA, brsB, klmB);
        cout << "\n Matriks A x B:" << endl;
        Tampilkan(c, brsA, klmB);
    }
cout<<"\n\n Apakah Anda Ingin Mengulang [Y/N] ? "  ;
char m ;
cin>>m;
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')
{
goto akhir;
}
akhir:
cout<<"\n\n\t\t\t    \"TERMA KASIH\"";
    return 0;
}

6.       Eksekusi










 5. Buatlah algoritma dan program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan.


1.       Identifikasi masalah
→program invers matriks berordo dua. Lalu kalikan matriks asal dengan matriks  inversnya untuk mengecek apakah hasil kalinya merupakan matriks identitas atau bukan

2.       Menentukan input dan output
→input                 : i, j, det, temp

→output             :untuk inversnya adalah

3.       Membuat algoritma/flowchart
 Raptor:
















.       Test menggunakan Data

→input                 :nilai c(1,1)=2
                             Nilai c(1,2)=1

                             Nilai c(2,1)=1
                             Nilai c(2,2)=2

                             Matriks= 2           2
                                            1           2
→output             :adjoin dari matriks diatas adalah
                                 2             -2
                                 -1             2
                                Untuk inversnya adalah
                                 1             -1
                                -0.5          1
5.       Implementasi dengan c++


#include"iostream"
using namespace std;
main(){ int i,j; float det,temp;
                float mat[2][2], c[2][2], ci[2][2], ch[2][2];
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<"nilai C("<<i+1<<","<<j+1<<")=";
                                                cin>>mat[i][j];
                                                c[i][j]=mat[i][j];
                                }
                                cout<<endl;
                }
                cout<<"matriks diatas diilustrasikan seperti gambaran dibawah ini\n\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                mat[0][1]=-mat[0][1]; mat[1][0]=-mat[1][0];
                temp=mat[0][0]; mat[0][0]=mat[1][1]; mat[1][1]=temp;
                cout<<"\nadjoin dari matriks diatas adalah\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<mat[i][j]<<" ";
                                }
                                cout<<endl;
                }
                det=mat[0][0]*mat[1][1]-mat[1][0]*mat[0][1];
                det=1/(float)det;
                cout<<"\nSedangkan untuk inversnya adalah sebagai berikut\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                ci[i][j]=det*mat[i][j];
                                                cout<<ci[i][j]<<" ";
                                }
                                cout<<endl;
                }
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                 for(int k=0;k<2;k++){
                                                temp=c[i][k]*ci[k][j];
                                                ch[i][j]=ch[i][j]+temp;
                                                 }
                                }
                }
                cout<<"\nhasil perkalian matriks asal dengan\nmatriks yang telah di invers adalah\n";
                for(i=0;i<2;i++){
                                for(j=0;j<2;j++){
                                                cout<<ch[i][j]<<" ";
                                }
                                cout<<endl;
                }
}

6.       Eksekusi

0 komentar:

Posting Komentar