Wahib Al-Gifari - KN5 - L2 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Laporan Akhir Praktikum Algoritma dan Pemrograman AKN - 5 INTERPOLASI



Nama



: Wahib Al-Gifari



NPM



: 140310200041



Hari/Tanggal



: Selasa, 13 April 2021



Waktu



: 07.30-12.30



Asisten



: Ratu Kila



LABORATORIUM KOMPUTASI DEPARTEMEN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS PADJADJARAN 2021



LEMBAR PENGESAHAN AKN - 5



INTERPOLASI



Nama



: Wahib Al-Gifari



NPM



: 140310200041



Hari / Tanggal



: Selasa, 13 April 2021



Waktu / Sesi



: 07.30-12.30



Asisten



: Ratu Kila



Laporan Awal



Presentasi



Praktikum



Laporan Akhir



Bandung, 23 April 2021 Asisten



(



)



Interpolasi Selasa, 14 April 2021



III.



Tugas Praktikum 1. Untuk fungsi f(x) di bawah ini dengan diketahui data x0 = 0, x1 = 0.6, x2 = 0.9, gunakan interpolasi polinomial derajat satu dan dua untuk menghampiri nilai f(0.45). Buatlah dalam program dengan menggunakan bahasa Python. a) 𝑓(𝑥) = sin 𝑥 Listing program import numpy as np def fx(x): fx = np.sin(x) return fx x0 = 0 x1 = 0.6 x2 = 0.9 xin = 0.45 k0 = fx(x0) k1 = (fx(x1)-fx(x0))/x1-x0 k2 = (((fx(x2)-fx(x1))/x2-x1)-(k1))/(x2-x0) id1 = k0+(k1*(xin-x0)) id2 = k0+(k1*(xin-x0))+(k2*(xin-x1)*(xin-x0)) print("Hasil Interpolasi Derajat Satu : ",id1) print("Hasil Interpolasi Derajat Dua : ",id2)



Tampilan program



Analisis program Library numpy yang disingkat menjadi np, supaya nantinya fungsi numpy itu dapat digunakan. Seperti pada line 3, np.sin(x), supaya fungsi sinus itu dapat digunakan atau berjalan. Dan disitu diketahui x0 = 0, x1 = 0.6 dan x2 = 0.9. Dan menghampiri f(0.45). Karena yang ditanyakannya orde 1 dan 2, maka yang ditulis itu hanya k1 dan k2, serta id1 dan id2. Lalu mem-print hasil dari interpolasi polinomial derajat 1 dan 2.



b) 𝑓(𝑥) =



ln⁡(2𝑥+3) 2𝑥 2



Listing program import numpy as np def f(x): fx = np.log((1/2*x)+3)/2*(x**2) return fx x0 = 0 x1 = 0.6 x2 = 0.9 xin = 0.45 k0 = fx(x0) k1 = (fx(x1)-fx(x0))/x1-x0 k2 = (((fx(x2)-fx(x1))/x2-x1)-(k1))/(x2-x0) id1 = k0+(k1*(xin-x0)) id2 = k0+(k1*(xin-x0))+(k2*(xin-x1)*(xin-x0)) print(“Hasil Interpolasi Derajat 1 : “,id1) print(“Hasil Interpolasi Derajat 2 : “,id2)



Tampilan Program



Analisis program Library numpy yang disingkat menjadi np, supaya nantinya fungsi numpy itu dapat digunakan. Seperti pada line 3, np.log((1/2*x)+3)/2*(x**2) supaya fungsi logaritma itu dapat digunakan atau berjalan. Dan disitu diketahui x0 = 0, x1 = 0.6 dan x2 = 0.9. Dan menghampiri f(0.45). Karena yang ditanyakannya orde 1 dan 2, maka yang ditulis itu hanya k1 dan k2, serta id1 dan id2. Lalu mem-print hasil dari interpolasi polinomial derajat 1 dan 2.



c) 𝑓(𝑥) = 𝑒 𝑥 + √(2𝑥 + 1) Listing program import numpy as np def fx(x): fx = np.exp(x)+np.sqrt((2*x)+1) return fx x0 = 0 x1 = 0.6 x2 = 0.9 xin = 0.45 k0 = fx(x0) k1 = (fx(x1)-fx(x0))/x1-x0 k2 = (((fx(x2)-fx(x1))/x2-x1)-(k1))/(x2-x0) id1 = k0+(k1*(xin-x0)) id2 = k0+(k1*(xin-x0))+(k2*(xin-x1)*(xin-x0)) print("Hasil Interpolasi Derajat 1 : ",id1) print("Hasil Interpolasi Derajat 2 : ",id2)



Tampilan program



