UNIVERSITAS GADJAH MADA PROGRAM STUDI FISIKA FMIPA
Bahan Ajar 6:
Masalah Integral Numerik (Minggu ke-11 dan ke-12)
PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024 Oleh Dr. Fahrudin Nugroho Dr. Iman Santosa
Didanai dengan dana BOPTN P3-UGM Tahun Anggaran 2013
2
November 2013
BAB 7 Masalah Integrasi Numerik Dalam dunia sains dan teknik sudah sangat dikenal bahwa bentuk model bagi sistem fisis sering kali dapat berupa persamaan integral. Untuk beberapa kasus, permasalahan integral ini tidak bisa diselesaikan secara analitik. Pada keadaan demikian diperlukan suatu pendekatan numerik. Selain itu untuk kasus yang bisa diselesaikan secara analitik, melalui penyelesaian numerik seringkali dapat dihasilkan perhitungan operasi integral dengan cepat dan dengan akurasi yang dapat diterima. Karenanya perhitungan Integral bisa dikatakan sebagai permasalahan umum yang elementer dalam komputasi numerik. Seiring dengan itu terdapat banyak pendekatan numeric yang bisa dilakukan untuk menyelesaikan permasalahan integral. Dalam bab ini akan dibahas metode numerik untuk menyelesaikan permasalahan integral, khususnya integral tunggal 𝐼=
! 𝑓 !
𝑥 𝑑𝑥
(7.1)
7.1 Metode Trapesium Ketika sebuah fungsi kontinyu f(x) akan diintegralkan secara numerik, maka sesungguhnya fungsi tersebut akan didiskritisasi menjadi banyak bagian. Setiap bagian itu akan di integrasikan secara independen sebelum kemudian dilakukan penjumlahan terhadap hasil integrasi seluruh bagian. Proses tersebut ditunjukan pada gambar 1. Gambar ini secara instruktif menunjukan bahwa setiap bagian diskret di bawah fungsi f(x) merupakan suatu trapesium. Dari fakta ini dibuatlah suatu metode integrasi yang paling sederhana bagi permasalahan integral yaitu metode trapesium.
3
Pada metode trapesium, proses integrasi dilakukan dengan cara menghitung luas setiap trapesium kemudian seluruh luasan trapesium dijumlahkan untuk menghasilkan nilai integrasi fungsi yang diinginkan.
Gambar 1: Metode trapesium untuk penginteralan numerik.
Secara matematis dapat dijelaskan sebagai berikut. Luasan sebuah trapesium sebut saja trapesium pertama yaitu wilayah I1 (lihat gambar) akan dihitung dengan persamaan berikut !
𝐼! = ! (𝑓! + 𝑓! )
(7.2)
Dengan h = x1 - x0 dan f0 = f(x0) dan f1 = f(x1). Secara umum untuk sejumlah n cacah trapesium maka dapat dapat dituliskan ℎ=
!! !!! !
(7.3)
Luasan setiap trapesium dapat dihitung menggunakan rumus umum sebagai berikut !
𝐼! = ! (𝑓!!! + 𝑓! )
(7.4)
Maka seluruh luasan dibawah fungsi f(x) adalah jumlahan I untuk seluruh nilai I, dan dapat dirumuskan sebagai
4 ! 𝐼!
=
! ! ! (𝑓!!!
+ 𝑓! )
(7.5)
Jika bentuk di atas diuraikan maka akan diperoleh bentuk eksplisit sebagai berikut !! 𝑓 !!
𝑥 ∝
!
!
!
𝑓! + 𝑓! + ! 𝑓! + 𝑓! + ⋯ + ! 𝑓!!! + 𝑓!
!
!
= ℎ( !! + 𝑓! + ⋯ + 𝑓!!! +
!!! !
(7.6)
Mewujudkan proses integrasi di atas kedalam bahasa pemrograman (coding) tidaklah terlalu rumit. Ini dikarenakan kita telah melalui beberapa contoh coding yang telah melibatkan definisi fungsi. Dari persamaan terakhir dapat dilihat bahwa yang perlu dilakukan dalam program adalah menentukan cacah trapesium yang berarti cacah diskretisasi fungsi. Selain itu adalah nilai fungsi pada setiap batas kiri dan kanan dari setiap trapesium. Berikut adalah contoh program untuk menyelesaikan integrasi fungsi !
𝑓 𝑥 = !!! ! #include<stdio.h> float y(float x){ return 2/(2+x*x); } int main(){ float x0,xn,h,s; int i,n; printf("Enter x0, xn, no. of subintervals: "); scanf("%f%f%d",&x0,&xn,&n); h = (xn-x0)/n; s = y(x0) + y(xn); for(i = 1; i < n; i++){ s += 2*y(x0+i*h); }
(7.7)
5
printf("Value of integral is %6.4f\n",(h/2)*s); return 0; } Tugas: Ubahlah kode sumber permasalahan kode sumber untuk menyelesaikan integral di atas untuk fungsi sinusoidal f(x) = sin(x) dengan batas integral 0 sampai dengan π. Jelaskan kendala yang anda hadapi dan bandingkan hasil perhitungan numerik yang anda peroleh dengan hasil perhitungan analitik.
7.2 Metode Simpson Dari bentuk persamaan (7.6) dapat dikembangkan suatu pendekatan numerik yang lebih teliti. Berikut akan diilustrasikan secara lebih grafis. Tinjau sebuah fungsi parabolik 𝑦 = 𝑎𝑥 ! + 𝑏𝑥 + 𝑐 pada posisi (-h,y0), (0,y1), dan (h,y2) seperti ditunjukan gambar berikut
Gambar 2: Metode Simpson untuk pengintegralan numerik.
Dan mengingat bentuk integral dari fungsi tersebut adalah 𝐼= =
! !! !! ! !
𝑎𝑥 ! + 𝑏𝑥 + 𝑐 𝑑𝑥 +
!! ! !
+ 𝑐𝑥
! !!
(7.8)
6 !
= ! (2𝑎ℎ! + 6𝑐)
Dengan mengingat bahwa 𝑦! = 𝑎ℎ! − 𝑏ℎ + 𝑐
(7.9)
𝑦! = 𝑐
(7.10)
𝑦! = 𝑎ℎ! − 𝑏ℎ + 𝑐
(7.11)
dapat dibuktikan bahwa 𝑦! + 4𝑦! + 𝑦! = 𝑎ℎ! − 𝑏ℎ + 𝑐 + 4𝑐 + 𝑎ℎ! + 𝑏ℎ + 𝑐 = 2𝑎ℎ! + 6𝑐
(7.12) (7.13)
sehingga diperoleh kaitan !
𝐼 = ! (𝑦! + 4𝑦! + 𝑦! )
(7.14)
Untuk kasus sembarang fungsi yang dintegralkan pada interval [a,b] berikut ! 𝑓 !
𝑥 𝑑𝑥
(7.15)
dapat diilustrasikan sebagai berikut
Gambar 3: Ilustrasi pengintegralan numerik dengan metode Simpson. akan diperoleh bentuk integral Dan !
𝑓 𝑥 𝑑𝑥 = !
ℎ ℎ 𝑦! + 4𝑦! + 𝑦! + 𝑦! + 4𝑦! + 𝑦! + ⋯ 3 3 !
+ ! 𝑦!!! + 4𝑦!!! + 𝑦!
(7.16)
7
Setelah diurutkan berdasarkan suku masing-masing dapat diperoleh ! 𝑓 !
𝑥 𝑑𝑥 =
! !
𝑦! + 4𝑦! + 2𝑦! + 4𝑦! + 2𝑦! + ⋯ + 4𝑦!!! + 𝑦!
(7.17)
Bentuk ungkapan matematis di atas disebut sebagai bentuk pendekatan numerik metode Simpson. Untuk n cacah diskretisasi yang genap maka ungkapan di atas bisa diubah kedalam bentuk jumlahan dapat diberikan sebagai berikut ! 𝑓 !
𝑥 𝑑𝑥 =
! !
𝑦! + 2
! !! !
!!!
𝑦!! + 2
! !
!!!
𝑦!!!! + 𝑦!
(7.18)
Adapun kode program yang menggunakan metode ini dapat dilihat sebagai berikut: contoh program integrasi numerik metode Simpson untuk fungsi !
𝑓 𝑥 = !!! ! #include<stdio.h> float y(float x){ return 2/(2+x*x); } int main(){ float x0,xn,h,s; int i,n; printf("Enter x0, xn, no. of subintervals: "); scanf("%f%f%d",&x0,&xn,&n); h = (xn - x0)/n; s = y(x0)+y(xn)+4*y(x0+h); for(i = 3; i<=n-1; i+=2){ s += 4*y(x0+i*h) + 2*y(x0+(i-1)*h); } printf("Value of integral is %6.4f\n",(h/3)*s); return 0; } Soal Tugas: 1. Ubah program kode untuk fungsi f(x) = 1/x dengan batas integral -1 sampai 1.
(7.19)
8
2. Ubah program kode untuk fungsi f(x) = sin(x) dengan batas integral 0 sampai dengan π 3. Apa yang dapat kelompok anda simpulkan?