Senin, 26 Maret 2012

Integrasi Numerik

Depok, 26 Maret 2012

Integrasi numerik merupakan suatu metode untuk menghitung luasan dibawah suatu fungsi pada grafik pada selang, misal selang waktu, yang diberikan. Apabila suatu benda memiliki bentuk yang tetap dan telah kita ketahui secara massal, misalnya segitiga, trapesium, bujur sangkar dan lain sebagainya, maka kita akan dengan mudah untuk menghitung luas benda tersebut. Hal tersebut dikarenakan untuk benda yang telah kita ketahui secara massal tersebut telah memiliki rumus yang selama ini kita kenal, misalnya :

  1. Untuk luas segituga = 1/2 x alas x tinggi
  2. Trapesium = Jumlah sisi sejajar x tinggi x 1/2
  3. Bujur sangkar = sisi x sisi
  4. Persegi panjang = panjang x lebar
Namun apabila suatu benda, yaitu terdapat suatu fungsi dan kita tidak mengetahui luasan di bawah fungsi tersebut, maka cara yang paling mudah adalah menggunakan metode integral numerik. Untuk menyelesaikan metode integral numerik, ada dua macam aturan yang biasa digunakan :
  • Aturan Trapezoidal

  • Aturan Simpson


Untuk mempermudah perhitungan menggunakan rumus di atas, maka dapat dibantu dengan menggunakan bahasa pemrograman. Untuk semua posting blog yang selama ini sudah saya upload, bahasa program yang digunakan adalah visual basic.

Algoritma yang digunakan pada aturan simpson adalah sebagai berikut:
  1. Untuk i = 1 ke n+1, kerjakan instruksi berikut ( n+1 harus ganjil)
  2. Baca fi
  3. Ulang instruksi 1
  4. Jumlah <– (fi + fn+i)
  5. Untuk i=2 ke n, lompat 2, kerjakan instruksi berikut
  6. Jumlah <– jumlah + 4 fi
  7. Ulang instruksi 5
  8. Untuk i=3 ke n-1, lompat 2, kerjakan instruksi berikut
  9. Jumlah <– jumlah + 2 fi
  10. Ulang instruksi 8
  11. Integral <– (h x jumlah) / 3
  12. Tulis integral
  13. Berhenti
Begitulah kira-kira sedikit gambaran mengenai metode integral numerik, semoga bermanfaat..

Terima Kasih,

Salam

Arandityo Narutomo

Metode Iterative


Metode iterative adalah suatu prosedur matematika dimana akan didapat nilai yang diinginkan dari persamaan-persamaan matematika dengan terlebih dahulu memberikan nilai awal. Nilai awal adalah nilai sembarang yang dimasukkan diawal. Dengan memasukkan nilai awal tersebut, maka komputer akan melakukan perhitungan sampai error mendekati atau bahkan nol. Ketika error masik sangat besar, maka computer akan terus melakukan perhitungan sampai pada akhirnya error mendekati atau sama dengan nol. Kondisi ini yang disebut sebagai kondisi konvergen.

Berikut adalah macam-macam metode iterative yang biasa digunakan :
  1. Metode bisection
  2. Metode False Position
  3. Metode Newton-Raphson
  4. Metode Secant

Berikut akan dijelaskan masing-masing metode iterative tersebut

Metode Bisection
‘Metode Bidang Bebas’ atau lebih spesifik lagi ‘Metode Bidang Paruh’ (Bisection) adalah “pemaruhan”(nilai rata-rata) dari nilai estimasi akar suatu persamaan aljabar non-linear tunggal yang dibentuk dengan cara menebak 2 buah harga awal pada interval [a,b] yang bertempat-kedudukan ‘mengapit’ (di kiri dan kanan) akar atau jawab yang sebenarnya. Metode ini pada umumnya memerlukan 2 (dua) buah tebakan untuk harga-harga x-awal (x0 dan x1).

Solusi akar (atau akar-akar) dengan menggunakan Metode Bisection memiliki sifat-sifat numeris sebagai berikut:

