Anda di halaman 1dari 3

import numpy as np

# MENCARI SEGMENT
# # X ADALAH 0.5 , 0.25, 0.125, YANG TERTERA PADA SOAL
# b DAN a ADALAH BATAS INTEGRAL
def seg (x,b,a):
n = (b-a)/x
return int(n)

# MEMBUAT DAFTAR LIST UNTUK F(Xn)


# N ADALAH JUMLAH SEGMEN
# X ADALAH 0.5 , 0.25, 0.125, YANG TERTERA PADA SOAL
def lisxn (n,x):
xn= []
a = 0
for i in range (n+1):
if i == 0 :
xn.append(0)
else :
a = a + x
xn.append(a)
return xn

# MEMBUAT FUNGSI UNTUK TRAPEZOIDAL, SIMPSON 1/3 SESUAI PERTENYAAN (DITANYAKAN


1/(1+X))
def ftr (x):
n = 1/(1+x)
return n

# CATATAN :
# DIMANA h ADALAH 0.5 , 0.25, 0.125, YANG TERTERA PADA SOAL
# x ADALAH YANG DIDAPAT PADA LISXN
# TRAPEZOIDAL
def trapezoidal (h,x):
traz = 0
x = np.array(x,float)
xn = len(x)
for i in range (xn) :
if i == 0 or i == xn-1 :
traz = traz + ftr(x[i])
# BISA JUGA (traz += traz +ftr(i))
else :
traz = traz + 2*ftr(x[i])
trape = traz * (h/2)
return trape

# SIMPSON 1/3
def simpson13 (h,x):
simz = 0
x = np.array(x,float)
xn = len(x)
for i in range (xn):
if i == 0 or i == xn-1:
simz = simz + ftr(x[i])
# BISA JUGA (simz += simz +ftr(i))
elif i % 2 != 0 :
simz = simz + 4*ftr(x[i])
else:
simz = simz + 2*ftr(x[i])
simp = simz *(h/3)
return simp

# SIMPSON 3/8
# DIGUNAKAN KETIKA JUMLAH SEGMEN KELIPATAN 3
def simpson38 (h,x):
simz = 0
x = np.array(x,float)
xn = len(x)
for i in range (xn):
if i == 0 or i == xn-1:
simz = simz + ftr(x[i])
# BISA JUGA (simz += simz +ftr(i))
elif i % 3 == 0 :
simz = simz + 4*ftr(x[i])
else:
simz = simz + 2*ftr(x[i])
simp = simz *((3*h)/8)
return simp

# ROMBERG
# X YANG DIGUNAKAN ADALAH NILAI TRAPEZOIDAL PADA SEMUA h
def romberg (x):
x = np.array(x,float)
xn = []
xc = len(x)
for i in range (1,xc):
a = x[i]+(x[i]-x[i-1])/((2**(2*1))-1)
xn.append(a)
xx = len(xn)
for i in range (1,xx):
b = xn[i]+(xn[i]-xn[i-1])/((2**(2*2))-1)
return(b)

# CONTOH PENGUNAAN DEF ROMBERG. SIMPSON 1/3 DAN TRAPEZOIDAL

x = [0.5, 0.25, 0.125]


ba = 1
bw = 0
tra = []
for i in range (len(x)):
se = seg(x[i],ba,bw)
lis = lisxn(se, x[i])
print ('nilai trapezoidal ketika h =',x[i], 'adalah',
'%0.5f'%trapezoidal(x[i],lis))
print ('nilai simpson 1/3 ketika h =',x[i], 'adalah',
"%0.5f"%simpson13(x[i],lis),)
if se % 3 ==0 :
print ('nilai simpson 1/8 ketika h =',x[i], 'adalah',
"%0.5f"%simpson38(x[i],lis))
else : print ('nilai simpson 1/8 ketika h =',x[i], 'adalah', '-','\n' )

tra.append('%0.5f'%trapezoidal(x[i],lis))
print('nilai romberg adalah','%0.5f'%romberg(tra))

# CATATAN
# SEMUA VARIABEL DAPAT DIGANTI
# JIKA INGIN MENGGANTI MAKA HARUS DIGANTI SEMUA VARIABEL YANG SAMA
# CONTOH UNTUK MENGGANTI VARIABEL DAN YANG ADA KET BISA JUGA
# PENTING !!! INGAT SEBELUM MENGGANTI LEBIH BAIK TUNGGU SAMPAI MUNCUL KUNING-KUNING
# AGAR MENGGANTINYA TEPAT SASARAN
"""
def simpson (h,t):
samz = 0
y = np.array(t,float)
tn = len(t)
for i in range (tn):
if i == 0 or i == tn-1:
samz += samz +ftr(i)
# BISA JUGA (samz += samz +ftr(i))
elif i % 2 != 0 :
samz = samz + 4*ftr(x[i])
else:
samz = samz + 2*ftr(x[i])
samsul = samz *(h/3)
return samsul
"""

Anda mungkin juga menyukai