Analisis program Library numpy yang disingkat menjadi np, supaya nantinya fungsi numpy itu dapat digunakan. Seperti pada line 3, np.exp(x)+np.sqrt((2*x)+1), supaya fungsi eksponensial dan sqrt atau akar kuadrat itu dapat digunakan atau berjalan. Dan disitu diketahui x0 = 0, x1 = 0.6 dan x2 = 0.9. Dan menghampiri f(0.45). Karena yang ditanyakannya orde 1 dan 2, maka yang ditulis itu hanya k1 dan k2, serta id1 dan id2. Lalu mem-print hasil dari interpolasi polinomial derajat 1 dan 2. 1



d) 𝑓(𝑥) = 1+162 Listing program def fx(x): fx = 1/(1+(16*(x**2))) return fx x0 = 0 x1 = 0.6 x2 = 0.9 xin = 0.45 k0 = fx(x0) k1 = (fx(x1)-fx(x0))/x1-x0 k2 = (((fx(x2)-fx(x1))/x2-x1)-(k1))/(x2-x0) id1 = k0+(k1*(xin-x0)) id2 = k0+(k1*(xin-x0))+(k2*(xin-x1)*(xin-x0)) print("Hasil Interpolasi Derajat 1 : ",id1) print("Hasil Interpolasi Derajat 2 : ",id2)



Tampilan program



Analisis program Disini tidak menggunakan numpy seperti nomor-nomor sebelumnya. Jadi langsung memasukkan persamaan dari f(x) = 1/(1+(16*(x**2))). Dan disitu diketahui x0 = 0, x1 = 0.6 dan x2 = 0.9. Dan menghampiri f(0.45). Karena yang ditanyakannya orde 1 dan 2, maka yang ditulis itu hanya k1 dan k2, serta id1 dan id2. Lalu mem-print hasil dari interpolasi polinomial derajat 1 dan 2.



2. Gunakan metode Interpolasi Lagrange derajat satu, dua dan tiga untuk memprediksi populasi daerah “X” sesuai dengan tabel 5.1 (pada modul) pada tahun 1945, 1955, 1965, 1975, 1985, 1995, 2005. Jawab



:



Listing program jumlahpenduduk = [34704, 69168, 97115, 148442, 211707, 264002] tahun = [1950, 1960, 1970, 1980, 1990, 2000] a = int(input(“Berapa kali operasi yang diinginkan : “)) xin = int(input(“Tahun : “)) while a>0: p0 = 0 n = int(input(“Derajat : “)) for i in range (n+1): Li = 1 for j in range (n+1): if i == j: continue Li *= (xin – tahun[j])/(tahun[i] – tahun[j]) Pn = p0 + (Li*jumlahpenduduk[i]) p0 = Pn print(Pn) a = a-1



Tampilan program



Analisis program Diberikan dua buah variabel yaitu variabel jumlahpenduduk dan tahun dimana kedua variabel tersebut juga mendeklarasikan jumlah penduduk dan tahun yang ada pada tabel. Dalam mencari interpolasi menggunakan metode Interpolasi Lagrange



dibuat program seperti pada program di atas. Setelah diberikan variabel penduduk dan tahun, dideklarasikan variabel a yang bertujuan untuk menyimpan data nilai jumlah operasi yang ingin dilakukan. Pada variabel a terdapat fungsi input() yang bertujuan untuk memberikan input data sesuai dengan yang diminta. Kemudian, juga terdapat fungsi int() yang bertujuan untuk mengubah tipe data dari data string menjadi tipe data integer. Fungsi int() dibutuhkan di dalam variabel a yang untuk menentukan jumlah perulangan yang terjadi. Setelah itu, diberikan variabel xin untuk memberikan nilai x input yang diinginkan. Variabel xin ini juga bertujuan untuk menyimpan nilai titik x yang ingin dicari nilai interpolasinya. Pada variabel x ini terdapat fungsi input() dan fungsi int() yang bertujuan untuk memasukkan nilai x yang sudah diubah ke bentuk tipe data integer. Lalu, diberikan pengkondisian perulangan while a>0. Hal ini berarti perulangan akan terus berlangsung selama nilai perulangan yang diinginkan lebih dari nol. Setelah itu, diberikan variabel p0 yang bertujuan untuk menyimpan nilai data di dalamnya yaitu berupa angka nol sebagai nilai awal agar nantinya proses perhitungan interpolasi ini dapat berlangsung. Selanjutnya, dideklarasikan variabel n yang berfungsi untuk menyimpan data berupa nilai orde yang diinginkan. Lalu, diberikan pengkondisian for i in range (n+1) yang tujuannya untuk melakukan perulangan dengan nilai range dari indeks i = 0 sampai nilai di dalam variabel n+1, dengan nilai n merupakan nilai orde yang ditambahkan agar perulangan yang dilakukan tidak terjadi error ‘out of range’ jika indeks yang digunakan kurang dari operasi yang diinginkan. Selanjutnya, pada perulangan tersebut dideklarasikan variabel Li yang bertujuan untuk menyimpan data nilai satu yang nantinya akan terus dikalikan dengan Li pada pengkondisian for tadi. Lalu, terdapat pengkondisian lagi, yaitu for j in range (n+1). Pada pengkondisian tersebut diberikan pengondisian lagi, yaitu if j==i : continue yang berarti bahwa jika nilai dari j sama dengan nilai dari i, maka operasi di dalamnya akan dilewati dan tidak akan terjadi. Pengkondisian ini sesuai dengan rumus yang ada pada metode Interpolasi Lagrange. Lalu, akan didapatkan nilai operasi Li sesuai dengan rumus yang dideklarasikan nantinya dengan variabel Li. Pada variabel Li terdapat tanda *=. Hal ini berfungsi untuk mengalikan setiap nilai Li yang didapat dari setiap loop. Selanjutnya dilakukan operasi untuk menentukan interpolasi menggunakan Metode Interpolasi Lagrange. Kemudian, diberikan operasi dengan memberikan variabel Pn yang berfungsi untuk menyimpan data hasil interpolasi yang didapatkan dengan operasi matematisnya, yaitu Pn =



