Ekstrapolasi Richardson

Ekstrapolasi Richardson merupakan metode yang menggunakan dua perkiraan dari sebuah integral untuk mengkomputasi pendugaan ketiga, yang lebih akurat.

Tujuan ekstrapolasi Richardson ialah menghitung nilai integrasi yang lebih baik (improve) dibandingkan dengan I.

Misalkan J adalah nilai integrasi yang lebih baik daripada I dengan jarak antar titik adalah h: $$ J = I(h) + Ch^q $$ Ekstrapolasikan h menjadi 2h, lalu hitung integrasi numeriknya : $$ J = I (2h) + C(2h)^q $$ Eliminasikan C dari kedua persamaan dengan menyamakan persamaan (1) dan persamaan (2): $$ I(h) = Ch^q = I(2h) + C(2h)^q $$ sehingga diperoleh

C = \frac{I(h)-I(2h)}{(2^q-1)h^q}

Program

from math import *
def zeros(n,m):
    Z=[]
    for i in range(n):
        Z.append([0]*m)
    return Z

def D(Func,a,h):
        return (Func(a+h)-Func(a-h))/(2*h)

def Richardson_dif(func,a): 
    '''Richardson extrapolation method for numerical calculation of first derivative '''
    k=9 
    L=zeros(k,k)
    for I in range(k):
        L[I][0]=D(func,a,1/(2**(I+1)))
    for j in range(1,k):
        for i in range(k-j):
            L[i][j]=((4**(j))*L[i+1][j-1]-L[i][j-1])/(4**(j)-1)
    return L[0][k-1]

print('>>>>>>>>>>>>>>>>>>>>>>> DIFERENSIASI NUMERIK DARI <<<<<<<<<<<<<<<<<<<<<')
print("=======================================================================")
print('f = -0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2 dengan x = 0.5')
print("=======================================================================")
print('%04.20f'%Richardson_dif(lambda x: -0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2 ,0.5))
print("=======================================================================")
print('diff(2**cos(pi+sin(x)) dengan x = pi/2 adalah = %04.20f'%Richardson_dif(lambda x: 2**cos(pi+sin(x)),pi/3))

Hasilnya

>>>>>>>>>>>>>>>>>>>>>>> DIFERENSIASI NUMERIK DARI <<<<<<<<<<<<<<<<<<<<<
=======================================================================
f = -0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2 dengan x = 0.5
=======================================================================
-0.91250000000000530687
=======================================================================
diff(2**cos(pi+sin(x)) dengan x = pi/2 adalah = 0.16849558398154249050
>>>