Metode Romberg

Integrasi Romberg ialah teknik yang digunakan untuk menganalisis kasus fungsi yang diintegrasikan telah tersedia. Teknik ini memiliki keunggulan untuk menghasilkan nilai-nilai dari fungsi yang digunakan secara efisien bagi pengintegrasian secara numerik. Integrasi Romberg didasarkan pada ekstrapolasi Richardson, yaitu metode untuk mengkombinasikan dua perkiraan integral secara numerik untuk memperoleh nilai ketiga, yang lebih akurat, misal: O(h2N)O(h2N) --> O(h2N+2)O(h2N+2)

Misal I(h) dan I(2h) dihitung dengan metode Trapesium dengan orde galat O(h2)O(h2), maka ekstrapolasi Richardson menghasilkan metode Simpson ⅓ dengan orde galat O(h4)O(h4). Kemudian jika I(h) dan I(2h)* dihitung dengan metode Simpson ⅓, maka akan menghasilkan kaidah Boole denganrorde galat O(h6)O(h6).

Persamaan ekstrapolasi Richardson :

J=I(h)+I(h)−I(2h)2q−1J=I(h)+I(h)−I(2h)2q−1

Misalkan I adalah nilai integrasi yang dinyatakan sebagai I=Ak+Ch2+Dh4+Eh6+...I=Ak+Ch2+Dh4+Eh6+... dalam hal ini h=(b−a)nh=(b−a)n dan AkAk merupakan nilai integrasi dengan metode Trapesium dengan jumlah pias n=2kn=2k dan Orde galatnya adalah O(h2)O(h2). A0,A1,...AkA0,A1,...Ak digunakan dalam persamaan ekstrapolasi Richardson untuk mendapatkan B1,B2,...,BkB1,B2,...,Bk, yaitu

Bk=Ak+Ak−Ak−122−1Bk=Ak+Ak−Ak−122−1

Jadi, nilai I setelah diupdate adalah I=Bk+D′h4+E′h6+…I=Bk+D′h4+E′h6+… dengan orde galat BkBk adalah O(h4)O(h4).

Selanjutnya, menggunakan B1,B2,..,BkB1,B2,..,Bk pada persamaan ekstrapolasi Richardson untuk mendapatkan runtunan C2,C3,...,CkC2,C3,...,Ck, yaitu

Ck=Bk+Bk−Bk−124−1Ck=Bk+Bk−Bk−124−1

nilai I saat ini adalah I=Ck+E"h6+...I=Ck+E"h6+... dengan orde galat CkCk adalah O(h6)O(h6). Demikian seterusnya.

Dari runtunan diatas diperoleh tabel Romberg berikut:

O(h2) Metode Trapesium O(h4) Metode Simpson O(h6) Metode Boole O(h8) Perbaikan ketiga O(h10) dst
A0
A1 B1
A2 B2 C2
A3 B3 C3 D3
A4 B4 C4 D4 E4

E4 ialah nilai integrasi yang lebih baik.

Listing Pemrograman

Contoh 1 : Dalam contoh ini kita dapat melihat bahwa dengan menggunakan metode scipy.integrate.romberg() , kita bisa mendapatkan integrasi romberg dari fungsi yang dapat dipanggil dari batas a ke b dengan menggunakan metode scipy.integrate.romberg().

# import numpy and scipy.integrate 
  import numpy as np 
  from integrate import scipy 
  gfg = lambda x: np.exp( - x * * 2 ) 

 # using scipy.integrate.romberg() 
  geek = integrate.romberg(gfg, 0 , 3 , show = True ) 

  print (geek) 

Output:

 Romberg integrasi <function vectorize1..vfunc di 0x00000209C3641EA0> dari [0, 3]

  Langkah StepSize Hasil
      1 3.000000 1.500185
      2 1.500000 0,908191 0,710860
      4 0.750000 0.886180 0.878843 0.890042
      8 0.375000 0.886199 0.886206 0.886696 0.886643
     16 0.187500 0.886205 0.886207 0.886207 0.886200 0.886198
     32 0,093750 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207
     64 0.046875 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207
    128 0.023438 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207 0.886207

 Hasil akhir adalah 0,8862073482595311 setelah 129 evaluasi fungsi.

Contoh 2:

# import numpy and scipy.integrate 
  import numpy as np 
  from integrate import scipy 
  gfg = lambda x: np.exp( - x * * 2 ) + 1 / np.sqrt(np.pi) 

 # using scipy.integrate.romberg() 
  geek = integrate.romberg(gfg, 1 , 2 , show = True ) 

  print (geek)

Output:

Integrasi Romberg dari <function vectorize1..vfunc at 0x00000209E1605400> dari [1, 2]

  Langkah StepSize Hasil
      1 1,000000 0,757287
      2 0,500000 0,713438 0,698822
      4 0.250000 0.702909 0.699400 0.699438
      8 0.125000 0.700310 0.699444 0.699447 0.699447
     16 0,062500 0,699663 0,699447 0,699447 0,699447 0,699447
     32 0.031250 0.699501 0.699447 0.699447 0.699447 0.699447 0.699447

 Hasil akhir adalah 0,6994468414978009 setelah 33 evaluasi fungsi.