komputasi aljabar linear
##apa itu komputasi aljabar linear?
komputasi aljabar linear adalah cabang ilmu yang berfokus pada bagaimana algoritma matematika dari aljabar linear diterapkan secara efisien dan akurat pada komputer.
Jika aljabar linear biasa berfokus pada teori (seperti membuktikan sifat-sifat matriks), versi komputasi ini lebih peduli pada “bagaimana cara menghitungnya jika datanya sangat besar?”
Berikut adalah aspek-utama yang membentuk bidang ini:
Operasi Matriks dan VektorIni adalah fondasi utamanya. Komputasi aljabar linear menangani operasi seperti:Perkalian Matriks: Bagaimana mengalikan dua matriks berukuran dengan cepat.Dekomposisi Matriks: Memecah matriks menjadi bagian-bagian yang lebih sederhana (seperti , , atau ) agar sistem persamaan linear lebih mudah diselesaikan.Penyelesaian Sistem Persamaan Linear: Mencari nilai variabel dalam sistem yang melibatkan ribuan hingga jutaan variabel.
Efisiensi dan Skala Data Dalam dunia nyata, kita sering berhadapan dengan Sparse Matrices (matriks yang sebagian besar elemennya adalah nol). Komputasi aljabar linear mencari cara untuk menyimpan dan mengolah matriks ini tanpa membuang-buang memori komputer pada angka nol tersebut.
Stabilitas Numerik Komputer tidak bisa merepresentasikan angka desimal dengan sempurna (ada batasan floating-point). Komputasi aljabar linear mempelajari bagaimana mencegah kesalahan pembulatan kecil menumpuk hingga merusak hasil akhir perhitungan.
Mengapa Ini Penting? Hampir semua teknologi modern bergantung pada bidang ini:
Kecerdasan Buatan (AI) & Machine Learning: Melatih model seperti ChatGPT melibatkan perkalian matriks yang sangat masif.
Grafika Komputer: Menggeser, memutar, atau mengubah ukuran objek dalam game 3D semuanya adalah operasi aljabar linear.
Analisis Data Besar (Big Data): Algoritma seperti PageRank milik Google menggunakan vektor eigen untuk menentukan peringkat situs web.
Simulasi Fisika: Digunakan untuk memprediksi cuaca atau kekuatan struktur bangunan melalui metode elemen hingga.
Contoh Sederhana Jika kamu memiliki 3 persamaan dengan 3 variabel, kamu bisa menyelesaikannya dengan kertas dan pensil. Namun, jika kamu memiliki 1 juta persamaan, kamu membutuhkan algoritma dari komputasi aljabar linear agar komputer bisa menyelesaikannya dalam hitungan detik, bukan tahun.
#tugas : nstall jupyter book
==google.colab== apa yang di maksud persamaan linear
buat dua persaman linear dengan dua variabel(gambarnya pakai geogebra)¶
apa yang dimaksud dengan persamaan linear¶
jawab¶
Persamaan linear adalah sebuah persamaan aljabar di mana setiap sukunya mengandung konstanta atau perkalian konstanta dengan variabel berpangkat satu.Ciri khasnya:Jika digambarkan dalam koordinat Kartesius, hasilnya akan membentuk garis lurus.Bentuk umum untuk satu variabel: Bentuk umum untuk dua variabel: Dalam dunia IT, persamaan linear adalah fondasi dari algoritma Machine Learning (seperti Regresi Linear) yang digunakan untuk memprediksi tren data.
tugas :¶
buat dua persamaan linear dengan 2 variable ( gambarnya pakai geogebra )¶
jawab :¶
Contoh Dua Persamaan Linear dengan Dua Variabel Persamaan 1: Persamaan 2:

analisis ahir¶
berdasarkan hasil tersebut :
Persamaan 1 (Garis Hijau): Melalui titik A(5,0) dan B(0,5). Persamaannya adalah .
Persamaan 2 (Garis Biru): Melalui titik C(2,0) dan naik ke atas. Persamaannya adalah .
Solusi (Titik D): Terletak pada koordinat (3, 2) Artinya, jika dan dimasukkan ke dalam kedua persamaan, hasilnya akan benar. (Benar) (Benar)
penjelasan code :¶
menginmport lybrary¶
import numpy as np: Memanggil library NumPy untuk membuat deret angka koordinat.
import matplotlib.pyplot as plt: Memanggil library Matplotlib untuk membuat visualisasi gambar/grafik.
Membuat Data Koordinat (Sumbu X)¶
x = np.linspace(0, 6, 100) Baris ini membuat 100 titik angka dari 0 sampai 6. Ini digunakan sebagai dasar sumbu horizontal agar garis yang digambar nantinya terlihat halus dan tidak patah-patah.
mendefinisikan rumus persamaan¶
y1 = 5 - x y2 = 2 * x - 4
Di sini saya mengubah persamaan linear matematika menjadi bahasa pemrograman : y1 = 5 - x berasal dari persamaan .y2 = 2 * x - 4 berasal dari persamaan .
##menggambar garis plt.plot(x, y1, label=‘x + y = 5’, color=‘green’, linewidth=2) plt.plot(x, y2, label=‘2x - y = 4’, color=‘blue’, linewidth=2)
plt.plot: Perintah untuk menarik garis berdasarkan nilai dan yang sudah kita buat.label: Memberikan nama pada garis agar muncul di keterangan (legend).color: Menentukan warna garis (Hijau dan Biru agar sesuai dengan GeoGebra kamu).
##menandai titik potong solusi
plt.scatter(3, 2, color=‘red’, zorder=5) plt.text(3.2, 2.1, ‘Titik Potong D (3, 2)’, color=‘red’)
plt.scatter(3, 2): Menaruh sebuah titik (dot) tepat di koordinat yang merupakan solusi sistem tersebut.plt.text: Menuliskan teks label di samping titik tersebut agar pembaca tahu itu adalah “Titik Potong D”.
merapikan tampilan grafik¶
plt.axhline(0, color=‘black’) # Garis horizontal sumbu X
plt.axvline(0, color=‘black’) # Garis vertikal sumbu Y
plt.grid(True) # Menampilkan kotak-kotak (grid)
plt.legend() # Menampilkan kotak keterangan label
plt.show() # Perintah terakhir untuk memunculkan gambar
print("halo tes commit")\begin{aligned} x_1 + 2x_2 - x_3 + x_4 + 3x_5 &= 10 2x_1 - x_2 + 3x_3 + 2x_4 - x_5 &= 5
x_1 + x_2 + 2x_3 - x_4 + x_5 &= 3 3x_1 + 2x_2 + x_3 + x_4 + 2x_5 &= 12 x_1 - x_2 + x_3 + 3x_4 - 2x_5 &= 4 \end{aligned}
komputasi aljabar linear¶
UTS Materi - Eliminasi Gausian - Determinan - Adjoin Matrik - Invers Matrik - Sistem Persaman lInier dengan Penyelsain Menggunakan Matrik INversi¶
1. Eliminasi Gaussian (Target: Segitiga Atas)Ini digunakan untuk menyelesaikan Sistem Persamaan Linier.Caranya: Ubah angka-angka di bawah diagonal utama menjadi 0.Hasil Akhir:¶
Matriks yang bentuknya seperti tangga (Eselon Baris). Dari sini kamu bisa dapat nilai dengan substitusi balik.
2. Determinan ()Seperti yang kita bahas tadi, pakai Ekspansi Kofaktor.Rumus Penting:¶
Tandanya selang-seling .
3. Adjoin Matriks (Join Matrix)Adjoin adalah jembatan menuju Invers.Langkah:¶
Cari Kofaktor (25 buah untuk ) Masukkan ke matriks Transpose (Baris jadi kolom).Logika: Adjoin itu seperti “peta kekuatan” setiap posisi angka di dalam matriks.
4. Invers Matriks ():¶
Syarat: Determinan tidak boleh nol. Kalau determinan , artinya matriks tidak punya invers.
5. Penyelesaian SPL dengan InversKalau kamu punya persamaan (A adalah angka, X adalah variabel , B adalah hasil), cara mencarinya adalah:Artinya:¶
Kamu cari dulu Inversnya (pakai cara nomor 4), lalu kalikan dengan angka hasil (B).
1. Eliminasi Gaussian¶
Tujuan: Mengubah matriks menjadi “segitiga atas” (angka di bawah diagonal jadi nol).
Contoh Matriks Augmentasi:
Langkah Penjelasan:¶
Gunakan baris 1 untuk membuat angka di bawahnya jadi 0.Gunakan baris 2 untuk membuat angka di bawahnya jadi 0.Setelah terbentuk tangga (seperti contoh di atas), kamu bisa langsung dapat: , lalu masukkan ke persamaan atasnya untuk cari dan .
2. Determinan Matriks Dosenmu minta rumus . Ini cara nulisnya biar kelihatan kamu paham:¶
Rumus (Ekspansi Kofaktor):
Penjelasan Singkat:¶
Tanda harus selang-seling (). adalah determinan dari sisa angka setelah baris 1 dan kolom 1 dihapus.
3. Adjoin Matriks (Join Matrix)Ini adalah bagian yang paling banyak langkahnya.Contoh & Rumus:¶
Cari Kofaktor:¶
Buat matriks baru di mana setiap titik adalah hasil “tutup baris & kolom”. Jangan lupa tanda “papan catur”-nya:
Transpose: Hasil kofaktor tadi ditukar; Baris jadi Kolom.Rumus:
4. Invers Matriks ()Inilah hasil akhirnya.Rumus:¶
Cara Jawab:“Pertama saya hitung determinannya, lalu saya cari matriks adjoinnya. Terakhir, saya kalikan seper-determinan dengan matriks adjoin tersebut.”¶
5. SPL dengan Invers MatriksJika ada soal:¶
"Selesaikan dan menggunakan Invers."Langkah:Ubah jadi bentuk matriks .Cari (Invers dari angka depan dan ).Rumus Akhir: .
1. Rumus Determinan¶
( atau )Untuk matriks , kita gunakan metode Ekspansi Kofaktor melalui baris pertama.Rumus:
Penjelasan: adalah elemen pada baris pertama. adalah determinan dari Minor, yaitu matriks yang tersisa jika baris ke-1 dan kolom ke- dihapus.Tanda penghubung harus selang-seling: (+) (-) (+) (-) (+).¶
2. Rumus Adjoin¶
()Adjoin didapat dari matriks kofaktor yang di-transpose (tukar baris jadi kolom).
Langkah A:¶
Matriks Kofaktor ()Kita cari 25 nilai kofaktor dengan rumus . Pola tandanya seperti papan catur:
Langkah B:¶
Transpose untuk mendapatkan Adjoin
Artinya, baris pertama dari matriks di atas dijadikan kolom pertama di matriks Adjoin.
Rumus Invers Matriks ()Setelah mendapatkan nilai Determinan dan Matriks Adjoin, kita masukkan ke rumus utama:Rumus:
Contoh & Penjelasan Singkat (Untuk Dosen)Contoh Kasus:Jika kita ingin mencari kofaktor elemen pertama ( atau ), kita “menutup” baris ke-1 dan kolom ke-1:
Penjelasan Logika:Determinan memberikan kita satu angka skalar. Jika angka ini 0, matriks tidak punya invers.Adjoin adalah kumpulan informasi dari sub-sub matriks yang sudah disesuaikan posisinya.Invers adalah hasil pembagian Adjoin dengan Determinan tersebut.
Perintah:¶
Kerjaka soal berikut dengan dan hasilnya di tulis di webstatis dan dikumpulkan di webstatis github¶
Dijelaskan dengan proses-proses untuk mendapatkanya sesuai dengan rumus¶
SOAL.¶
A. Hitunglah determinan matrik berikut dengan menggunakan rumus expansi baris¶
dengan
adalah minior dari matrik A dan
adalah submatrik dengan menghapus baris i dan kolom kolom j dari matrix
dengan
1.¶
2.¶
3.¶
jawab A¶
Penyelesaian Matriks
Kita pilih Ekspansi Baris ke-1 ():
Langkah-langkah:Untuk (Elemen ):
Submatriks Minor Suku pertama:
soal¶
B. Gunakan rumus matriks adjoin untuk menghitung invers dari matriks berikut dengan rumus¶
dan
4.¶
5.¶
6.¶
jawab¶
Perintah:¶
Kerjaka soal berikut dengan dan hasilnya di tulis di webstatis dan dikumpulkan di webstatis github
Dijelaskan dengan proses-proses untuk mendapatkanya sesuai dengan rumus
SOAL.¶
A. Hitunglah determinan matrik berikut dengan menggunakan rumus expansi baris¶
dengan adalah minior dari matrik A dan
adalah submatrik dengan menghapus baris i dan kolom kolom j dari matrix dengan
1.
2.
3.
B. Gunakan rumus matriks adjoin untuk menghitung invers dari matriks berikut dengan rumus¶
dan
4.
5.
6
jawab A¶
1. Penyelesaian Matriks ¶
Matriks awal:
Proses menggunakan ekspansi baris ke-1 ():¶
Langkah 1: Menentukan Submatriks dan Minor Untuk elemen , submatriksnya adalah:
Untuk elemen , submatriksnya adalah:
Langkah 2: Menghitung dengan Rumus
Penyelesaian Matriks Matriks awal:
Proses menggunakan ekspansi baris ke-3 ():
Langkah 1: Menentukan Submatriks dan Minor Karena dan bernilai 0, kita hanya perlu menghitung untuk :
Langkah 2: Menghitung dengan Rumus
Penyelesaian Matriks Matriks awal:
Proses menggunakan ekspansi baris ke-1 ():
Langkah 1: Mencari Minor (Hasil determinan submatriks )
Langkah 2: Substitusi ke Rumus
jawab B¶
Invers Matriks Matriks awal:
Langkah 1: Menghitung Determinan Berdasarkan pengerjaan bagian A, kita sudah mendapatkan:
Langkah 2: Menentukan Matriks Kofaktor dan Adjoin Untuk matriks , .
Maka, matriks Adjoin (transpose dari kofaktor):
Langkah 3: Menghitung Invers
Invers Matriks Matriks awal:
Langkah 1: Menghitung DeterminanBerdasarkan pengerjaan bagian A, kita sudah mendapatkan:
Langkah 2: Menentukan Matriks AdjoinKita hitung kofaktor untuk setiap elemen:
Matriks Adjoin adalah transpose dari matriks kofaktor di atas:
Langkah 3: Menghitung Invers
6. Invers Matriks Matriks awal:
Langkah 1: Menghitung Determinan Berdasarkan pengerjaan bagian A:
Langkah 2: Menentukan Matriks AdjoinKarena matriks ini memiliki pola simetris yang unik, semua minor bernilai 16. Namun, kita harus memperhatikan tanda :
Untuk genap, .
Untuk ganjil, . Namun, khusus untuk elemen diagonal, (berdasarkan perhitungan detail submatriksnya). Setelah dihitung, matriks adjoinnya adalah:
Langkah 3: Menghitung Invers
tugas tranformasi matrik dari pencerminan y¶
import numpy as np
def transformasi_grup(matriks_titik, vektor_translasi):
"""
Menghitung pergeseran untuk banyak titik sekaligus.
"""
# NumPy akan otomatis menambahkan vektor ke setiap baris matriks
return matriks_titik + vektor_translasi
# 1. Definisikan Vektor Pergeseran (Geser 2 ke kanan sesuai gambar)
vektor_T = np.array([2, 0])
# 2. Definisikan Grup Titik Biru Kiri (A, B, C, D)
# Koordinat x dari -4 sampai -3
titik_biru_kiri = np.array([
[-4, 3], # A
[-3, 3], # B
[-4, 2], # C
[-3, 2] # D
])
# 3. Definisikan Grup Titik Biru Kanan (E, G, F, H)
# Koordinat x dari 3 sampai 4
titik_biru_kanan = np.array([
[3, 3], # E
[4, 3], # G
[3, 2], # F
[4, 2] # H
])
# 4. Hitung semua titik merah secara otomatis
titik_merah_kiri = transformasi_grup(titik_biru_kiri, vektor_T)
titik_merah_kanan = transformasi_grup(titik_biru_kanan, vektor_T)
# Output Hasil
print("--- HASIL TRANSFORMASI ---")
print(f"Titik Biru Kiri (-4 s/d -3) menjadi Merah Kiri:\n{titik_merah_kiri}")
print(f"\nTitik Biru Kanan (3 s/d 4) menjadi Merah Kanan:\n{titik_merah_kanan}")--- HASIL TRANSFORMASI ---
Titik Biru Kiri (-4 s/d -3) menjadi Merah Kiri:
[[-3 3]
[-2 3]
[-3 2]
[-2 2]]
Titik Biru Kanan (3 s/d 4) menjadi Merah Kanan:
[[6 3]
[7 3]
[6 2]
[7 2]]
ini adalah link collab¶
analisis dengan gambar¶
import numpy as np
import matplotlib.pyplot as plt
def visualisasi_transformasi_otomatis(titik_kiri_input, vektor_geser):
# 1. Konversi input ke NumPy Array untuk operasi matriks
P_kiri = np.array(titik_kiri_input)
T = np.array(vektor_geser)
# 2. Definisikan Titik Biru Kanan (Referensinya)
P_kanan = np.array([[3, 3], [4, 3], [3, 2], [4, 2]])
# 3. Hitung Titik Merah secara OTOMATIS (P' = P + T)
P_merah_kiri = P_kiri + T
P_merah_kanan = P_kanan + T
# 4. Proses Menggambar dengan Matplotlib
plt.figure(figsize=(10, 6))
# Menggambar Titik
plt.scatter(P_kiri[:,0], P_kiri[:,1], color='blue', s=100, label='Titik Biru (Asal)', edgecolors='black', zorder=5)
plt.scatter(P_kanan[:,0], P_kanan[:,1], color='blue', s=100, edgecolors='black', zorder=5)
plt.scatter(P_merah_kiri[:,0], P_merah_kiri[:,1], color='red', s=100, label='Titik Merah (Hasil)', edgecolors='black', zorder=5)
plt.scatter(P_merah_kanan[:,0], P_merah_kanan[:,1], color='red', s=100, edgecolors='black', zorder=5)
# Pengaturan Canvas
plt.axhline(0, color='black', linewidth=1)
plt.axvline(0, color='black', linewidth=1)
plt.grid(True, which='both', linestyle='--', linewidth=0.5)
plt.xlim(-6, 8)
plt.ylim(-1, 5)
plt.legend()
plt.title(f"Transformasi Matriks Dinamis (Geser x={vektor_geser[0]})")
# --- BAGIAN PERBAIKAN: MEMAKSA SEMUA ANGKA MUNCUL ---
# Tentukan jangkauan yang Anda inginkan
xticks = np.arange(-6, 9, 1) # Membuat urutan dari -6 sampai 8 dengan jarak 1
# Instruksi spesifik ke Matplotlib untuk sumbu X
plt.xticks(xticks)
# ----------------------------------------------------
plt.show()
# --- EKSEKUSI ---
# Input awal yang ingin Anda coba ubah-ubah:
titik_awal = [[-4, 3], [-3, 3], [-4, 2], [-3, 2]]
pergeseran = [2, 0] # Geser x = 2
visualisasi_transformasi_otomatis(titik_awal, pergeseran)
deskripsi / penjelasan transpormasi matrik diatas¶
Analisis Teknis Mekanisme Transformasi Matriks (Translasi)¶
1. Bagaimana Koordinat Bisa Bergeser Secara Akurat?Secara teknis, pergeseran ini bukan sekadar pemindahan visual, melainkan hasil dari operasi Translasi pada ruang vektor 2D. Setiap titik asal yang kita miliki, yaitu matriks , memiliki koordinat yang sudah didefinisikan secara statis di dalam kode. Agar titik tersebut bisa berpindah ke posisi baru (titik merah), kita harus menerapkan Vektor Translasi .¶
Dalam kasus ini, saya menetapkan dan . Artinya, program secara teliti menjumlahkan setiap nilai pada titik biru dengan angka 2, sementara nilai tetap karena tidak ada pergeseran vertikal. Proses ini dilakukan menggunakan library NumPy agar perhitungannya presisi dan efisien (vectorized operation) tanpa perlu perulangan manual.¶
2. Apakah Ada Matriks Lain yang Menggerakkannya?¶
Tentu ada, dan inilah rahasia di balik layar yang lebih canggih. Selain menggunakan penjumlahan vektor biasa (), kita bisa menggunakan Matriks Transformasi Homogen berukuran . Matriks ini bertindak sebagai Linear Operator. Bentuknya adalah:¶
Dengan matriks “penggerak” ini, kita tidak lagi menggunakan penjumlahan, melainkan Perkalian Matriks. Jadi, setiap koordinat titik biru dikalikan dengan matriks tersebut untuk menghasilkan posisi titik merah secara otomatis.¶
3. Kesimpulan untuk Pembaca¶
Jadi, transformasi ini terjadi karena adanya interaksi antara Matriks Data (titik biru) dengan Matriks Operator (penggerak). Mengapa cara ini sangat penting, Karena dengan satu matriks operator yang teliti, kita bisa mengontrol ribuan titik sekaligus dengan sangat cepat—inilah dasar utama bagaimana objek di dalam game atau aplikasi grafis bisa bergerak dengan mulus dan akurat sesuai perintah kita.¶
import numpy as np
# 1. Membuat matriks 2x2
A = np.array([[2, 1],
[1, 2]])
print("Matriks A:")
print(A)
# 2. Menghitung Nilai Eigen dan Vektor Eigen
nilai_eigen, vektor_eigen = np.linalg.eig(A)
print("\nNilai Eigen:")
print(nilai_eigen)
print("\nVektor Eigen (dalam bentuk kolom):")
print(vektor_eigen)Matriks A:
[[2 1]
[1 2]]
Nilai Eigen:
[3. 1.]
Vektor Eigen (dalam bentuk kolom):
[[ 0.70710678 -0.70710678]
[ 0.70710678 0.70710678]]
import numpy as np
# Matriks awal sesuai soal (2 1, 1 2)
A = np.array([[2, 1],
[1, 2]], dtype=float)
def tugas_qr_iterasi(matriks_awal, n_iterasi=10):
Ak = matriks_awal.copy()
print("="*60)
print("PROGRAM FAKTORISASI QR - TUGAS ALJABAR LINEAR")
print("="*60)
print(f"Matriks Awal:\n{Ak}\n")
# Loop ini akan berjalan sebanyak 10 kali sesuai permintaan Bapak
for k in range(1, n_iterasi + 1):
# 1. Proses Faktorisasi: Mencari Q (Ortonormal) dan R (Segitiga Atas)
Qk, Rk = np.linalg.qr(Ak)
# 2. Proses Perkalian Balik: Ak+1 = Rk * Qk
Ak_next = Rk @ Qk
# Tampilkan detail setiap langkahnya
print(f"--- ITERASI KE-{k} ---")
print(f"Q{k} (Matriks Ortogonal):\n{Qk}")
print(f"R{k} (Matriks Segitiga Atas):\n{Rk}")
print(f"A{k+1} (Hasil R{k} * Q{k}):\n{Ak_next}")
print("-" * 30)
# Simpan hasil untuk iterasi berikutnya
Ak = Ak_next
print("\n" + "="*60)
print(f"HASIL AKHIR SETELAH {n_iterasi} ITERASI:")
print("="*60)
print(f"Matriks Akhir:\n{Ak}")
print(f"\nNilai Eigen (Lihat angka diagonalnya):")
print(f"λ1 = {Ak[0,0]:.4f}")
print(f"λ2 = {Ak[1,1]:.4f}")
# Menjalankan 10 iterasi
tugas_qr_iterasi(A, 10)============================================================
PROGRAM FAKTORISASI QR - TUGAS ALJABAR LINEAR
============================================================
Matriks Awal:
[[2. 1.]
[1. 2.]]
--- ITERASI KE-1 ---
Q1 (Matriks Ortogonal):
[[-0.89442719 -0.4472136 ]
[-0.4472136 0.89442719]]
R1 (Matriks Segitiga Atas):
[[-2.23606798 -1.78885438]
[ 0. 1.34164079]]
A2 (Hasil R1 * Q1):
[[ 2.8 -0.6]
[-0.6 1.2]]
------------------------------
--- ITERASI KE-2 ---
Q2 (Matriks Ortogonal):
[[-0.97780241 0.20952909]
[ 0.20952909 0.97780241]]
R2 (Matriks Segitiga Atas):
[[-2.86356421 0.83811635]
[ 0. 1.04764544]]
A3 (Hasil R2 * Q2):
[[2.97560976 0.2195122 ]
[0.2195122 1.02439024]]
------------------------------
--- ITERASI KE-3 ---
Q3 (Matriks Ortogonal):
[[-0.99729001 -0.07357057]
[-0.07357057 0.99729001]]
R3 (Matriks Segitiga Atas):
[[-2.98369553 -0.2942823 ]
[ 0. 1.00546452]]
A4 (Hasil R3 * Q3):
[[ 2.99726027 -0.0739726 ]
[-0.0739726 1.00273973]]
------------------------------
--- ITERASI KE-4 ---
Q4 (Matriks Ortogonal):
[[-0.99969559 0.02467256]
[ 0.02467256 0.99969559]]
R4 (Matriks Segitiga Atas):
[[-2.99817296 0.09869024]
[ 0. 1.00060938]]
A5 (Hasil R4 * Q4):
[[2.99969521 0.0246876 ]
[0.0246876 1.00030479]]
------------------------------
--- ITERASI KE-5 ---
Q5 (Matriks Ortogonal):
[[-0.99996613 -0.00822976]
[-0.00822976 0.99996613]]
R5 (Matriks Segitiga Atas):
[[-2.9997968 -0.03291902]
[ 0. 1.00006774]]
A6 (Hasil R5 * Q5):
[[ 2.99996613 -0.00823031]
[-0.00823031 1.00003387]]
------------------------------
--- ITERASI KE-6 ---
Q6 (Matriks Ortogonal):
[[-0.99999624 0.00274346]
[ 0.00274346 0.99999624]]
R6 (Matriks Segitiga Atas):
[[-2.99997742 0.01097383]
[ 0. 1.00000753]]
A7 (Hasil R6 * Q6):
[[2.99999624e+00 2.74347906e-03]
[2.74347906e-03 1.00000376e+00]]
------------------------------
--- ITERASI KE-7 ---
Q7 (Matriks Ortogonal):
[[-9.99999582e-01 -9.14493786e-04]
[-9.14493786e-04 9.99999582e-01]]
R7 (Matriks Segitiga Atas):
[[-2.99999749 -0.00365798]
[ 0. 1.00000084]]
A8 (Hasil R7 * Q7):
[[ 2.99999958e+00 -9.14494550e-04]
[-9.14494550e-04 1.00000042e+00]]
------------------------------
--- ITERASI KE-8 ---
Q8 (Matriks Ortogonal):
[[-9.99999954e-01 3.04831545e-04]
[ 3.04831545e-04 9.99999954e-01]]
R8 (Matriks Segitiga Atas):
[[-2.99999972e+00 1.21932618e-03]
[ 0.00000000e+00 1.00000009e+00]]
A9 (Hasil R8 * Q8):
[[2.99999995e+00 3.04831573e-04]
[3.04831573e-04 1.00000005e+00]]
------------------------------
--- ITERASI KE-9 ---
Q9 (Matriks Ortogonal):
[[-9.99999995e-01 -1.01610526e-04]
[-1.01610526e-04 9.99999995e-01]]
R9 (Matriks Segitiga Atas):
[[-2.99999997e+00 -4.06442102e-04]
[ 0.00000000e+00 1.00000001e+00]]
A10 (Hasil R9 * Q9):
[[ 2.99999999e+00 -1.01610527e-04]
[-1.01610527e-04 1.00000001e+00]]
------------------------------
--- ITERASI KE-10 ---
Q10 (Matriks Ortogonal):
[[-9.99999999e-01 3.38701756e-05]
[ 3.38701756e-05 9.99999999e-01]]
R10 (Matriks Segitiga Atas):
[[-3.00000000e+00 1.35480702e-04]
[ 0.00000000e+00 1.00000000e+00]]
A11 (Hasil R10 * Q10):
[[3.00000000e+00 3.38701756e-05]
[3.38701756e-05 1.00000000e+00]]
------------------------------
============================================================
HASIL AKHIR SETELAH 10 ITERASI:
============================================================
Matriks Akhir:
[[3.00000000e+00 3.38701756e-05]
[3.38701756e-05 1.00000000e+00]]
Nilai Eigen (Lihat angka diagonalnya):
λ1 = 3.0000
λ2 = 1.0000
proses penggenapan¶
import numpy as np
# Matriks awal
A = np.array([[2, 1],
[1, 2]], dtype=float)
def tugas_qr_bulat(matriks_awal, n_iterasi=10):
Ak = matriks_awal.copy()
print("="*50)
print("HASIL ITERASI QR (DIBULATKAN)")
print("="*50)
for k in range(1, n_iterasi + 1):
Qk, Rk = np.linalg.qr(Ak)
Ak_next = Rk @ Qk
# Simpan hasil untuk iterasi berikutnya
Ak = Ak_next
# Tampilkan hasil dengan pembulatan 4 angka di belakang koma agar "genap"
print(f"ITERASI {k}:")
print(np.round(Ak, 4))
print("-" * 30)
print("\nKESIMPULAN AKHIR:")
print(f"Nilai Eigen 1: {round(Ak[0,0])}") # Dibulatkan ke angka bulat terdekat
print(f"Nilai Eigen 2: {round(Ak[1,1])}")
tugas_qr_bulat(A, 10)==================================================
HASIL ITERASI QR (DIBULATKAN)
==================================================
ITERASI 1:
[[ 2.8 -0.6]
[-0.6 1.2]]
------------------------------
ITERASI 2:
[[2.9756 0.2195]
[0.2195 1.0244]]
------------------------------
ITERASI 3:
[[ 2.9973 -0.074 ]
[-0.074 1.0027]]
------------------------------
ITERASI 4:
[[2.9997 0.0247]
[0.0247 1.0003]]
------------------------------
ITERASI 5:
[[ 3. -0.0082]
[-0.0082 1. ]]
------------------------------
ITERASI 6:
[[3.0e+00 2.7e-03]
[2.7e-03 1.0e+00]]
------------------------------
ITERASI 7:
[[ 3.e+00 -9.e-04]
[-9.e-04 1.e+00]]
------------------------------
ITERASI 8:
[[3.e+00 3.e-04]
[3.e-04 1.e+00]]
------------------------------
ITERASI 9:
[[ 3.e+00 -1.e-04]
[-1.e-04 1.e+00]]
------------------------------
ITERASI 10:
[[3. 0.]
[0. 1.]]
------------------------------
KESIMPULAN AKHIR:
Nilai Eigen 1: 3
Nilai Eigen 2: 1