Soal
Diketahui tabel dari nilai-nilai suatu fungsi sebagai berikut:index | nilai Xi | nilai Yi |
---|---|---|
0 | 3 | 10 |
1 | 5 | 10 |
2 | 7 | 8 |
3 | 9 | 8 |
4 | 11 | 8 |
5 | 13 | 5 |
6 | 15 | 3 |
Tentukan
- Luas area dari Xi = 3 sampai Xi=7
- Luas area dari semua nilai Xi yang diketahui oleh tabel
Code
Silahkan copas code, berikut:beri nama file dengan nama simpson3.py
Hasil
- single
list = [[3,10],[5,10],[7,9]]
print(simpson3_single(list))
- composit
list = [[3,10],[5,10],[7,8],[9,8],[11,8],[13,5],[15,3]]
print(simpson3_composit(list))
Penjelasan Code
# declare libraryimport numpy as np
menggunakan library numpy untuk mempermudah proses pengolahan array
# check consistency
def check_consistency(list_x):
cond = True
msg = "x consistent"
h = list_x[1]-list_x[0]
for i in range(1,len(list_x)-1):
if(list_x[i+1]-list_x[i]!=h):
cond = False
msg = "in index : "+str(i+1)+" in consistence"
break
return cond,msg
# check variable
# print(list_x)
# print(check_consistency(list_x)[0])
membuat fungsi untuk mengecheck ke konsistensian dari nilai x, agar semua nilai tabel yang ada bisa digunakan. Cara kerjanya adalah mengecheck semua nilai selisih antara nilai x sekarang mengurangi nilai x selanjutnya. Apabila terjadi kesalahan, maka fungsi akan langsung memberikan nilai kembalian yang indeks ke 0 berupa False, dan indeks ke 1 berupa message dimana indeks nilainya tidak konsisten (sama). Jika sampai akhir tidak ada masalah.Kembalian nilai dari fungsi indeks ke0 berupa True dan message yang menyatakan "x consistent".
# single casefungsi simpson3_single ini membutuhkan parameter list, kemudian akan mengembalikan nilai yang berasal dari luas = h/3*(f(0)+4f(1)+f(2)). Seperti yang tertulis pada return return (h/3)*sum([list_y[0],4*list_y[1],list_y[2]]).
def simpson3_single(list):
list_x=np.array(list)[:,0]
list_y=np.array(list)[:,1]
# handle return value from check_consistency function
res_1 = check_consistency(list_x)
# final result
if(res_1[0]):
# print(((list_x[1]-list_x[0])/3))
# print(sum([list_y[0],4*list_y[1],list_y[2]]))
h = abs(list_x[1]-list_x[0])
return (h/3)*sum([list_y[0],4*list_y[1],list_y[2]])
else:
return (res_1[1])
def simpson3_composit(list):
list_x=np.array(list)[:,0]
list_y=np.array(list)[:,1]
# handle return value from check_consistency function
res_1 = check_consistency(list_x)
if(res_1[0]):
h = abs(list_x[1]-list_x[0])
y_ganjil = []
y_genap = []
for i in range(1,len(list_y)-1):
if(i%2==0):
y_genap.append(list_y[i])
else:
y_ganjil.append(list_y[i])
print(h/3,y_ganjil,y_genap)
return (h/3)*(sum([list_y[0],4*sum(y_ganjil),2*sum(y_genap),list_y[len(list_y)-1]]))
else:
return res_1[1]
fungsi simpson3_composit, tidak jauh cara kerjanya dengan yang single hanya saja untuk rumus menggunakan luas = h/3*(f(0) + 4*f(i<ganjil>) + 2*f(i<genap>) + f(n)). Sesuai yang ada pada baris code return (h/3)*(sum([list_y[0],4*sum(y_ganjil),2*sum(y_genap),list_y[len(list_y)-1]]))
Sekian dan Terimakasih
Posting Komentar untuk "Program Integral Numerik Metode Simpson 1/3 Menggunakan Python"
Berilah komentar, saran, dan kritik dengan bijak