Repository ini berisi implementasi program untuk menganalisis dan memprediksi dinamika populasi menggunakan model rantai Markov dengan pendekatan diagonalisasi matriks. Program ini dikembangkan sebagai pendukung makalah pada mata kuliah IF2123 Aljabar Linear dan Geometri dan bertujuan untuk menghubungkan konsep teoretis aljabar linear dengan penerapannya secara komputasional. Akses makalah pada : bit.ly/81MakalahAlgeo88
Dinamika populasi dimodelkan sebagai sistem linear diskrit di mana distribusi populasi pada setiap periode dinyatakan dalam bentuk vektor, dan perubahan antar periode direpresentasikan oleh matriks transisi Markov. Untuk menganalisis perilaku jangka panjang sistem, digunakan konsep nilai eigen, vektor eigen, dan diagonalisasi matriks, sehingga prediksi distribusi populasi dapat dilakukan secara lebih efisien dan terstruktur.
Program ini memungkinkan:
- Prediksi distribusi populasi untuk beberapa periode ke depan
- Analisis kestabilan sistem dan konvergensi menuju keadaan tunak (steady-state)
- Visualisasi dinamika populasi secara grafis
- Pemodelan dinamika populasi berbasis rantai Markov
- Prediksi distribusi populasi secara iteratif (jangka pendek)
- Prediksi distribusi populasi jangka panjang menggunakan diagonalisasi matriks
- Perhitungan nilai eigen dan vektor eigen matriks transisi
- Penentuan keadaan tunak sistem
- Analisis kecepatan konvergensi berdasarkan nilai eigen dominan kedua
- Visualisasi dinamika populasi menggunakan grafik
Studi kasus yang digunakan adalah migrasi penduduk antar tiga wilayah dalam sebuah kota:
- Wilayah 1: pusat kota
- Wilayah 2: suburban
- Wilayah 3: pinggiran
Distribusi populasi awal dan matriks transisi ditentukan untuk merepresentasikan perpindahan penduduk antar wilayah dalam satu periode waktu. Untuk matriks transisi menggunakan data probabilitas perpindahan berikut ini : Dari W1 Dari W2 Dari W3 ┌─────────────────────────────────┐ Ke W1 │ 0.80 0.10 0.15 │ Ke W2 │ 0.15 0.85 0.10 │ Ke W3 │ 0.05 0.05 0.75 │ └─────────────────────────────────┘
• 80% penduduk W1 tetap, 15% ke W2, 5% ke W3 • 85% penduduk W2 tetap, 10% ke W1, 5% ke W3 • 75% penduduk W3 tetap, 15% ke W1, 10% ke W2
Secara umum, program terdiri dari beberapa fungsi utama:
- Pendefinisian studi kasus dan data awal
- Prediksi distribusi populasi secara iteratif
- Analisis nilai eigen dan vektor eigen
- Diagonalisasi matriks transisi
- Prediksi jangka panjang menggunakan hasil diagonalisasi
- Penentuan dan verifikasi keadaan tunak
- Visualisasi dinamika populasi
Seluruh proses diintegrasikan dalam fungsi main() sebagai pengendali alur program.
- Python
- NumPy — perhitungan matriks dan nilai eigen
- Matplotlib — visualisasi dinamika populasi
-
Pastikan Python telah terpasang (disarankan Python 3.x).
-
Install pustaka yang dibutuhkan:
pip install numpy matplotlib
-
Jalankan program utama:
python main.py
-
Program akan menampilkan:
- Prediksi distribusi populasi tiap periode
- Nilai eigen dan keadaan tunak
- Grafik konvergensi distribusi populasi
Repository ini bertujuan untuk:
- Memverifikasi hasil analisis teoretis dalam makalah melalui implementasi numerik
- Menunjukkan bahwa konsep aljabar linear dapat diterapkan secara praktis
- Memberikan alat eksplorasi untuk memahami kestabilan dan perilaku jangka panjang sistem populasi