Anda di halaman 1dari 13

Laporan Praktikum

Komputasi Numerik

AP - 04
Nilai dan Vektor Eigen
Nama : Kevin Bazli Santoso
NPM : 140310220033
Hari/Tanggal : Jumat/30 maret 2023
Waktu : 07:30 - 16:30
Asisten : Azhar Aiman Dzulfiqar

LABORATORIUM KOMPUTASI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
2023
LEMBAR PENGESAHAN

KN 04
Nilai dan Vektor Eigen

Nama : Kevin Bazli Santoso


NPM : 140310220033
Hari / Tanggal : Jumat/30 maret 2023
Waktu / Sesi : 07:30 - 16:30
Asisten : Azhar Aiman Dzulfiqar

Pretest Laporan Akhir

Jatinangor, Tanggal Bulan 2022


Asisten

( )
1. Tujuan Mahasiswa
Diharapkan mampu menghitung nilai dan vektor eigen dari suatu matriks
bujursangkar menggunakan metode pangkat (Power Method) dan metode pangkat
inversi (Invers Power Method).
2. Percobaan
Buatlah program dengan menggunakan bahasa Python untuk menentukan nilai dan
vektor eigen menggunakan metode pangkat serta metode pangkat inversi untuk
matriksmatriks berikut:
4 1 0
2.1. 𝐴 = 0 2 1
0 1 −1

2.1.1. Listing Program


• Metode Pangkat
import numpy as np

#metode Pangkat (Power)


A = np.array([[4,1,0],[0,2,1],[0,1,-1]])
x = np.array([[1],[1],[1]])
E = 1
eig0 = 1
e = float(input('masukan niali toleransi : '))
i = 0

print('iterasi \t\t\t nilai vektor')


while E>e:
y = A.dot(x)
eig1 = abs(max(y))
x = y/eig1
E = abs((eig1 - eig0)/eig1)
eig0 = eig1
i+=1
print('%.0f \t\t\t\t ' %i, eig1)

print('nilai dari vektor eigen %.8f' %eig1)


print('nilai dari matriks eigen \n', x)
• Metode Pangkat Inversi
#metode Pangkat Inversi (Power)
A = np.array([[4,1,0],[0,2,1],[0,1,-1]])
x = np.array([[1],[1],[1]])
B = np.linalg.inv(A)
E = 1
eig0 = 1
e = float(input('masukan niali toleransi : '))
i = 0

print('iterasi \t\t\t nilai vektor')


while E>e:
y = B.dot(x)
eig1 = abs(max(y))
x = y/eig1
E = abs((eig1 - eig0)/eig1)
eig0 = eig1
i+=1
print('%.0f \t\t\t\t ' %i, eig1)

eig = 1/eig1
print('nilai dari vektor eigen %.8f' %eig)
print('nilai dari matriks eigen \n', x)
2.1.2. Tampilan Program
• Metode Power

• Metode Power Invers

3 −1 0
2.2. 𝐴 = −2 4 −3
0 −1 1
2.2.1. Listing Program
• Metode Power
#metode Pangkat (Power)
A = np.array([[3,-1,0],[-2,4,-3],[0,-1,1]])
x = np.array([[1],[1],[1]])
E = 1
eig0 = 1
e = float(input('masukan nilai toleransi : '))
i = 0

print('iterasi \t\t\t nilai eigen')


while E>e:
y = A.dot(x)
eig1 = abs(max(y))
x = y/eig1
E = abs((eig1 - eig0)/eig1)
eig0 = eig1
i+=1
print('%.0f \t\t\t\t ' %i, eig1)

print('nilai eigen %.8f' %eig1)


print('nilai dari matriks eigen \n', x)

• Metode Power Invers


#metode Pangkat Inversi (Power)
A = np.array([[3,-1,0],[-2,4,-3],[0,-1,1]])
x = np.array([[1],[1],[1]])
B = np.linalg.inv(A)
E = 1
eig0 = 1
e = float(input('masukan nilai toleransi : '))
i = 0

print('iterasi \t\t\t nilai eigen')


while E>e:
y = B.dot(x)
eig1 = abs(max(y))
x = y/eig1
E = abs((eig1 - eig0)/eig1)
eig0 = eig1
i+=1
print('%.0f \t\t\t\t ' %i, eig1)

eig = 1/eig1
print('nilai eigen %.8f' %eig)
print('nilai dari matriks eigen \n', x)
2.2.2. Tampilan Program
• Metode Power
• Metode Power Invers

𝟐𝟎 −𝟒 𝟖
2.3. 𝑨 = −𝟒𝟎 𝟖 −𝟐𝟎
−𝟔𝟎 𝟏𝟐 −𝟐𝟔

2.3.1. Listing Program

2.3.2. Tampilan Program