(a)    Selalu melakukan pembagian dua (pemaruhan) interval [a,b] yang mengapit akar a, sehingga setelah n kali iterasi akan didapatkan akar persamaan yang berdekatan dengan harga yang sebenarnya (solusi analitis), dengan memperhitungkan ‘kriteria’ (akurasi) yang diinginkan.
(b)   Kecepatan atau laju konvergensi dari metode bisection dapat diperkirakan menggunakan persamaan pendekatan:


Yang dapat dibuktikan bahwa
(c)    c. Panjang (b - a) menggambarkan ‘panjang interval’ yang digunakan sebagai ‘harga awal’ untuk memulai proses iterasi dalam ‘metode bisection’; yang berarti bahwa metode ini memiliki ‘konvergensi linier’ dengan laju 1/2.

Representasi grafik dari metode bisection adalah sebagai berikut :

Dari representasi grafis di atas, dapat diambil kesimpulan dengan jelas, bahwa:

sehingga setelah n kali iterasi akan diperoleh: atau

Pada saat panjang interval [a,b] tidak melampaui suatu harga t (yang di dalamnya terdapat akar a), sedemikian rupa sehingga jarak akar a tersebut dengan ekstremitas interval tidak melebihi t, maka pada saat itu toleransi perhitungan sudah dapat dilakukan.

Adapun algoritma metode bisection adalah sebagai berikut :

Asumsi awal yang harus diambil adalah: ‘menebak’ interval awal [a,b] dimana f(x) adalah kontinu padanya, demikian pula harus terletak ‘mengapit’ (secara intuitif) nilai akar a, sedemikian rupa sehingga:

f (a) × f (b) £ 0

Algoritma BISECTION (f,a,b,akar,e,iter,itmax,flag)

  1. Tebak harga interval [a,b]; tentukan e; dan itmax
  2. Set f0 = f(a); iter = 0; flag = 0;
  3. Tentukan atau hitung akar = c := (a + b)/2; iter = iter + 1;
  4. Jika f(a)·f(c) £ 0 maka b = c jika tidak a = c dan f0 = f(a);
  5. Jika (b – a) £ e maka flag = 1 jika iter > itmax maka flag = 2;
  6. Jika flag = 0 ulangi ke nomor 3;
  7. Akar persamaan adalah: akar = (a + b)/2, sebagai akar terbaru;
  8. Selesai.
Kelebihan metode bisection : Sangat simple, konvergen terjamin
Kekurangan metode bisection : Proses konvergen lamban.

Metode False Position

Solusi akar (atau akar-akar) dengan menggunakan Metode Regula-Falsi merupakan modifikasi dari Metode Bisection dengan cara memperhitungkan ‘kesebangunan’ yang dilihat pada kurva berikut:
Perhatikan kesebangunan 2 segitiga Pcb dan PQR, sehingga persamaan berikut dapat digunakan:




Atau

Sehingga

Persamaan di atas disebut sebagai persamaan rekursif dari Metode Regula Falsi.
Kecepatan atau laju konvergensi dari Metode Regula-Falsi sama dengan Metode Bisection, yaitu ‘konvergensi linier’, namun dengan faktor pengali (konstanta) yang lebih besar dari 1 2 (factor pengali berkisar antara 1/ 2 … 1).

Adapun algoritma dari metode false position adalah :

Asumsi awal yang harus diambil adalah sama seperti pada Metode Bisection, yaitu: ‘menebak’ interval awal [a,b] dimana f(x) adalah kontinu padanya, demikian pula interval tersebut harus terletak ‘mengapit’ (secara intuitif) nilai akar a, sedemikian rupa sehingga:

                         f (a) × f (b) £ 0

Meskipun pada algoritma berikut masih mengandung beberapa kelemahan, namun secara umum masih sangat menguntungkan untuk dipakai. Perbaikan dan modifikasi secara numeris dilakukan oleh Brent (Atkinson, 1978), untuk algoritma tersebut.