p0+(Li*y[i]). Hal ini sudah sesuai dengan operasi dari interpolasi Lagrange. Kemudian, dideklarasikan bahwa variabel p0=Pn yang bertujuan utuk mendapatkan perhitungan jumlah hasil interpolasinya. Setelah itu, diberikan fungsi print untuk memberikan keluaran data dari perhitungan yang terjadi yang dideklarasikan dengan variabel Pn. Terakhir, dideklarasikan variabel a yang baru yang bertujuan untuk menyimpan nilai a yang baru. Apabila tidak dicari a yang baru, maka pengkondisian while a>0 akan terus mengulang hingga nilai a akan lebih dari 0. Oleh karena itu, dilakukan konversi nilai a menjadi nilai a yang baru dengan operasi a=a-1 agar program berjalan sesuai dengan nilai operasi yang diinginkan di awal. IV.



Tugas Akhir 1. Buatlah program menggunakan bahasa Python untuk soal-soal yang ada pada Percobaan dengan menggunakan metode Newton Forward Difference. Jawab



: Tabel 5.1 Jumlah penduduk di daerah X pada tahun 1950-2000



Tahun



1950



1960



1970



1980



1990



2000



Jumlah Penduduk



34.704



69.168



97.115



148.442



211.707



264.002



Jawab



:



Listing program import numpy as np y = [34704,69168,97115,148442,211707,264002] x = [1950,1960,1970,1980,1990,2000] xin = int(input("Tahun : ")) h = x[1]-x[0] r = (xin-x[0])/h koef = r sum = y[0] j = 1 for i in range (len(x),1,-1): y = np.diff(y) sum +=koef*y[0] koef = koef*(r-j)/(j+1) j = j+1 print("Hasil Interpolasi : ",sum)



Tampilan program



Analisis program Pada tampilan program, mengimport library numpy yang bertujuan agar kita dapat menggunakan setiap fungsi yang ada pada library numpy. Kemudian, kita definisikan sebagai np agar menyingkat pemanggilan fungsinya.Lalu, diberikan dua buah variabel yaitu variabel y dan x dimana kedua variabel tersebut mendeklarasikan jumlah penduduk dan tahun yang ada pada tabel. Setelah itu, diberikan variabel xin untuk memberikan nilai x input yang diinginkan. Variabel xin ini juga bertujuan untuk menyimpan nilai titik x yang ingin dicari nilai interpolasinya. Pada variabel x ini terdapat fungsi input() dan fungsi int() yang bertujuan untuk memasukkan nilai x yang sudah diubah ke bentuk tipe data integer. Selanjutnya, dideklarasikan variabel-variabel yang mendefinisikan parameter yang akan digunakan sesuai dengan metode Newton Forward Difference seperti variabel h, r, dan koef. Lalu, dideklarasikan variabel sum dan j sebagai nilai awal agar proses pengkondisian perulangan nantinya dapat berlangsung. Selanjutnya diberikan pengkondisian for In range dengan didalamnya terdapat variabel yang berisi parameter yang akan digunakan sesuai dengan metode Newton Forward Difference seperti variabel y, sum+, koef, dan j yang semuanya didefinisikan dengan nilai baru



sehingga nantinya hasil yang ditampilkan akan sesuai dengan langkah dalam menggunakan metode Newton Forward Difference. Terakhir, digunakan perintah print untuk menampilkan hasil interpolasi dimana output yang dihasilkan berasal dari variabel sum. V.



Kesimpulan 1) Praktikan telah mampu menentukan solusi dari permasalahan interpolasi dengan menggunakan metode Polinomial, Lagrange, dan Newton Forward Difference. 2) Praktikan telah mampu membedakan penyelesaian masalah dengan metode interpolasi dan ekstrapolasi.