• Metode Power
• Metode Power Invers

2.3.3. Analisa Program


• Metode Iterasi Power
Program yang dipakai untuk percobaan kali ini adalah implementasi
metode iterasi power untuk mencari nilai eigen dan vektor eigen
suatu matriks. Metode power merupakan salah satu metode numerik
yang digunakan untuk menyelesaikan masalah nilai eigen dan vektor
eigen pada matriks.

Dalam program ini, matriks A dimulai dengan pemanggilan modul


NumPy dengan nilai tertera pada 2.1, 2.2, 2.3, sedangkan vektor
awal x diberikan nilai vektor [1 1 1]. Nilai toleransi e dimasukkan
oleh user melalui input. Variabel E dan eig0 digunakan untuk
memperkirakan kesalahan relatif dari nilai eigen yang ditemukan
pada iterasi sebelumnya dan nilai eigen yang ditemukan pada iterasi
saat ini. Nilai E diberi nilai awal 1, sehingga iterasi pertama akan
selalu dilakukan.

Selama iterasi, matriks A dikalikan dengan vektor x untuk


mendapatkan vektor baru yaitu y. Nilai absolut maksimum dari y
digunakan untuk memperkirakan nilai eigen terbesar eig1, dan
vektor x diperbarui dengan y yang dinormalisasi dengan eig1.
Kesalahan relatif dari nilai eigen eig1 dibandingkan dengan nilai
eigen pada iterasi sebelumnya eig0 digunakan untuk menghentikan
iterasi saat kesalahan relatif telah lebih kecil dari nilai toleransi yang
dimasukkan. Hasil program akan mencetak nilai eigen dan vektor
eigen dari matriks A yang ditemukan menggunakan metode iterasi
power

Dalam analisis, nilai eigen adalah bilangan skalar yang


mendeskripsikan sifat transformasi linear yang diberikan oleh
matriks A. Nilai eigen ditemukan dengan mencari bilangan skalar
eig1 yang ketika matriks A dikalikan dengan vektor eigen, akan
menghasilkan vektor eigen yang sama dengan vektor eigen awal
dikalikan dengan bilangan skalar eig1. Vektor eigen adalah vektor
non-nol yang berada dalam ruang eigen yang sesuai dengan nilai
eigen tertentu. Dalam program ini, vektor eigen dihitung melalui
iterasi kuasa, yang memungkinkan kita untuk menghitung vektor
eigen terkait dengan nilai eigen terbesar.

• Metode Iterasi Power Invers


Program di atas merupakan implementasi dari metode iterasi power
untuk mencari nilai eigen terbesar dan vektor eigen yang sesuai dari
suatu matriks A. Metode power inversi bekerja dengan memulai dari
suatu vektor awal x, kemudian dilakukan perkalian matriks dengan
vektor tersebut secara berulang-ulang sampai diperoleh konvergensi
terhadap nilai eigen terbesar. Dalam program tersebut, matriks A
adalah matriks yang akan dicari nilai eigen dan vektor eigen-nya.
Kemudian, vektor awal x diberikan nilai [1, 1, 1].

Dalam setiap iterasi, vektor x akan dikalikan dengan invers matriks


dari A, kemudian akan dicari nilai absolut terbesar dari hasil
perkalian tersebut sebagai nilai eigen yang diperkirakan. Vektor x
kemudian diupdate dengan hasil perkalian tersebut dibagi dengan
nilai eigen yang baru diperoleh. Selanjutnya, diperiksa apakah
terdapat konvergensi dengan membandingkan nilai eigen yang baru
dengan nilai eigen sebelumnya. Jika nilai toleransi telah lewat, maka
nilai eigen terbesar dan vektor eigen yang sesuai akan dicetak.

Metode power inversi merupakan salah satu metode numerik yang


umum digunakan untuk mencari nilai eigen terbesar dari suatu
matriks. Metode ini sangat efektif untuk matriks yang bersifat sparse
(tidak banyak memiliki elemen nol) dan memiliki nilai eigen
terbesar yang jauh lebih besar daripada nilai eigen terkecil. Pada
percobaan 3 nilai eigen tidak dapat ditemukan dikarenakan matriks
tidak memiliki determinan

3. Tugas Akhir
3.1. Buatlah program dengan menggunakan bahasa Python untuk mencari
invers dari sebuah matriks 3 × 3
3.1.1. Listing Program
def gauss_jordan_inverse(matrix):

identity = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]


m = [row[:] for row in matrix]
n = len(m)

