Kode Python Metode LU Decomposition
Kode Python Metode LU Decomposition
Tugas 2
M UHAMMAD
ADHIJAY A SAPUTRA-2211100113
[MUHAMMAD ADHIJAYA S.] Tugas 2 A. Sekilas Tentang Metode Iterasi LU Decomposition Merupakan metode pemfaktoran yang memodifikasi dari metode eliminasi-Gauss. Pada metode LU-decomposition, matrik A difaktorkan menjadi matrik L dan matrik U, dimana dimensi atau ukuran matrik L dan U harus sama dengan dimensi matrik A. matriks L dan U harus memenuhi = . Langkah penyelesaian system persamaan linear dengan LU Decomposition diawali dengan menghadirkan vector dimana = . vector sendiri didapat dari = . Secara garis besar, langkah-langkah penyelesaiannya ada 3, yaitu: 1. Membentuk Matriks L dan matriks U dari matriks A sehingga memenuhi persamaan = . 2. Melakukan proses subtitusi maju yaitu memperoleh vector dari = . 3. Melakukan proses subtitusi mundur yaitu memperoleh nilai x yang dicari melalui persamaan = . B. Metode LU-Decomposition untuk mencari matriks invers Sebagaimana metode penyelesaian persamaan linear yang lain seperti eliminasi-Gauss dan lain-lain, LU-Decomposition juga dapat digunakan untuk mencari matriks invers karena kita tahu bahwa: = 1 = 1 maka, = 1 Sehingga untuk mendapatkan matriks invers, kita hanya perlu mengeksekusi matriks A dengan metode LU-Decomposition biasa namun matriks B nya adalah matriks identitas. C. Algoritma Program 1. Melakukan inisisasi matriks A dan menginisiasi matriks identitas B sesuai dengan dimensi matriks A. 2. Melakukan perombakan per kolom untuk matriks B menjadi B0,B1,.Bn. 3. Membuat pengulangan i dari 0 sampai n untuk inisiasi b=bi 4. Membuat matriks L ( terdapat proses pivot dan triangularisasi ). 5. Membuat matriks U. 6. Melakukan proses subtitusi maju untuk mendapatkan vector dengan persamaan = .
Sepuluh Nopember Institute of Technology |Metode Numerik Kelas C Bapak Reza Fuad 2
[MUHAMMAD ADHIJAYA S.] Tugas 2 7. Melakukan subtitusi mundur untuk mendapatkan vector ( matrikss invers ) dengan persamaan = . 8. Print nilai x yang didapatkan menjadi matriks 1X5. 9. Kembali ke langkah 3 dengan b=bi+1. D. Kode Program from numpy import array,zeros #Langkah 1 : inisialisasi matriks A = array([[4.,-2.,1.,3.,-2.],\ [-1.,2.,3.,-4.,5.],\ [1.,-2.,4.,-2.,1.],\ [5.,-4.,4.,2.,-1.],\ [-2.,3.,1.,-2.,4.]]) print A b = array([[1.,0.,0.,0.,0.],\ [0.,1.,0.,0.,0.],\ [0.,0.,1.,0.,0.],\ [0.,0.,0.,1.,0.],\ [0.,0.,0.,0.,1.]]) #Langkah 2 : memecah matriks b menjadi b1,b2 dan b3 n=len(A) bl=zeros((n,1)) #Langkah 3 : melakukan pengulangan for w in range(n): for q in range(n): bl[q][0]=b[q][w] A = array([[4.,-2.,1.,3.,-2.],\ [-1.,2.,3.,-4.,5.],\ [1.,-2.,4.,-2.,1.],\ [5.,-4.,4.,2.,-1.],\ [-2.,3.,1.,-2.,4.]]) #Langkah 4 : memulai matriks L L=zeros((n,n)) for i in range(0,n): L[i][i]=1 #proses triangularisasi for k in range(0,n-1): #memulai pivot if A[k][k]==0:
Sepuluh Nopember Institute of Technology |Metode Numerik Kelas C Bapak Reza Fuad 3
[MUHAMMAD ADHIJAYA S.] Tugas 2 for s in range(0,n): v=A[k][s] u=A[k+1][s] A[k][s]=u A[k+1][s]=v #proses pivot selesai for j in range(k+1,n): m=A[j][k]/A[k][k] L[j][k]=m # nilai m disimpan di matrik L for i in range(0,n): A[j][i]=A[j][i]-m*A[k][i] #matriks L selesai #Langkah 5 : memulai matriks U U=zeros((n,n)) for i in range(0,n): for j in range(0,n): U[i][j]=A[i][j] #matriks U selesai #Langkah 6 : proses subtitusi maju (LY=B) y=zeros((n,1)) y[0][0]=bl[0][0]/L[0][0] for j in range(1,n): S=0 for i in range(0,j): S=S+y[i][0]*L[j][i] y[j][0]=bl[j][0]-S #Langkah 7 : proses subtitusi mundur (UX=Y) x=zeros((1,n)) x[0][n-1]=y[n-1][0]/U[n-1][n-1] for j in range(n-2,-1,-1): S=0 for i in range(j+1,n): S=S+U[j][i]*x[0][i] x[0][j]=(y[j][0]-S)/U[j][j] #langkah 8 : mencetak nilai x print x
Sepuluh Nopember Institute of Technology |Metode Numerik Kelas C Bapak Reza Fuad
Penjelasan : Pada program yang saya buat, terdapat tambahan modul untuk python yaitu NumPy berisi persamaan-persamaan dan fungsi-fungsi numeric yang biasa digunakan dalam perhitungan. Dalam hal ini, penulis menggunakannya untuk memudahkan dalam membuat matriks saja dengan meng-import array dan zeros. 4 1 Matriks A yang akan dicari inversnya adalah = 1 5 2 1 0 0 1 kemudian matriks identitas B di inisiasikan yaitu = 0 0 0 0 0 0 2 1 3 2 2 3 4 5 2 3 2 1 4 4 2 1 4 3 1 2 0 0 0 0 0 0 1 0 0 setelah 0 1 0 0 0 1 1 0 itu matriks B akan dipecah per kolomnya menjadi 0 = 0 , kemudian 0 0 dicari matriks L dan matriks U nya. Setelah itu dilakukan proses subtitusi maju dan subtitusi mundur sehingga didapatkan nilai matriks x kolom pertama yaitu: 0.44444444 1.33333333 0.66666667 0.33333333 1.11111111 Kemudian diulangi langkah tersebut dengan nilai B yang lain yaitu 0 0 0 0 1 0 0 0 1 = 0 , 2 = 1 , 3 = 0 , 4 = 0 0 0 1 0 0 0 0 1
E. Tampilan Hasil Running Program Setelah kode program diatas di running pada python, maka hasil yang keluar pada python shell adalah sebagai berikut :
Sepuluh Nopember Institute of Technology |Metode Numerik Kelas C Bapak Reza Fuad 5
Penjelasan : Pada gambar tersebut tampak ada dua buah matriks 5X5. Matriks yang pertama adalah matriks A dan matriks yang kedua adalah matriks inverse dari A (1 ). Catatan`: Dimensi matriks A dapat diubah sesuai keinginan menjadi nXn dengan syarat matriks B juga harus diubah dimensinya menjadi nXn.
~TERIMA KASIH~
Sepuluh Nopember Institute of Technology |Metode Numerik Kelas C Bapak Reza Fuad