Turunan Numerik¶
Extrapolasi Richardson¶
Pengertian¶
Dalam analisis numerik,ekstrapolasi Richardson adalah metode percepatan urutan, yang digunakan untuk meningkatkan laju konvergensi suatu urutan. Ekstrapolasi Richardson diterapkan pada barisan pendekatan nilai opsi untuk mempercepat laju konvergensinya.
Aplikasi praktis ekstrapolasi Richardson termasuk integrasi Romberg, yang menerapkan ekstrapolasi Richardson pada aturan trapesium, dan algoritma Bulirsch-Stoer untuk menyelesaikan persamaan diferensial biasa.
Metode Richardson tidak dapat menghasilkan estimasi untuk kesalahan perkiraan. Salah satu cara untuk memperkirakan kesalahan adalah dengan melakukan dua ekstrapolasi dengan $N $ yang sedikit berbeda dan membandingkan hasilnya.
Ekstrapolasi Richardson tidak berfungsi untuk urutan berosilasi. Sebagai solusi sederhana, richardson mendeteksi jika tiga elemen terakhir tidak berbeda secara monoton, dan dalam hal itu berlaku ekstrapolasi hanya untuk elemen indeks genap.
Pada Materi Turunan Numerik Dengan Ekstrapolasi Richardson
Menggunakan Formula Beda Terpusat (Central Differense).
Pada Formula beda terpusat ini diharapkan memberikan solusi terbaik. Karena Beda terpusat pendekatannya adalah lebih akurat dari beda maju dan beda mundur karena errornya adalah $O(h^2)$. Setengah urutan langkah h pendekatannya seperempat error dari beda terpusat
Formula Beda Terpusat (Central Differense)¶
sebagai berikut : $$ f'(x) = {f(x+h) - f(x-h) \over 2h} + O(h^2) $$ Dapat kita ketahui bahwa $E_t = O(h^2)$. Pada $Oh$ disamping biasa disebut sebagai Big Oh Analisis
Untuk menggunakan formula yang terbaik, bisa dengan formula dibawah ini
Ditetapkan $f(x)$ dan $x$ tertentu : $$ \varnothing (h) = {f(x+h) - f(x-h) \over 2h} \\ \varnothing (h) = f'(x) -a_2h^2 - a_4h^4 - a_6h^6 - ... \\ \varnothing({h \over 2}) = f'(x) -a_2 {h^2 \over 2}-a_4 {h^4 \over 2}-a_6 {h^6 \over 2} - ... \\ \varnothing(h) - 4\varnothing({h \over 2}) = -3f'(x) - {3 \over 4} a_4h^4 - {15 \over 16} a_6h^6 - ... \\ \rightarrow f'(x) = {4 \over 3}\varnothing (h/2) - {1 \over 3}\varnothing(h) + O(h^4) $$
Pada Contoh sebuah fungsi sebagai berikut : $$ f(x) = -x^4 - 0.15x^3 - 0.5x^2 - 0.25x + 1.2 $$ Dengan $h_1 =0.5$ dan $h_2 = 0.25$. Menghitung estimasi dengan $f'(0.5)$ menggunakan Richardson Extrapolasi
Nilai sesungguhnya $f'(0.5) = -0.9125$
Pada Turunan Pertama dapat dihitung dengan beda terpusat (Centered Differences) yaitu: $$ \varnothing(h) ={ f(0.5+h) - f(0.5-h) \over 2h} ,pada \quad x = 0.5 \\ \varnothing(0.5) = {f(1) -f(0) \over 1} = {0.2 -1.2 \over 1} = -1.0, |ϵ_t|= 9.6 \\ \varnothing(0.25) = {f(0.75) - f(0.25) \over 0.5} = -0.934375 , |ϵ_t|= 2.4 $$ Estimasi dapat diperbaiki dengan menggunakan : $$ f'(0.5) \approx{4 \over 3}Φ(h/2)- {1 \over 3}Φ(h) = {4 \over 3}(-0.934375)-{1 \over 3}(-1) = -0.9125 $$ Menghasilkan Nilai Yang sama dengan nilai sesungguhnya maka dapat dikatakan estimasinya sudah tepat
Tabel Richardson Extrapolation¶
D(0,0) = Φ(h) | |||
---|---|---|---|
D(1,0)=Φ(h/2) | D(1,1) | ||
D(2,0)=Φ(h/4) | D(2,1) | D(2,2) | |
D(8,0)=Φ(h/8) | D(3,1) | D(3,2) | D(3,3) |
Kolom Pertama : $D(n,0) = Φ{h \over 2}$
yang lain : $$ D(n,m) = {4^m \over 4^m-1} D(n,m-1)- {1 \over 4^m - 1}D(n-1,m-1) $$
Contoh menghitung nilai numerik dari turunan $f(x) = x^{cos(x)}$, menggunakan ekstrapolasi Richardson dengan h = 0.1. Dapatkan D(2,2) sebagai estimasi turunan $$ \varnothing (h) = {f(x+h) - f(x-h) \over 2h} \\ \varnothing (0.1) = {f(0.7) - f(0.5) \over 0.2} = 1.08483 \\ \varnothing (0.05) = {f(0.65) - f(0.55) \over 0.1} = 1.08988\\ \varnothing (0.025) = {f(0.625) - f(0.575) \over 0.05} = 1.09115\\ D(0,0) = 1.08483, D(1,0)= 1.08988, D(2,0) = 1.09115 \\ D(n,m) = {4^m \over 4^m-1} D(n,m-1)- {1 \over 4^m - 1}D(n-1,m-1) \\ D(1,1) = {4 \over 3} D(1,0) - {1 \over 3}D(0,0) = 1.09156\\ D(2,1) = {4 \over 3} D(2,0) - {1 \over 3}D(1,0) = 1.09157\\ D(2,2) = {16 \over 15} D(2,1) - {1 \over 15}D(1,1) = 1.09157 $$ Maka diperoleh Tabel Richardsonnya , sebagai berikut
1.08483 | ||
---|---|---|
1.08988 | 1.09156 | |
1.09115 | 1.09157 | 1.09157 |
Nilai numerik dari turunan $f(x) = x^{cos(x)}$ adalah 1.09157. Ini adalah estimasi terbaik dari turunan dari suatu fungsi
Implementasi Estimasi pada $f'(0.5)$ Dengan Python¶
Pada Penyelesaian Estimasi pada $f'(0.5)$ menggunakan fungsi sebagai berikut : $$ f(x) = -x^4 - 0.15x^3 - 0.5x^2 - 0.25x + 1.2 $$ Mulai dengan $h_1 = 0.5$ dan $h_2 = 0.25$ dengan Richardson Extrapolation
Berikut Listing Program Penyelesaian Estimasi dengan Metode Richardson Extrapolation
from math import * def zeros(n,m): Z=[] for i in range(n): Z.append([0]*m) return Z def D(Func,a,h): #beda terpusat (central differemce) size h , dimana x=a 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) print("Estimasi , f'(x) = ",L[i][j]) return L[0][k-1] print("Differensiasi Numerik") print("Dengan Fungsi f(x) = -0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2 dengan x=0.5") print("h1 = 0.5, h2 = 0.5/2=0.25") 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('diff(2**cos(pi+sin(x)) at x=pi/2 is equal to = %04.20f'%Richardson_dif(lambda x: 2**cos(pi+sin(x)),pi/3))
Berikut Hasil Output dari Code yang telah dijalankan :
Differensiasi Numerik Dengan Fungsi f(x) = -0.1*x**4-0.15*x**3-0.5*x**2-0.25*x+1.2 dengan x=0.5 h1 = 0.5, h2 = 0.5/2=0.25 Estimasi , f'(x) = -0.9125000000000038 Estimasi , f'(x) = -0.912500000000005 Estimasi , f'(x) = -0.9125000000000053 Estimasi , f'(x) = -0.9125000000000053 Estimasi , f'(x) = -0.9125000000000053 Estimasi , f'(x) = -0.9125000000000053 Estimasi , f'(x) = -0.9125000000000053 Estimasi , f'(x) = -0.9125000000000053 -0.91250000000000530687
Dapat kita peroleh Estimasi pada $f'(0.5)$ adalah $-0.91250000000000530687,$ dan Nilai sesungguhnya $f'(0.5) = -0.9125$
Lalu bila dengan fungsi $f(x)$ $diff(2**cos(pi+sin(x))$ dengan $x=pi/3,$ Berikut Hasil Outputnya :
Dengan Fungsi f(x) =diff(2**cos(pi+sin(x)) dengan x=pi/3 Estimasi , f'(x) = 0.168495583979535 Estimasi , f'(x) = 0.16849558398154443 Estimasi , f'(x) = 0.16849558398154296 Estimasi , f'(x) = 0.1684955839815426 Estimasi , f'(x) = 0.16849558398154252 Estimasi , f'(x) = 0.1684955839815425 Estimasi , f'(x) = 0.1684955839815425 Estimasi , f'(x) = 0.1684955839815425 diff(2**cos(pi+sin(x)) at x=pi/3 is equal to = 0.16849558398154249050
Contoh Implementasi fungsi $f(x) = x^{cos(x)}$ pada x = 0.6
Menggunakan Ekstrapolasi Richardson dengan h = 0.1
Berikut Listing Program Penyelesaian Estimasi dengan Metode Richardson Extrapolation
from math import * def zeros(n,m): Z=[] for i in range(n): Z.append([0]*m) return Z def D(Func,a,h): #beda terpusat (central differemce) size h , dimana x=a 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) print("Estimasi , f'(x) = ",L[i][j]) return L[0][k-1] print("Differensiasi Numerik") print("Dengan Fungsi f(x) = x^cos(x), dengan x=0.6") print('%04.20f'%Richardson_dif(lambda x: x**cos(x) ,0.6))
Berikut Hasil Outputnya :
Differensiasi Numerik Dengan Fungsi f(x) = x^cos(x), dengan x=0.6 Estimasi , f'(x) = 1.0915707092680076 Estimasi , f'(x) = 1.0915707092884377 Estimasi , f'(x) = 1.0915707092884381 Estimasi , f'(x) = 1.0915707092884381 Estimasi , f'(x) = 1.0915707092884381 Estimasi , f'(x) = 1.0915707092884381 Estimasi , f'(x) = 1.0915707092884381 Estimasi , f'(x) = 1.0915707092884381 1.09157070928843813462
Dapat kita ketahui Nilai numerik dari turunan $f(x) = x^{cos(x)}$ adalah 1.09157. Sama dengan menggunakan cara manual menghitunya pada Contoh diatas.
Sekian TerimaKasih ;