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}$, Algoritma Membuat Matriks Transpose
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
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
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 : |