Pada tulisan berikut, akan diberikan contoh algoritma dan program untuk mengolah matriks dan vektor tanpa menggunakan library atau fungsi yang sudah tersedia.
Transpose Matriks
Misalkan matriks $A=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\ddots&\ddots&\vdots \\a_{m,1}&a_{m,2}&\cdots&a_{m,n}\end{bmatrix}$
Transpose dari matriks $A$ adalah $A^T=\begin{bmatrix}a_{1,1}&a_{2,1}&\cdots&a_{m,1} \\a_{1,2}&a_{2,2}&\cdots&a_{m,2} \\\vdots&\ddots&\ddots&\vdots \\a_{1,n}&b_{2,n}&\cdots&a_{n,m}\end{bmatrix}$,
atau $B=\begin{bmatrix}b_{1,1}&b_{1,2}&\cdots&b_{1,m} \\b_{2,1}&b_{2,2}&\cdots&b_{2,m} \\\vdots&\ddots&\ddots&\vdots \\b_{n,1}&b_{n,2}&\cdots&b_{n,m}\end{bmatrix}$ , untuk setiap $i\in\{1,2,...,m\}$ dan $j\in\{1,2,...,n\}$ berlaku $b_{j,i}=a_{i,j}$
Algoritma Membuat Matriks Transpose
- Deskripsi : Membuat Matriks Transpose
- Masukkan : masukkan ukuran matriks (m,n), atau masukkan matriksnya
- Keluaran : transpose dari matriks yang diberikan
- Langkah-langkah :
- masukkan ukuran matriks (m,n)
- masukkan elemen-elemen matriks A, atau buat secara random
- buat matriks B dengan ukuran (n,m), berikan elemen matriksnya 0, hanya untuk sementara
- Untuk setiap i pada {1,2,3,...,m}
- untuk setiap j pada {1,2,3,...,n} *b[j][i]=a[i][j]
- Keluarkan hasil
- print("Transpose dari matriks A adalah",B)
index perlu disesuaikan apabila program menggunakan python, karena index python mulai dari 0
In [ ]:
import numpy as np import random print("Program mencari nilai mutlak terbesar dari elemen matriks beserta indexnya") print("Masukkan ukuran baris matriks A, m=") ; m=int(input()) print("Masukkan ukuran kolom matriks A, n=") ; n=int(input()) random.seed(10) A = np.array([[random.randrange(-100, 100, 1) for j in range(n)] for i in range(m)]) print("Matriks A=") ; print(A) B = np.array([[0 for i in range(m)] for j in range(n)]) for i in range(m): for j in range(n): B[j][i]=A[i][j] print("Transpose dari matriks A =") ; print(B)
Program mencari nilai mutlak terbesar dari elemen matriks beserta indexnya Masukkan ukuran baris matriks A, m= 4 Masukkan ukuran kolom matriks A, n= 6 Matriks A= [[ 46 -92 9 23 47 -97] [-48 18 25 -29 67 -59] [-92 33 25 -17 -81 -37] [ 90 -8 -89 7 -65 54]] Transpose dari matriks A = [[ 46 -48 -92 90] [-92 18 33 -8] [ 9 25 25 -89] [ 23 -29 -17 7] [ 47 67 -81 -65] [-97 -59 -37 54]]
Perkalian Matriks/Vektor
Misalkan matriks $A=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\ddots&\ddots&\vdots \\a_{m,1}&a_{m,2}&\cdots&a_{m,n}\end{bmatrix}$
Misalkan matriks $B=\begin{bmatrix}b_{1,1}&a_{1,2}&\cdots&a_{1,r} \\a_{2,1}&a_{2,2}&\cdots&a_{2,r} \\\vdots&\ddots&\ddots&\vdots \\a_{n,1}&a_{n,2}&\cdots&a_{n,r}\end{bmatrix}$
Perkalian matriks $\displaystyle A_{m\times n}\times B_{n\times r}=\begin{bmatrix}\sum_{j=1}^n a_{1,j}b_{j,1}&\sum_{j=1}^n a_{1,j}b_{j,2}&\cdots&\sum_{j=1}^n a_{1,j}b_{j,r} \\\sum_{j=1}^n a_{2,j}b_{j,1}&\sum_{j=1}^n a_{2,j}b_{j,2}&\cdots&\sum_{j=1}^n a_{2,j}b_{j,r} \\\vdots&\ddots&\ddots&\vdots \\\sum_{j=1}^n a_{m,j}b_{j,1}&\sum_{j=1}^n a_{m,j}b_{j,2}&\cdots&\sum_{j=1}^n a_{m,j}b_{j,r}\end{bmatrix}$
Algoritma Perkalian Matriks
- Deskripsi : Perkalian 2 buah Matriks
- Masukkan :
- masukkan ukuran matriks A (m,n), atau masukkan matriksnya
- masukkan ukuran matriks B (p,q), atau masukkan matriksnya
- Keluaran : hasil kali matriks A*B, (jika bisa dikalikan)
- Langkah-langkah :
- masukkan ukuran matriks A (m,n)
- masukkan elemen-elemen matriks A, atau buat secara random
- masukkan ukuran matriks B (p,q)
- masukkan elemen-elemen matriks B, atau buat secara random
- jika n=p
- Buat matriks penyimpanan C berukuran (m,r)
- untuk setiap i pada {1,2,...,m}
- untuk setiap j pada {1,2,...,r}
- sum=0 #variabel tempat penyimpanan jumlah
- untuk setiap k pada {1,2,...,j}
- sum=sum+A[i][k]*B[k][j]
- untuk setiap j pada {1,2,...,r}
- keluarkan hasilnya
- jika tidak/else (otomatis n tidak sama dengan p)
- beri keterangan bahwa matriks A dan B tidak bisa dikalikan
index perlu disesuaikan apabila program menggunakan python, karena index python mulai dari 0
In [ ]:
import numpy as np import random random.seed(10) print("Program mengalikan matriks A dan B") print("Masukkan ukuran baris matriks A, m=") ; m=int(input()) print("Masukkan ukuran kolom matriks A, n=") ; n=int(input()) A = np.array([[random.randrange(-100, 100, 1) for j in range(n)] for i in range(m)]) print("Matriks A=") ; print(A) print("Masukkan ukuran baris matriks B, p=") ; p=int(input()) print("Masukkan ukuran kolom matriks B, q=") ; q=int(input()) B = np.array([[random.randrange(-100, 100, 1) for j in range(q)] for i in range(p)]) print("Matriks B=") ; print(B) if n==p: C=np.array([[0 for j in range(q)] for i in range(m)]) for i in range(m): for j in range(q): sum=0 for k in range(n): sum=sum+A[i][k]*B[k][j] C[i][j]=sum print("Hasil kali, A*B=C=") print(C) else: print("A tidak bisa dikalikan dengan B, karena ukuran kolom A tidak sama dengan ukuran baris B")
Program mengalikan matriks A dan B Masukkan ukuran baris matriks A, m= 2 Masukkan ukuran kolom matriks A, n= 3 Matriks A= [[ 46 -92 9] [ 23 47 -97]] Masukkan ukuran baris matriks B, p= 3 Masukkan ukuran kolom matriks B, q= 4 Matriks B= [[-48 18 25 -29] [ 67 -59 -92 33] [ 25 -17 -81 -37]] Hasil kali, A*B=C= [[-8147 6103 8885 -4703] [ -380 -710 4108 4473]]
Elemen Terbesar Matriks
Misalkan matriks $A=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\ddots&\ddots&\vdots \\a_{m,1}&a_{m,2}&\cdots&a_{m,n}\end{bmatrix}$
Carilah nilai mutlak terbesar dari elemen matriks tersebut!
Algoritma mencari nilai mutlak terbesar dari elemen matriks beserta indexnya
- Deskripsi : Algoritma mencari nilai mutlak terbesar dari elemen matriks
- Masukkan : masukkan ukuran matriks (m,n), atau masukkan matriksnya
- Keluaran : nilai mutlak terbesar dari elemen matriks
- Langkah-langkah :
- masukkan ukuran matriks (m,n)
- masukkan elemen-elemen matriks, atau buat secara random
- baris=1
- kolom=1
- Misalkan max=a[baris][kolom]
- Untuk setiap i pada {1,2,3,...,m}
- untuk setiap j pada {1,2,3,...,n}
- jika abs(a[i][j])>max
- max=abs(a[i][j])
- baris=i
- kolom=j
- Keluarkan hasil
- print("Nilai mutlak terbesar dari elemen matriks A adalah A[",baris,",kolom,"]=",max)
index perlu disesuaikan apabila program menggunakan python, karena index python mulai dari 0
In [1]:
def cari_max(inputmatriks): baris=0 kolom=0 max=inputmatriks[baris][kolom] for i in range(m): for j in range(n): if abs(inputmatriks[i][j])>max: baris=i kolom=j max=abs(inputmatriks[baris][kolom]) return max,baris,kolom
In [2]:
import numpy as np import random print("Program mencari nilai mutlak terbesar dari elemen matriks beserta indexnya") print("Masukkan ukuran baris matriks A, m=") ; m=int(input()) print("Masukkan ukuran kolom matriks A, n=") ; n=int(input()) random.seed(10) A = np.array([[random.randrange(-100, 100, 1) for j in range(n)] for i in range(m)]) print("Matriks A=") ; print(A) x=cari_max(A) print("Nilai mutlak terbesar dari elemen matriks A adalah |A[",x[1]+1,",",x[2]+1,"]|=",x[0])
Program mencari nilai mutlak terbesar dari elemen matriks beserta indexnya Masukkan ukuran baris matriks A, m= 3 Masukkan ukuran kolom matriks A, n= 5 Matriks A= [[ 46 -92 9 23 47] [-97 -48 18 25 -29] [ 67 -59 -92 33 25]] Nilai mutlak terbesar dari elemen matriks A adalah |A[ 2 , 1 ]|= 97
Mengubah Matriks Menjadi Vektor
Misalkan matriks $A=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\ddots&\ddots&\vdots \\a_{m,1}&a_{m,2}&\cdots&a_{m,n}\end{bmatrix}$
Misalkan $A^j$ merupakan vektor-vektor kolom dari $A$, dengan $j\in\{1,2,...,n\}$
Vektor hasil transformasinya adalah $u=\begin{bmatrix}A^1\\A^2\\\vdots\\A^n\end{bmatrix}$ atau $u=\begin{bmatrix}a_{1,1}\\a_{1,2}\\\vdots\\a_{1,n} \\a_{2,1}\\a_{2,2}\\\vdots\\a_{2,n} \\\vdots \\a_{m,1}\\a_{m,2}\\\vdots\\a_{m,n}\end{bmatrix}$
In [ ]:
import numpy as np import random random.seed(10) print("Program Transformasi Matriks menjadi Vektor") print("Masukkan ukuran baris matriks A, m=") ; m=int(input()) print("Masukkan ukuran kolom matriks A, n=") ; n=int(input()) A = np.array([[random.randrange(-100, 100, 1) for j in range(n)] for i in range(m)]) print("Matriks A=") ; print(A) u=np.array([0 for i in range(m*n)]) for j in range(n): for i in range(m): u[j*i+i]=A[i][j] print("Vektor u=",u) print("Keterangan : tampilan vektor pada python selalu ditulis menyamping") print("Jika ingin dituliskan ke bawah, maka buat vektor u sebagai matriks berukuran (m*n,1)") u=np.array([[0] for i in range(m*n)]) for j in range(n): for i in range(m): u[j*i+i,0]=A[i][j] print("Vektor u=") ; print(u)
Program Transformasi Matriks menjadi Vektor Masukkan ukuran baris matriks A, m= 2 Masukkan ukuran kolom matriks A, n= 3 Matriks A= [[ 46 -92 9] [ 23 47 -97]] Vektor u= [ 9 23 47 -97 0 0] Keterangan, tampilan vektor pada python selalu ditulis menyamping Jika ingin dituliskan ke bawah, maka buat vektor u sebagai matriks berukuran (m*n,1) Vektor u= [[ 9] [ 23] [ 47] [-97] [ 0] [ 0]]
Membuat Submatriks $\frac{1}{4}$ Matriks Semula
Misalkan matriks $A=\begin{bmatrix}a_{1,1}&a_{1,2}&a_{1,3}&a_{1,4}&\cdots&a_{1,n-1}&a_{1,n} \\a_{2,1}&a_{2,2}&a_{2,3}&a_{2,4}&\cdots&a_{2,n-1}&a_{2,n} \\\vdots&\vdots&\vdots&\vdots&\ddots&\vdots&\vdots \\a_{m-1,1}&a_{m-1,2}&a_{m-1,3}&a_{m-1,4}&\cdots&a_{m-1,n-1}&a_{m-1,n} \\a_{m,1}&a_{m,2}&a_{m,3}&a_{m,4}&\cdots&a_{m,n-1}&a_{m,n}\end{bmatrix}$, dengan $m,n$ adalah bilangan genap
Sajikan matriks A, sebagai berikut $A=\begin{bmatrix}\begin{bmatrix}a_{1,1}&a_{1,2}\\a_{2,1}&a_{2,2}\end{bmatrix}&\begin{bmatrix}a_{1,3}&a_{1,4}\\a_{2,3}&a_{2,4}\end{bmatrix}&\cdots&\begin{bmatrix}a_{1,n-1}&a_{1,n}\\a_{2,n-1}&a_{2,n}\end{bmatrix} \\\vdots&\vdots&\ddots&\vdots& \\\begin{bmatrix}a_{m-1,1}&a_{m-1,2}\\a_{m,1}&a_{m,2}\end{bmatrix}&\begin{bmatrix}a_{m-1,3}&a_{m-1,4}\\a_{m,3}&a_{m,4}\end{bmatrix}&\cdots&\begin{bmatrix}a_{m-1,n-1}&a_{m-1,n}\\a_{m,n-1}&a_{m,n}\end{bmatrix} \end{bmatrix}$
Terdapat beberapa cara membuat submatriks yang ukurannya $\frac{1}{4}$ ukuran matriks A. Misalkan dibuat matriks $B$, dengan ketentuan elemen-elemen matriks $B$ sebagai berikut :