for i in range(n):
max_row = i
for j in range(i+1, n):
if abs(m[j][i]) > abs(m[max_row][i]):
max_row = j
m[i], m[max_row] = m[max_row], m[i]
identity[i], identity[max_row] =
identity[max_row], identity[i]
for j in range(i+1, n):
c = -m[j][i] / m[i][i]
for k in range(i, n):
m[j][k] += c * m[i][k]
for k in range(n):
identity[j][k] += c * identity[i][k]
for i in range(n-1, -1, -1):
for j in range(i-1, -1, -1):
c = -m[j][i] / m[i][i]
for k in range(n):
identity[j][k] += c * identity[i][k]
for i in range(n):
c = m[i][i]
for j in range(n):
identity[i][j] /= c

return identity

matrix = [[4,1,0],[0,2,1],[0,1,-1]]
inverse = gauss_jordan_inverse(matrix)
print(inverse)
3.1.2. Tampilan Program

3.2. Hitung nilai dan vektor eigen dari semua matriks yang terdapat pada
bagian Percobaan secara analitik menggunakan bantuan persamaan
karakteristik.
4 1 0
3.2.1. 𝐴 = 0 2 1
0 1 −1
1 0 0
I =0 1 0
0 0 1
4 1 0 𝜆 0 0 4-𝜆 1 0
(A - 𝜆I ) = 0 2 1 - 0 𝜆 0 = 0 2-𝜆 1
0 1 −1 0 0 𝜆 0 1 -1-𝜆

4-𝜆 1 0
| A - 𝜆I| = 0 2-𝜆 1 =0
0 1 -1-𝜆

-𝜆3 + 5𝑥 2 − 𝜆 − 12

1+√13 1-√13
𝜆1 = -4 , 𝜆2 = , 𝜆_3 =
2 2

3 −1 0
3.2.2. 𝐴 = −2 4 −3
0 −1 1

1 0 0
I =0 1 0
0 0 1

3 −1 0 𝜆 0 0 3-𝜆 -1 0
(A - 𝜆I ) = −2 4 −3 - 0 𝜆 0 = -2 4-𝜆 -3
0 −1 1 0 0 𝜆 0 -1 1-𝜆

3-𝜆 -1 0
| A - 𝜆I| = -2 4-𝜆 -3 = 0
0 -1 1-𝜆
−𝜆3 + 8𝜆2 − 14𝜆 + 1

3.3. Bagaimana cara menentukan semua nilai eigen dari matriks A yang
berukuran 3 × 3? (Sebagai catatan: metode pangkat hanya
menghitung nilai eigen terbesar sedangkan metode pangkat inversi
hanya menghitung nilai eigen terkecil. Bagaimana jika kita ingin
menghitung nilai eigen diantara nilai eigen terbesar dan terkecil?)
Buatlah program dengan menggunakan bahasa Python untuk
menghitung semua nilai eigen dari matriks A yang berukuran 3 × 3.
(untuk mengujinya bisa menggunakan Matriks dari percobaan di
atas)
3.3.1. Untuk mendapatkan semua nilai eigen pada matriks 3x3 dapat
menggunakan metode karakterisitik yaitu mencari akar-akar
persamaan karakteristik dari matriks A. Persamaan karakteristik dari
matriks A dinyatakan sebagai det(A-λI) = 0, di mana λ adalah nilai
eigen yang ingin dicari, dan I adalah matriks identitas. Secara umum,
persamaan karakteristik untuk matriks 3x3 dirumuskan menjadi:
= 𝜆3 − 𝑡𝑟(𝐴)𝜆2 + (𝑑𝑒𝑡𝐴)𝜆 − (𝑡𝑟𝑎𝑐𝑒 𝑜𝑓𝐴′ 𝑠 𝑜𝑓 matrix cofactor)
Akar dari persamaan inilah yang menjadi nilai eigen
3.3.1.1. Listing Program
#metode karakteristik
A = np.array([[4,1,0],[0,2,1],[0,1,-1]])

trace_A = np.trace(A)
det_A = np.linalg.det(A)

A_cf = np.zeros((3, 3))


for i in range(3):
for j in range(3):
A_cf[i][j] = (-1)**(i+j) *
np.linalg.det(np.delete(np.delete(A, i, 0), j,
1))
trace_A_cf = np.trace(A_cf)
eigenvalues = np.roots([1, -trace_A, det_A, -
trace_A_cf])

print("Nilai eigen dari matriks A adalah:",


eigenvalues)
3.3.1.2. Tampilan Program

4. Kesimpulan
Kesimpulan yang dapat diambil dari praktikum kali ini adalah sebagai berikut
4.1. Metode Pangkat (power) dapat digunakan untuk mendapat nilai eigen
terbesar suatu matriks
4.2. Metode Invers Pangkat (invers power) dapat digunakan untuk mendapat
nilai eigen terkecil suatu matriks
4.3. Menggunakan metode karakteristik kita dapat menemukan semua nilai
eigen

Anda mungkin juga menyukai