Algoritma REGFAL(f,a,b,akar,e,iter,itmax,flag)

  1. Tebak harga interval [a,b]; tentukan e; dan itmax
  2. Set xold = 2*b-a; iter = 0; flag = 0;
  3. Tentukan atau hitung akar = c = b – f(b) [(b – a)/(f(b) – f(a)); iter = iter + 1;
  4. Jika f(b)·f(c) £ 0 maka a = c jika tidak b = c;
  5. Jika abs(c – xold) £ e maka flag = 1 atau jika iter > itmax maka flag = 2 atau jika tidak maka iter = iter + 1 dan akar = c;
  6. Jika flag = 0 ulangi ke nomor 3;
  7. Selesai.



Sehingga formula rekursif dari Metode REGULA-FALSI: dapat dituliskan dalam resume berikut:

Adapun sifat atau karakteristik metode ini secara umum adalah:
  • Memerlukan 2 harga awal (º a0 dan b0 sedemikian rupa sehingga f(a0)·f(b0) £ 0)
  • Konvergensi Superlinier (º Sedang, antara linier dan kuadrat)
  • Baik digunakan untuk fungsi yang turunannya tak terdefinisi dengan jelas (diskontinyu)
  • Divergen (RTE, run time error) bila an = bn (º D @ emesin)
  • Kriteria penghentian iterasi : - £e b n a n dan atau f ( x n ) £ e
Kelebihan metode False Position : Konvergen terjamin
Kekurangan metode False Position : Proses lambat untuk mencapai konvergen

Metode Newton Raphson
Dalam analisis numerik, metode Newton Raphson , yang mendapat nama dari Isaac Newton dan Joseph Raphson, merupakan metode yang paling dikenal untuk mencari himpunan penyelesaian dari akar fungsi riil. Metode Newton sering konvergen dengan cepat, terutama bila iterasi dimulai "cukup dekat" dengan akar yang diinginkan. Namun bila iterasi dimulai jauh dari akar yang dicari, metode ini dapat meleset tanpa peringatan. Implementasi metode ini biasanya mendeteksi dan mengatasi kegagalan konvergensi.
Diketahui fungsi ƒ(x) dan turunannya ƒ '(x), kita memulai dengan tebakan pertama, x0 . Kemudian nilai x1 adalah sebagai berikut :
Gagasan metode ini adalah sebagai berikut: kita memulai dengan tebakan awal yang cukup dekat terhadap akar yang sebenarnya, kemudian fungsi tersebut dihampiri dengan garis singgungnya (yang dapat dihitung dengan alat-alat kalkulus, dan kita dapat menghitung perpotongan garis ini dengan sumbu-x (yang dapat dilakukan dengan mudah menggunakan aljabar dasar). Perpotongan dengan sumbu-x ini biasanya merupakan hampiran yang lebih baik ke akar fungsi daripada tebakan awal, dan metode ini dapat diiterasi.
Misalkan ƒ : [a, b] → R adalah fungsi terturunkan yang terdefinisi pada selang [a, b] dengan nilai merupakan bilangan riil R. Rumus untuk menghampiri akar dapat dengan mudah diturunkan. Misalkan kita memiliki hampiran mutakhir xn. Maka kita dapat menurunkan hampiran yang lebih baik, xn+1 dengan merujuk pada diagram di kanan. Kita tahu dari definisi turunan pada suatu titik bahwa itu adalah kemiringan garis singgung pada titik tersebut, yaitu:
Di sini, f ' melambangkan turunan fungsi f. Maka dengan aljabar sederhana kita mendapatkan
Kita memulai proses dengan nilai awal sembarang x0. Metode ini biasanya akan mengerucut pada akar, dengan syarat tebakan awal cukup dekat pada akar tersebut, dan bahwa ƒ'(x0) ≠ 0.
Kelebihan metode Newton Raphson : Mampu menyelesaikan persamaan yang kompleks, Paling sering digunakan karena cepat mencapai konvergen (tidak membutuhkan waktu lama untuk mencapai konvergen).
Kekurangan metode Newton Raphson : Sulit menghitung fungsi derivative.

Metode Secant

Dalam analisis numerik, metode secant (sekan) adalah algoritma pencari akar yang menggunakan secara berturut-turut akar dari garis sekan untuk menghampiri akar dari fungsi matematika f.

Metode secant didefinisikan oleh hubungan perulangan
Seperti yang dapat dilihat dari hubungan perulangan tersebut, metode secant mensyaratkan dua nilai awal, x0 dan x1, yang idealnya dipilih agar dekat dengan akar.
Misalnya diketahui xn−1 dan xn, kita menarik garis melalui titik-titik (xn−1, f(xn−1)) dan (xn, f(xn)), sebagaimana ditunjukkan gambar di kanan. Perhatikan bahwa garis ini adalah sekan dari grafik fungsi f.
Garis tersebut dapat dirumuskan sebagai:
Kita memilih xn+1 sebagai akar garis ini, sehingga xn+1 dipilih sedemikian sehingga
Memecahkan persamaan ini memberikan hubungan perulangan untuk metode secant

Kelebihan metode Secant : Fungsinya kontinyu
Kekurangan metode Secant : Perlu menganalisis turunan.

Kamis, 22 Maret 2012

Deret Faktorial Menggunakan Visual Basic

Depok, 23 Maret 2012

Deret Faktorial adalah suatu deret perkalian dimana angka a dikalikan angka a-1kemudian dikalikan angka a-2 sampai angka tersebut 1 kemudian hasilnya adalah total dari perkalian tersebut. Untuk lebih jelasnya kita lihat beberapa contoh berikut :

  1. Deret faktorial dari 1 adalah 1 x 1 = 1
  2. Deret faktorial dari 2 adalah 2 x 1 = 2
  3. Deret faktorial dari 3 adalah 3 x 2 x 1 = 6
  4. Deret faktorial dari 4 adalah 4 x 3 x 2 x 1 = 24
  5. Deret faktorial dari 5 adalah 5 x 4 x 3 x 2 x 1 = 120
  6. Deret faktorial dari 6 adalah 6 x 5 x 4 x 3 x 2 x 1 = 720
  7. dan seterusnya 
Untuk membuat sebuah program komputer, maka untuk kasus ini menggunakan visual basic, berikut adalah algoritmanya
  1. Buat userform kemudian masukkan kotak-kotak tempat nilai akan dimasukkan dan hasil deret faktorial akan ditampilkan.
  2. Buat program pada commandbutton
  3. Program dimulai dengan memasukkan 1 buah input, yaitu angka yang akan dicari hasil faktorialnya
  4. Kemudian buatlah program untuk semua nilai sehingga baik nilai negatif atau positif dapat diketahui deret faktorialnya.
Berikut adalah langkah di visual basic
1. Buat Userform seperti gambar di bawah

 2. Buat program pada commandbutton seperti di bawah ini

Private Sub CommandButton1_Click()

'Ini adalah rumusan untuk menghitung deret faktorial dari suatu nilai
'Arandityo Narutomo 1106107782

'Masukan input nilai a

Dim a As Double
Dim hasilfaktorial As Double

'Formulasi faktorial
hasilfaktorial = Val(araa.Text)
For a = Val(araa.Text) - 1 To 1 Step -1
arahasilderet.AddItem hasilfaktorial
arahasilderet.AddItem a

'Nilai hasil faktorial
hasilfaktorial = hasilfaktorial * a
arahasil.Text = hasilfaktorial
Next

'Melakukan pembatasan faktorial
'Batasan faktorian ini berlaku untuk a=1 ; a=0 dan a bilangan negatif

If hasilfaktorial < 0 Then
MsgBox "maaf tidak ada faktorial negatif"
ElseIf hasilfaktorial = 0 Then
MsgBox "hasil faktorial = 1"
ElseIf hasilfaktorial = 1 Then
MsgBox "hasil faktorial = 1"
End If
End Sub





3. Hasil visual basic

-Untuk bilangan positif


Maksuda dari kotak deret faktorial adalah 6 x 5 = 30, lalu 30 x 4 = 120, lalu 120 x 3 = 360, lalu 360 x 2 = 720 , dan kemudian 720 x 1 = 720, sehingga hasil faktorial adalah 720

- Untuk angka 1

- Untuk angka 0
- Untuk angka negatif

Semoga bermanfaat.................................

Rabu, 21 Maret 2012

Eliminasi Gauss Untuk Mencari Nilai X1, X2, dan X3 Dengan Visual Basic

Depok, 22 Maret 2012

Apabila kita harus meneyelesaikan lebih dari satu persamaan linear, maka kita dapat menggunakan berbagai macam cara. Kita bisa menggunakan substitusi maupun menggunakan eliminasi. Untuk kasus ini, kita akan menyelesaikan himpunan penyelesaian dari 3 buah persamaan linear menggunakan visual basic setelah pada posting sebelumnya diselesaikan menggunakan microsoft excel.

Misalkan ada persamaan sebagai berikut :

a11. x1 + a12. x2 + a13. x3 = a14 ...........................(1)

a21. x1 + a22. x2 + a23. x3 = a24 ...........................(2)

a31. x1 + a32. x2 + a33. x3 = a34 ...........................(3)

maka untuk mencari nilai x1, x2, dan x3 dapat diselesaikan dengan metode eliminasi Gauss sebagai berikut :

Tentukan nilai U1 = a21/a11 maka :

i                                j

2                              1                     a21 = a21 - U1. a11 = 0

2                              2                     a22 = a22 - U1. a12

2                              3                     a23 = a23 - U1. a13

2                              4                     a24 = a24 - U1. a14


kemudian tentukan nilai U2 = a31/a11

i                               j

3                             1                     a31 = a31 - U2. a11 = 0

3                             2                     a32 = a32 - U2. a12

3                             3                     a33 = a33 - U2. a13

3                             4                     a34 = a34 - U2. a14

Persamaan kemudian menjadi :

a11. x1 + a12. x2 + a13. x3 = a14 ...........................(1.1)

                a22. x2 + a23. x3 = a24 ...........................(2.1)

                a32. x2 + a33. x3 = a34 ...........................(3.1)

Untuk eliminasi x2 dari persamaan 3.1 maka berikut adalah langkah-langkahnya :
Tentukan U3 = a32/a22

i                               j


3                             2                     a32 = a32 - U3. a22

3                             3                     a33 = a33 - U3. a23

3                             4                     a34 = a34 - U4. a24

Sehingga persamaan sekarang menjadi :


a11. x1 + a12. x2 + a13. x3 = a14 ...........................(1.2)

                a22. x2 + a23. x3 = a24 ...........................(2.2)

                                a33. x3 = a34 ...........................(3.3)



Maka untuk mendapatkan nilai x1, x2, dan x3 adalah :

x1 = a34/a33

x2 = (a24 - (a23. x3)) / a22

x3 = (a14 - (a12. x2 + a13. x3)) / a11

Berikut adalah langkah di visual basic jika persamaan adalah  :

2 x1 + 3 x2 + 5 x3 = 23 ......................................... (1)

3 x1 + 4 x2 + x3 = 14 .............................................(2)

6 x1 + 7 x2 + 2 x3 = 26 ..........................................(3)

1. Membuat Userform


2. Kemudian tulis program pada commandbutton seperti di bawah ini :


Private Sub CommandButton1_Click()
'Metode Eliminasi Gauss 3 Buah Persamaan

Dim a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34 As Integer
Dim b21, b22, b23, b24, c31, c32, c33, c34, d31, d32, d33, d34 As Integer
Dim u1, u2, u3, x1, x2, x3 As Integer

'Definisikan Variable
a11 = ara11.Text
a12 = ara12.Text
a13 = ara13.Text
a14 = ara14.Text
a21 = ara21.Text
a22 = ara22.Text
a23 = ara23.Text
a24 = ara24.Text
a31 = ara31.Text
a32 = ara32.Text
a33 = ara33.Text
a34 = ara34.Text

'Mencari Nilai x1, x2, x3

'Eliminasi pertama
u1 = a21 / a11
b21 = a21 - (u1 * a11)
b22 = a22 - (u1 * a12)
b23 = a23 - (u1 * a13)
b24 = a24 - (u1 * a14)

'Eliminasi kedua
u2 = a31 / a11
c31 = a31 - (u2 * a11)
c32 = a32 - (u2 * a12)
c33 = a33 - (u2 * a13)
c34 = a34 - (u2 * a14)

'Eliminasi ketiga
u3 = c32 / b22
d31 = c31 - (u3 * b21)
d32 = c32 - (u3 * b22)
d33 = c33 - (u3 * b23)
d34 = c34 - (u3 * b24)

x3 = d34 / d33
x2 = (b24 - (b23 * x3)) / b22
x1 = (a14 - (a13 * x3) - (a12 * x2)) / a11

hasilx1.Caption = x1
hasilx2.Caption = x2
hasilx3.Caption = x3

End Sub

3. Hasil setelah program di jalankan adalah 


Himpunan penyelesaian dari persamaan-persamaan tersebut adalah X1 = 1; X2 = 2 ; X3 = 3

Simulasi CFD Untuk Kasus Difusi-Konveksi Contoh soal 5.1

Depok 21 Maret 2012

Terkadang untuk peristiwa perpindahan panas dapat pula terjadi lebih dari satu jenis perpindahan panas. Ketika peristiwa perpindahan panas pana fluida, tentu peristiwa yang terjadi tidaklah sepenuhnya konduksi (difusi) seperti pada perpindahan panas pada benda padat. Pada kasus tersebut terjadi perpaduan perpindahan panas, yaitu difusi-konveksi. Contoh soal 5.1 mencoba menjelaskan mengenai fenomena tersebut.

Soal diatas memvariasikan nilai kecepatan u, namun untuk pemecahan masalah di blog ini, variasi diubah menjadi mengubah nilai densitas dari fluida. Pengubahan nilai kecepatan u atau densitas sebenanrnya tidak terlalu signifikan karena sesungguhnya yang ingin divariasikan bukanlah besar kecilnya nilai densitas maupun kecepatan u dari aliran, namun yang ingin divariasikan adalah nilai F yaitu fluks massa konveksi. Adapun nilai F adalah 
Dengan bertambahnya nilai densitas maka nilai F akan naik jika kecepatan u dijaga konstan, begitupun nilai F akan bertambah jika kecepatan u bertambah dengan nilai densitas konstan.

Untuk mengetahui peristiwa apa yang terjadi untuk kasus difusi-konveksi, maka akan dilakukan simulasi CFD menggunakan CFDSOF. Adapun algoritma langkah adalah sebagai berikut :
  1. Atur domain dimana sistem adalah 2 dimensi dengan ukuran panjang 0.7 m dan tinggi 0.2 m. Jumlah cell untuk panjang sebanyak 7 cell dan untuk tinggi sebanyak 3 cell.
  2. Lakukan atur model lalu lakukan hitung temperatur dan wall konduksi
 3. Lakukan Input cell dan lakukan tayang serta mengatur kondisi cell
Untuk W1 dan W2 dibuat sebagai boundary, sedangkan bagian atas dan bawah dibuat symetri karena bagian atas dan bawah tidak terdapat proses apapun. Adapun W1 dan W2 adalah cell yang akan diberi perbedaan temperatur sehingga dibeli cell wall.

4. Masukkan nilai kondisi fisikal (kf) dan masukan nilai densitas sebesar 0.1 kg/m3 untuk kasus 1, densitas  0.01 kg/m3 untuk kasus 2, densitas 0.001 kg/m3 untuk kasus 3, dan densitas 0.0001 kg/m3 untuk kasus 4.

5. Masukkan kecepatan u sebesar 0.1 m/s.

6. Masukkan temperatur W1 274 K dan temperatur W2 273 K sehingga terdapat beda temperatur sebesar 1 derajat Kelvin.

Untuk tampilan program di CFDSOF adalah sebagai berikut :









Untuk difusi-konveksi, maka persamaan pada CFDSOF diatur hanya persamaan temperatur dan entalpi saja dengan cara klik Olah - Persamaan :
Lalu atur kondisi sempadan dari W1dengan temperatur 274 K
Lakukan pengaturan kondisi sempadan untuk W2
Kemudian lakukan iterasi sebanyak 1000 dan hasilnya

- Untuk densitas 0.1 kg/m3



Untuk memvariasikan densitas, cukup ketik kembali kf pada CFDSOF dan ubah densitas menjadi 0.01 ; 0.001; dan 0.0001, lalu lakukan iterasi dan klik "tidak" sehingga data sebelumnya tidak terhapus. Berikut adalah berbagai hasil yang lain

- Untuk densitas 0.01 kg/m3


- Untuk densitas 0.001 kg/m3



- Untuk densitas 0.0001 kg/m3



Dari hasil simulasi terlihat semakin kecil densitas yang berdampak semakin kecilnya nilai F (fluks massa konveksi) maka grafik semakin mendekati linear, artinya peristiwa konveksi semakin tidak terjadi sebaliknya proses konduksi terjadi pada sistem.